Я видел, как кто-то печатал
apt-get install !!
Он делал это несколько раз и каждый раз, была установлена другая программа. Кажется, он автоматически выяснил, что нужно дальше.
Однако, когда я попробовал это на своей виртуальной машине Ubuntu 14.04.1 LTS, он просто показал некоторые инструкции по использованию. Googling для apt-get install !!, похоже, не работает очень хорошо. Многие результаты поиска не содержат двойной восклицательный знак.
Что делает apt-get install !! и чего не хватает на моей машине, чтобы он не работал?
!! не имеет ничего общего с apt-get. Это ключевое слово оболочки, которое будет расширено до предыдущей команды. Это расширение выполняется оболочкой перед интерпретацией текущей команды.
Из man bash:
!! Обратитесь к предыдущей команде. Это синоним `! -1 '.Например, если вы запустите команду:
echo "foo"
Затем, если вы запустите:
sudo apt-get install !!
, он будет расширен до: [!d6 ]
sudo apt-get install echo foo
Как вы можете видеть, он разложен на два пакета, а именно echo, а другой - foo. Нет отдельного пакета с именем foo и echo. Помимо встроенной оболочки echo существует исполняемый файл /bin/echo, который является частью пакета GNU-coreutils. Итак, вы получите ошибки, говорящие, что таких пакетов нет.
С другой стороны, другой человек может делать что-то вроде этого:
$ cowsay
The program 'cowsay' is currently not installed. You can install it by typing:
sudo apt-get install cowsay
$ sudo apt-get install !!
sudo apt-get install cowsay
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
filters
The following NEW packages will be installed:
cowsay
0 upgraded, 1 newly installed, 0 to remove and 119 not upgraded.
Need to get 18.5 kB of archives.
Как вы можете видеть [ f14].
Я предлагаю вам не делать этого (если вы не уверены), явное не вредит.
!!: см. предыдущую команду. Это синоним !-1 (источник).
Например, если я выполняю:
./test
, то помните, что мне нужно быть Корнем, тогда я мог бы просто type:
sudo !!
это то же самое, что и набрав:
sudo ./test
Это полезно, когда ваша последняя команда содержит много символов.
Вопрос уже ответил, поэтому я не буду повторяться. Тем не менее, я хотел бы отметить, что в разных оболочках существует множество таких ярлыков, которые помогают повторять / находить / редактировать команды. Некоторые из них, которые я использую:
!$, а затем ENTER, набирают последнее слово последней команды. Например,ls -l /let/me/in
cd !$
Это выведет вас в /let/me/in
!$, а затем ENTER наберет последнее слово последней команды. Например,ls -l /let/me/in
cd !$
Просто найдите сочетания клавиш bash (или csh или что-то еще), и это будет лучшее, что вы сделали сегодня!
Как описано в предыдущей команде, но лучше не использовать это как свою неряшливую короткую руку. Быть более прямым и простым.
$ vim index.php
The program 'vim' is currently not installed. You can install it by typing:
sudo apt-get install cowsay
$ sudo apt-get install !!
# Would be done as sudo apt-get install vim index.php instead of sudo apt-get install vim