A história do bash pode fazer muitas coisas úteis, e a pesquisa Strg-r
mencionada por Terry Wang é importante entre elas. Mas também é possível fazer exatamente o que você pediu.
Você pode refazer o comando anterior com !!
. Com isso, você também pode editar o comando anterior. Se, por exemplo, você esqueceu de obter privilégios de root para um comando
apt-get install a-long-list-of-packages
você não precisa digitar tudo isso novamente. Em vez disso, basta ligar
sudo !!
Se você deseja executar novamente o comando em uma posição específica do seu histórico, também pode usar !
, por exemplo
!3
para executar novamente o comando na posição 3. Lembre-se de que isso conta do topo. Portanto, se você estiver armazenando 500 comandos em seu histórico,!1
seria "500 comandos atrás". Você também pode usar números negativos. Por exemplo
!-2
executaria novamente o segundo último comando.
Você também pode executar novamente o último comando iniciado com uma sequência como
!apt-
o que refaz a última linha que começou com "apt-". Se você quiser o último comando em que a string apareceu em qualquer lugar da linha, use algo como
!?pt-ge
Há coisas mais interessantes que a história do bash pode fazer. Apenas para dar uma impressão da ampla gama de possibilidades, você pode acessar especificamente um parâmetro de um comando a partir do histórico. então
!-5:3:p
imprimiria o terceiro parâmetro no quinto do último comando.
EDIT: Com relação ao comentário de Rudie abaixo, com as configurações padrão, essas expansões do histórico do bash são realmente executadas diretamente. Provavelmente é melhor descrito assim: uma chamada como !-3
é substituída pelo shell pelo terceiro último comando do seu histórico e, em seguida, sua entrada (com a substituição) é executada. Portanto, se você digitar !-3
e pressionar ENTER
e seu terceiro último comando for ls ~
, é o mesmo que se você digitasse ls ~
novamente e pressionasse ENTER
"por conta própria".
Se você não quiser, pode definir a opção shell histverify
. Para definir e desmarcar opções de shell, convém ler o shopt
comando. Com histverify
set, uma chamada como !-3
apenas grava a substituição do seu histórico na linha de comando, mas não a executa diretamente. Assim, você deve pressionar o crucial ENTER
- ou abster-se, se quiser.