Что делает & ldquo; apt-get install !! & rdquo; делать и как заставить его работать?

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

apt-get install !!

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

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

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

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

4 ответа

!! не имеет ничего общего с 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].

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

41
ответ дан 23 May 2018 в 20:17
  • 1
    Отличное объяснение для !!. Я знал, что это значит, но мне нравится, как вы это описали. – Terrance 24 May 2015 в 23:25
  • 2
    +1 за предупреждение не попробовать это дома. – Shadur 28 May 2015 в 08:00

!!: см. предыдущую команду. Это синоним !-1 (источник).

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

./test

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

sudo !!

это то же самое, что и набрав:

sudo ./test

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

16
ответ дан 23 May 2018 в 20:17
  • 1
    Brilliant! Я никогда не думал о команде sudo !!; то, что я делал в течение многих лет, - один раз нажмите клавишу вверх, затем переместите курсор до упора влево и добавьте sudo. – IQAndreas 25 May 2015 в 05:40
  • 2
    @IQAndreas Ваш способ дает вам возможность дважды проверить команду, что неплохо при запуске sudo. – Matt Nordhoff 25 May 2015 в 09:16
  • 3
    Я всегда читал "sudo !! " как «я имел в виду sudo для f *** саке». – Viktor Mellgren 25 May 2015 в 14:32
  • 4
    @Vixen: В этом случае thefuck тоже может быть чем-то для вас – Thomas Weller 25 May 2015 в 19:56
  • 5
    @IQAndreas перемещение курсора полностью влево кажется слишком скучным. Почему не просто Ctrl+A или, по крайней мере, Home? – Ruslan 26 May 2015 в 10:26

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

!$, а затем ENTER, набирают последнее слово последней команды. Например,
ls -l /let/me/in
cd !$

Это выведет вас в /let/me/in

!$, а затем ENTER наберет последнее слово последней команды. Например,
ls -l /let/me/in
cd !$

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

2
ответ дан 23 May 2018 в 20:17

Как описано в предыдущей команде, но лучше не использовать это как свою неряшливую короткую руку. Быть более прямым и простым.

$ 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
-2
ответ дан 23 May 2018 в 20:17
  • 1
    Ну, ты бы не использовал его там, не так ли? Также комментарии bash: # – Tim 28 May 2015 в 11:30

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

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