Что делает «apt-get install !!» и как заставить его работать?

Я видел, как кто-то печатал

apt-get install !!

Он делал это несколько раз, и каждый раз была установлена ​​другая программа. Кажется, он автоматически выяснил, что нужно дальше.

Однако, когда я попробовал это на моей виртуальной машине Ubuntu 14.04.1 LTS, он просто показал некоторые инструкции по использованию. Поиск в Google для apt-get install !!, похоже, не очень хорошо работает. Многие результаты поиска не содержат двойной восклицательный знак.

Что делает apt-get install !! и что может отсутствовать на моей машине, чтобы она не работала?

54
задан 24 May 2015 в 23:43

4 ответа

!! ярлык в ударе, который означает последнюю выполняемую команду.

Попытка это:

 echo hello
 !!

В этом контексте, эти !! будет расширен до другого echo hello.

я воображаю то, что произошло, был, они пытались выполнить команду, и она перестала работать и жаловалась, что не была установлена. Таким образом они ввели sudo apt-get install !!, потому что имя пакета было по совпадению тем же как названием команды, которую они пытались выполнить. Получающаяся команда попыталась бы установить пакет тем же именем как команда, которую они только что попытались выполнить.

0
ответ дан 24 May 2015 в 23:43

!! не имеет никакого отношения apt-get. Это - ключевое слово оболочки, которое будет расширено до предыдущей команды. Это расширение сделано оболочкой, прежде чем текущая команда будет интерпретирована.

От man bash:

!! Обратитесь к предыдущей команде. Это - синоним для'!-1'.

, Например, если Вы выполняете команду:

echo "foo"

Тогда, если Вы работаете:

sudo apt-get install !!

это будет расширено до:

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.

, Как Вы видите cowsay, устанавливается.

я предложил бы Вас не выполнению этого (если Вы не уверены), быть явным не вредит.

0
ответ дан 24 May 2015 в 23:43

!!: Обратитесь к предыдущей команде. Это - синоним для !-1 ( источник ).

, Например, если я выполняюсь:

./test

тогда помнят, что я должен быть Корнем, тогда я мог просто ввести:

sudo !!

это совпадает с вводом:

sudo ./test

полезно, когда Ваша последняя команда содержит много символов.

0
ответ дан 24 May 2015 в 23:43

На вопрос уже ответили, таким образом, я не буду повторяющимся. Однако я хотел бы указать, что там являются многочисленными такие ярлыки в различных оболочках, которые повторяться/находить/команды редактирования справка. Некоторые из тех, что я использую:

  1. !$ сопровождаемый ВХОДЯТ введет последнее слово последней команды. Например,

    ls -l /let/me/in
    cd !$
    

Это посадит Вас в /let/me/in

  1. Ctrl - R и затем введет несколько слов от предыдущей команды. Например, если Вы ввели vi /home/mycoolproject.sh и продолжили, это с некоторыми случайными командами как ls, cd, pwd, и т.д. тогда просто введя Ctrl - R сопровождаемый cool потянет тот vi команда.

Просто поиск удара (или csh или безотносительно) сочетания клавиш и это будут лучшей вещью, которую Вы сделали сегодня!

0
ответ дан 24 May 2015 в 23:43

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

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