Eu vi alguém digitando
apt-get install !!
Ele fez isso algumas vezes e sempre, um programa diferente foi instalado. Parece que ele descobriu automaticamente o que é necessário a seguir.
No entanto, quando tentei na minha máquina virtual Ubuntu 14.04.1 LTS, ele apenas mostrou algumas instruções de uso. Pesquisar no Google apt-get install !!
parece não funcionar muito bem. Muitos resultados da pesquisa não contêm o ponto de exclamação duplo.
O que apt-get install !!
faz e o que pode estar faltando na minha máquina que não funcionou?
command-line
bash
Thomas Weller
fonte
fonte
Respostas:
!!
é um atalho no bash que significa o último comando executado.Tente o seguinte:
Nesse contexto, o
!!
será expandido para outroecho hello
.Eu imagino o que aconteceu foi que eles tentaram executar um comando e ele falhou e reclamou que não estava instalado. Então, eles digitaram
sudo apt-get install !!
porque o nome do pacote coincidentemente era o mesmo que o nome do comando que eles tentaram executar. O comando resultante tentaria instalar um pacote com o mesmo nome que o comando que eles acabaram de tentar executar.fonte
lynx
, veja se não está instalado e, em seguida, executeapt-get install !!
-o instala o lynx. Não funcionou para mim, porque tenteiapt-get install !!
como o único comando.sudo
, comoapt-get install
algo.apt-get install some-program
e, quando percebe que não tem privilégios, apenas osudo !!
que se expandesudo apt-get install some-program
.!!
é um alias para!-1
, significando o último item no histórico do bash.!-2
é o penúltimo e assim por diante.!!
não tem nada a ver comapt-get
. É uma palavra-chave do shell que será expandida para o comando anterior. Essa expansão é feita pelo shell antes que o comando atual seja interpretado.De
man bash
:Por exemplo, se você executar um comando:
Então, se você executar:
será expandido para:
Como você pode ver, ele é expandido em dois pacotes, a saber,
echo
e o outrofoo
. Não existe um pacote independente chamadofoo
eecho
. Além do shell embutido,echo
existe um/bin/echo
executável que faz parte do pacote GNU-coreutils. Portanto, você receberá erros dizendo que nenhum desses pacotes está disponível.Por outro lado, a outra pessoa pode estar fazendo algo assim:
Como você pode ver
cowsay
está sendo instalado.Eu sugiro que você não faça isso (a menos que tenha certeza), ser explícito não prejudica.
fonte
!!
. Eu sabia o que isso significava, mas eu gosto do jeito que você o descreveu.!!
: Consulte o comando anterior. Este é um sinônimo para!-1
(A fonte ).Por exemplo, se eu executar:
lembre-se de que eu preciso ser Root, então eu poderia simplesmente digitar:
é o mesmo que digitar:
É útil quando o seu último comando contém muitos caracteres.
fonte
sudo !!
comando; o que venho fazendo há anos é pressionar a tecla para cima uma vez, depois mover o cursor para a esquerda e adicionarsudo
.sudo
.Ctrl+A
ou pelo menosHome
?A pergunta já foi respondida, então não serei repetitivo. No entanto, gostaria de salientar que existem inúmeros atalhos em vários shells que ajudam a repetir / localizar / editar comandos. Alguns dos que eu uso são:
!$
seguido por ENTERdigitará a última palavra do último comando. Por exemplo,Isso o levará a
/let/me/in
vi /home/mycoolproject.sh
e seguiu-o com alguns comandos aleatórios comols
,cd
,pwd
, etc., em seguida, apenas digitando Ctrl- Rseguido porcool
vai puxar para cima quevi
comando.Basta procurar por atalhos de teclado bash (ou csh ou o que seja) e será a melhor coisa que você fez hoje!
fonte