Запустите ту же команду еще раз, но от имени root

Иногда, когда я запускаю команду, я не замечаю, что мне нужно было запускать ее как суперпользователь, чтобы иметь достаточные права.

Есть ли способ запустить ту же команду еще раз, но как суперпользователь?

119
задан 13 June 2014 в 18:29

10 ответов

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​enter image description here

Ответ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​: Вы входите sudo !! прямо впоследствии повторить предыдущую команду с наращиваемыми полномочиями.

править: Изображение нашло через reddit, и это - пародия на исходного xkcd комика Randall Munroe.

71
ответ дан 13 June 2014 в 18:29

Вы можете использовать клавишу со стрелкой вверх, чтобы прокрутить старые команды, переписать / изменить их и добавить перед ними sudo. (кнопка «Домой» над клавишами со стрелками устанавливает положение в начале.)

Мне не нравится идея sudo !!, потому что иногда вы добавляете другую команду между ними и больше не помните.

0
ответ дан 13 June 2014 в 18:29

Есть несколько способов сделать это

  • Просто введите команду еще раз, добавив sudo перед командой

  • Нажмите Стрелка вверх , чтобы получить последнюю команду и поставить перед ней sudo.

  • Введите sudo !!

!! расширяется до последней введенной команды. Вы можете делать подобные вещи с другими вещами с историей командной строки, см. здесь

0
ответ дан 13 June 2014 в 18:29

Самый простой способ - запустить:

sudo !!

Это будет запускать последнюю команду, но как суперпользователь.

Источник .

0
ответ дан 13 June 2014 в 18:29

Я просто добавлю альтернативу: такой же короткий , как набор 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 +») «Как один ...», но, добавив «стрелку вверх», вы можете сделать это в зависимости от того, какая команда есть в вашей истории.

0
ответ дан 13 June 2014 в 18:29

Этот вопрос, возможно, был обобщен в "Выполненный та же команда, но с некоторой модификацией", начиная с одного из блестящих проектных решений в 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) Ваш друг.

7
ответ дан 13 June 2014 в 18:29
su -c "!!"

Если у вас нет прав для root-доступа с помощью sudo или sudo, программа не установлена ​​в системе.

0
ответ дан 13 June 2014 в 18:29

Я использую 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.

0
ответ дан 13 June 2014 в 18:29

Как я предпочитаю:

  • Стрелка вверх
  • Домой
  • «sudo»
  • Введите

Но может быть проще просто сделать «sudo !!», решать только вам.

0
ответ дан 13 June 2014 в 18:29

Если вы хотите сделать это под псевдонимом, вы должны использовать alias redo='sudo $(history -p !!)' по некоторым причинам.

0
ответ дан 13 June 2014 в 18:29

Другие вопросы по тегам:

Похожие вопросы: