Иногда, когда я запускаю команду, я не замечаю, что мне нужно было запускать ее как суперпользователь, чтобы иметь достаточно прав.
Есть ли способ запустить ту же команду еще раз, но как суперпользователь?
command-line
sudo
Trufa
источник
источник
!!
самостоятельно запускает вашу предыдущую команду согласно сохраненной вhistory
. Кроме того, делать!-1
,!-2
и так далее выполняет свою последнюю команду, вторую последнюю команду, и так далее. Handy!!<command>
будет выполнять последнее событие с~/.bash_history
этого начала<command>
!
копия, созданная с помощью bash,tcsh
приводила меня в замешательство больше, чем когда-либо. Двойные кавычки не защищают от интерпретации!
.$ foo "!bar"
->!bar: event not found
.
ответ : вы вводите
sudo !!
сразу после этого, чтобы повторить предыдущую команду с повышенными привилегиями.редактировать: изображение, найденное через Reddit , и это пародия на оригинальный комикс xkcd Рэндалла Манро.
источник
Вы можете использовать клавишу со стрелкой вверх, чтобы прокрутить ваши старые команды, переписать / изменить их и добавить
sudo
перед ними. (кнопка «Домой» над клавишами со стрелками установит позицию в начало.)Мне не нравится эта
sudo !!
идея, потому что иногда вы добавляете другую команду между ними и больше не помните.источник
sudo !!
, оболочка развернется!!
, и вы сможете увидеть, какую команду она пытается запустить. Таким образом, может вызвать раздражение, когда вы нажмете Ctrl-C и найдете правильную команду, но это, по крайней мере, не заставит вас застать врасплох.!!
sudo !!<TAB>
и он автоматически заполняется!!
для меня. Bash может расширить историю с помощьюM-^
(для меня alt + shift + 6), но это не так легко (хотя вы можете перепривязать это). Существует такжеshopt -s histverify
, что делает так, что когда вы используете раскрытие истории и нажимаете ввод, вместо этого выдается еще одна строка подсказки с выполненным расширением, чтобы вы могли ее увидеть / отредактировать.shopt -s histverify
не поможет ни капли . Большинство людей привыкнет наносить ударыEnter
дважды. В этот момент они еще слишком поздно, чтобы проверить, что случилось.Я просто добавлю альтернативу: короткую, как печатать,
sudo !!
и более гибкую:Это точно такое же количество нажатий клавиш (я считаю "ctrl + A" как один ...), но добавив "стрелку вверх", вы можете сделать это с любой командой в вашей истории.
источник
set -o vi
). Затем вы можете Escape (перейти в командный режим), а затем «I» (заглавная «i», вставить в начале строки).Есть несколько способов сделать это
Просто введите команду еще раз, добавив
sudo
перед командойНажмите, Up arrowчтобы получить последнюю команду и поставить
sudo
перед ней.Войти
sudo !!
В
!!
разрастается до последней введенной команды. Вы можете делать подобные вещи с другими вещами с историей командной строки, смотрите здесьисточник
Этот вопрос можно было бы обобщить на « Выполнить ту же команду, но с некоторой модификацией », поскольку одно из блестящих дизайнерских решений в Unix заключается в том, что то, что реализовано однажды в оболочке, может быть использовано любой командой, вызываемой из оболочки.
Другими словами, этот трюк не относится только к
sudo
:sudo !!
)time !!
)env A=b B=z !!
)!!
)Расширение истории (также известное как подстановка истории) - это просто функция оболочки, облегчающая повторение предыдущих команд (с меньшим количеством нажатий клавиш). Проверьте свою страницу руководства оболочки для
history expansion
. Он описывает еще много трюков и ярлыков, которые вы можете сделать с историей, например:Вы можете ссылаться на предыдущие команды по номеру:
Вы можете ссылаться на отдельные слова в предыдущих командах:
Вы также можете выполнить поиск перед повторением:
Вы можете искать в истории и заменить что-то другим:
И многое другое, так как вы можете комбинировать команды выбора, arg-selection, поиска и замены независимо.
Страница man вашей оболочки (в данном случае
man bash
) - ваш друг.источник
Я использую zsh вместо bash, и у меня это есть
~/.zshrc
, поэтому нажатие Alt+ Sвставляетsudo
в начало командной строки:К сожалению, я не смог найти способ сделать то же самое в bash.
источник
~/.inputrc
"\es":"\C-asudo "
и вы перейдете к началу длинной строки, а sudo будет вставлено в начало строки после нажатияalt-s
. Перезапустите терминал или перечитайте,~/.inputrc
чтобы он заработал.Если вы хотите сделать это в псевдониме, вы должны использовать
alias redo='sudo $(history -p !!)'
по какой-то причине.источник
Если у вас нет прав на получение прав root с помощью sudo или программа sudo не была установлена в системе.
источник
То, как я предпочитаю это:
Но может быть проще просто сделать "sudo !!", решать только вам.
источник