Normalmente podemos usar a tecla de seta para cima para obter o comando anterior. Mas isso nem sempre funciona, pode acontecer de você obter a sequência ASCII (" ^[[A
...") mas também me pergunto se havia essa funcionalidade em teclados mais antigos que não possuíam a tecla de seta, como funcionava naqueles dias?
Há ou houve outra maneira?
No modo emacs, Ctrl- P(anterior), outra direção é Ctrl- N(próximo)
no modo vi, ESC(para ir para o modo de comando) e kpara subir e jdescer
Você pode fazer isso com dois pontos de exclamação, em seu shell apenas:
!!
Basta digitar
history
seu shell favorito para acionar o despejo de todo o seu histórico.Você também pode tentar
ctrl-r
+ digitar os primeiros caracteres do comando pesquisado...Como dito, depende do shell, mas além dessas respostas, outra forma:
O
history
comando mostrará alguma saída como esta:E então você pode fazer por exemplo
!89
para executar novamente o comando (bash --version
neste caso)Existem várias camadas nas quais você pode solicitar o último comando.
Editor de linha
O editor de linha (onde você digita seus comandos) é fornecido diretamente pelo ksh, pela biblioteca readline no bash e pela biblioteca zle no zsh. Outros shells, como o dash, podem não ter uma biblioteca de edição para entender essas chaves (a menos que compiladas com a
--with-libedit
opção habilitada).Este trabalho em ksh, bash, zsh:
Ctrl- P# modo Emacs (anterior)
Ctrl- N# modo Emacs (próximo)
ESC- k # modo vi ESC para ir para o modo de comando e k para cima
ESC- j # modo vi ESC para ir para o modo de comando e j para baixo
história
O sistema de histórico fornecido por muitos shells permite a expansão de alguns atalhos:
comandos
Existem alguns comandos que são capazes de recuperar comandos de histórico.
Como o comando bastante detalhado (apenas para imprimir):
ou o comando mais antigo e, portanto, geralmente mais portátil
fc
(reexecuta diretamente):Ou talvez o mais simples
fc -s -1
, mas o zsh não aceita essa opção para fc.Se você quiser imprimir apenas o comando, use:
fc -nl -1 -1
.Para editar, defina
FCEDIT
um editor de texto (ex, ed, emacs, vi, etc.) e use fc diretamente:fc -1
.Depende do shell, mas aqui estão alguns métodos:
!!
Ctrl + P
!-1
Todos têm de estar comprometidos com uma imprensa de
Enter