Что делает эта команда alias?Понимание команды псевдонима bashrc
alias hello='sudo $(history -p \!\!)'
Я хочу понять, что такое история и -p!
Что делает эта команда alias?Понимание команды псевдонима bashrc
alias hello='sudo $(history -p \!\!)'
Я хочу понять, что такое история и -p!
Bash отслеживает команды, которые вы выполняете. Это называется вашей командой . Команда history
позволяет вам получать доступ к истории команд и управлять ими.
Флаг -p
указывает команде history
выполнить замену истории на его аргумент и распечатать результат на стандартный вывод. При выполнении замены истории history
заменяет !!
предыдущей командой. В вашем случае каждый !
сбрасывается как \!
, предположительно потому, что bash позволяет установить !
, чтобы быть экстра-магическим, и автор этого псевдонима хотел подавить дополнительную магию.
Когда bash видит $(...)
, он выполняет команду command substitution. Это означает, что он выполняет команду между круглыми скобками и заменяет $(...)
стандартным выходом команды,
Команда sudo
выполняет свои аргументы с правами root.
Таким образом, этот псевдоним позволяет вам ввести hello
для запуска вашей предыдущей команды с правами администратора. У вас возникнут проблемы, если предыдущая команда процитировала пробелы (я думаю), но обычно она должна работать.
Вы можете получить тот же эффект с (на мой взгляд) немного меньше магии с помощью fc
:
alias hello='sudo $(fc -ln -1)'
Команда fc
также выполняет доступ к истории и манипуляции. Флаг -l
означает «распечатать некоторые записи истории». Флаг -n
означает, что не печатайте номера записей истории (просто распечатайте команды). -1
(отрицательный) означает печать только самой последней записи истории.
http://www.gnu.org/software/bash/manual/bashref.html#Using-History-Interactively – jm666
Ваш вопрос не про псевдоним. О команде. Вывод команды истории хранится в var. Все, что я могу вам рассказать, но проще всего найти команду истории – wonderwhy