Иногда, когда я запускаю команду, я не замечаю, что мне нужно запустить ее как суперпользователя, чтобы иметь достаточное разрешение.
Есть ли способ запустить ту же команду снова, но как супер пользователя?
Иногда, когда я запускаю команду, я не замечаю, что мне нужно запустить ее как суперпользователя, чтобы иметь достаточное разрешение.
Есть ли способ запустить ту же команду снова, но как супер пользователя?
Вы можете попробовать стрелку вверх для прокрутки старых команд и переписать / изменить их и добавить sudo
перед ними. (кнопка дома над клавишами со стрелками устанавливает положение в начало.)
Мне не нравится идея sudo !!
, потому что иногда вы добавляете другую команду между ними и больше не помните.
Я просто добавлю альтернативу: как короткий , набрав sudo !!
и более гибкий:
Up-arrow (once, or until you find the command you want to sudo/edit, if it's older)
ctrl+A (place cursor at beginning of line)
"sudo "
Enter
Это точно такое же количество нажатий клавиш (я считаю «ctrl + A» как один ...), но добавляя «стрелку вверх», вы можете сделать это в зависимости от того, какая команда находится в вашей истории.
Есть несколько способов сделать это
Просто введите команду еще раз, добавив sudo
перед командой
Нажмите Стрелка вверх , чтобы получить последнюю команду и поставьте sudo
перед ней.
Введите sudo !!
!!
расширяется до последней введенной команды. Вы можете делать подобные вещи с другими вещами с помощью истории командной строки, см. здесь
Этот вопрос можно было бы обобщить на « Запустить ту же команду, но с некоторой модификацией », поскольку одно из блестящих дизайнерских решений в Unix - это то, что реализовано однажды в оболочке, можно использовать любая команда, вызываемая из оболочки.
Другими словами, этот трюк не применяется только к sudo
:
sudo !!
) time !!
) env A=b B=z !!
) !!
) Расширение истории (также известное как замена истории) - это просто функция оболочки, облегчающая повторение предыдущих команд (с меньшими нажатиями клавиш). Проверьте страницу оболочки на history expansion
. Он описывает еще много трюков и коротких сокращений, которые вы можете сделать с историей, например:
Вы можете ссылаться на предыдущие команды по номеру:
!55 # repeat command number 55
!-1 # repeat the previous command, alias for !!
!-2 # repeat the command before the previous command
Вы можете ссылаться на отдельные слова в предыдущих командах:
some-command !$ # run some-command on the last arg of previous command
Вы также можете выполнить поиск перед повторением:
!?awk # repeat the last command including the string 'awk'
Вы можете искать историю и заменять что-то еще:
!?awk?:s/str1/str2/ # repeat previous command matching 'awk' replacing str1 by str2
И многое другое, так как вы можете комбинировать выбор команд, выбор аргументов, поиск и замену самостоятельно.
Персональная страница вашей оболочки (в данном случае man bash
) является вашим другом.
Я использую zsh вместо bash и имею это в своем ~/.zshrc
, поэтому нажмите Alt + S вставляет sudo
в начале командной строки:
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^[s" insert-sudo
К сожалению, я не смог найти способ сделать то же самое в bash.
su -c "!!"
Если у вас нет прав на root, программа sudo или sudo не установлена в системе.
Как я предпочитаю:
Но было бы проще просто «судно!», это зависит от вас.
Если вы хотите сделать это в псевдониме, по какой-то причине вы должны использовать alias redo='sudo $(history -p !!)'
.