Просто используйте UP и CTRL-A.
Оба !sudo
и sudo !!
функционировать легко.
С разницей:
sudo !!
выполнит последнюю команду, взятую из истории с sudo
в начале.
!sudo
выполнит последнюю команду в истории, которая началась с sudo
.
Обычно CTRL-A выводит вас в начало строки в терминале Linux, а CTRL-E - в конец.
Если вы хотите, вы можете продолжать использовать свою стратегию. Вам нужно только открыть ярлык вашей системы. Вы можете найти список ярлыков в графической и текстовой среде, например, здесь .
Только предупреждение: sudo !!
и !sudo
работает очень быстро, и вы не можете визуально контролировать линию, которую вы используете как суперпользователь. Это может иногда привести к вредным последствиям. Особенно, если вы попали в опечатку.
Давайте сделаем яркий пример:
cd $HOME/Directory_To_Delete # You go to delete what is inside a directory
rm -rf . ; cd .. # You do it and go up of one
apt-get update # Note the space in the beginning of the line
sudo !! # Gone!! Now you realize you never really wanted
Слишком поздно вы просто стерли свой домашний каталог и все подпапки !! ,
Когда вы пишете команду с пробелом в качестве первого символа, возможно, что она не закончится в истории. Это зависит от значения переменной $ HISTCONTROL. Если список его значений включает игнорируемое пространство (или ignoreboth), строки, начинающиеся с пробела, не сохраняются в списке истории. Так с sudo !! Вы выполните последнюю команду раньше.
Вы можете представить себе похожую ситуацию с !sudo
, он выполнит последнюю команду, начиная с sudo
записанного в истории, но если последняя, которую вы помните, начиналась с пробела ... теперь вы знаете, что будете использовать другую.
Последнее замечание: чем меньше драматичность вашей ошибки, тем больше она может быть обманчивой, потому что она может пройти без того, что вы заметите ... и вы рискуете быть вызванным для оплаты всех интересов счета, который вы не можете вспомнить.
Обновление (Bash отлично):
в последних версиях Bash можно исправить это опасное поведение с помощью следующей команды, которую я предлагаю поместить в файл ~/.bashrc
:
shopt -s histverify
От man bash
можно прочитать
Если включен параметр оболочки Histverify и используется readline , подстановки истории не сразу передаются анализатору оболочки. Вместо этого расширенная строка перезагружается в буфер редактирования readline для дальнейшей модификации.
Таким образом, вы можете читать и изменять при необходимости команду, которую будете выполнять.
Поскольку это не настройка по умолчанию во многих дистрибутивах, мы все равно должны помнить об этом, когда используем другие учетные записи.