Я видел, как кто-то печатал
apt-get install !!
Он делал это несколько раз, и каждый раз устанавливалась другая программа. Кажется, он автоматически выяснил, что нужно дальше.
Однако, когда я попробовал это на моей виртуальной машине Ubuntu 14.04.1 LTS, он просто показал некоторые инструкции по использованию. apt-get install !!
Похоже, поиск в Google не очень хорошо работает. Многие результаты поиска не содержат двойной восклицательный знак.
Что делает apt-get install !!
и чего может не хватать на моей машине, чтобы она не работала?
command-line
bash
Томас Веллер
источник
источник
Ответы:
!!
это ярлык в bash, означающий последнюю выполненную команду.Попробуй это:
В этом контексте
!!
будет расширен на другойecho hello
.Я представляю, что произошло, когда они попытались выполнить команду, но она потерпела неудачу и пожаловалась, что она не установлена. Затем они набрали,
sudo apt-get install !!
потому что имя пакета совпадало с именем команды, которую они пытались выполнить. Полученная команда будет пытаться установить пакет с тем же именем, что и команда, которую они только что пытались выполнить.источник
lynx
, вижу, что он не установлен, а затем запускаюapt-get install !!
его, устанавливает lynx. Это не сработало для меня, потому что я пыталсяapt-get install !!
как единственная команда.sudo
, например, что-apt-get install
то.apt-get install some-program
, и когда вы понимаете, что у вас нет привилегий, вы простоsudo !!
расширяетесь доsudo apt-get install some-program
.!!
является псевдонимом!-1
, означающим последний элемент в истории bash.!-2
предпоследний и тд.!!
не имеет ничего общего сapt-get
. Это ключевое слово оболочки, которое будет расширено до предыдущей команды. Это расширение выполняется оболочкой до интерпретации текущей команды.От
man bash
:Например, если вы запускаете команду:
Тогда, если вы запустите:
он будет расширен до:
Как видите, он разбит на два пакета, а именно -
echo
на другойfoo
. Не существует отдельного пакета с именемfoo
иecho
. Помимо встроенной оболочкиecho
есть/bin/echo
исполняемый файл, который является частью пакета GNU-coreutils. Таким образом, вы получите ошибки о том, что таких пакетов нет.С другой стороны, другой человек может делать что-то вроде этого:
Как вы видите
cowsay
, устанавливается.Я бы посоветовал вам не делать этого (если вы не уверены), если вы будете откровенны, это не повредит.
источник
!!
. Я знал, что это значит, но мне нравится, как ты это описал.!!
: Обратитесь к предыдущей команде. Это синоним!-1
( Источник ).Например, если я выполню:
тогда помните, что мне нужно быть Root, тогда я мог бы просто набрать:
это то же самое, что печатать:
Это полезно, когда ваша последняя команда содержит много символов.
источник
sudo !!
команде; то, что я делал годами, - это один раз нажмите клавишу вверх, затем переместите курсор влево и добавьтеsudo
.sudo
.Ctrl+A
или хотя быHome
?На вопрос уже дан ответ, поэтому я не буду повторяться. Тем не менее, я хотел бы отметить, что существует множество таких ярлыков в различных оболочках, которые помогают повторять / находить / редактировать команды. Вот некоторые из тех, которые я использую:
!$
затем ENTERвведите последнее слово последней команды. Например,Это посадит вас в
/let/me/in
vi /home/mycoolproject.sh
и последовал за ним с некоторыми случайными командами , какls
,cd
,pwd
и т.д. , то просто набрав Ctrl- а Rзатемcool
будет тянуть , чтоvi
команды.Просто найдите сочетания клавиш bash (или csh или что-то еще), и это будет лучшее, что вы сделали сегодня!
источник