Digite Ctrl R na linha de comando e comece a digitar o comando anterior. Uma vez que um resultado apareça, continue pressionando Ctrl R para ver outras combinações. Quando o comando desejado aparecer, simplesmente pressione Enter
Note que enquanto Ctrl R é o padrão, se você quiser que o comando ( reverse-search-history
) seja ligado a Ctrl T você poderia configurar isso com o seguinte:
bind '"\C-t": reverse-search-history'
Há toda uma série de outros comandos bindable readline que estão disponíveis para você também. Dê uma olhada na página bash
man .
O Bash tem muitos recursos para pesquisar e acessar o histórico de comandos interativos. O mais básico deles é o history
builtin. Digitando apenas:
$ history
Imprimirá uma lista de comandos junto com um índice numérico, como:
$ history 1 clear 2 ls -al 3 vim ~/somefile.txt 4 history $
Você pode executar qualquer um desses comandos usando seu índice numérico, precedendo o índice com um único !
, como Mitch apontou:
$ !1
Será executado o comando clear
. O histórico embutido tem muitos recursos em si, você pode ver mais nas páginas bash
e history
man.
Você também pode especificar compensações negativas relativas ao usar o !
designador, portanto, usando nossa lista de histórico acima, se quisermos executar vim
novamente, poderíamos fazer:
$ !-2
Que basicamente diz bash para executar o comando que você executou "dois comandos atrás". Para executar o comando anterior na lista do histórico, podemos usar apenas !!
(que é apenas uma abreviação de !-1
).
O designador !
não limita você a especificar numericamente qual comando deve ser executado. hayalci mostrou que você pode instruir bash
a executar um comando com base no texto com o qual começa (usando !
) ou texto dentro do próprio comando (usando !?
). Novamente, usando nossa lista de histórico de exemplo acima, se quisermos executar clear
novamente, tudo o que precisamos fazer é digitar:
$ !cl
e pressione Enter . E quanto a vim
? Isso é tão simples quanto:
$ !?some
O ponto mais importante da resposta de hayalci é a chamada para o shopt
builtin:
$ shopt -s histverify
Isso habilitará a verificação de histórico para que os comandos correspondidos pelos designadores !
, !!
e !?
não sejam executados cegamente, mas preenchidos na linha de comando para que você possa garantir que eles não farão mal antes de executá-los. Isso é ainda mais importante quando você está executando comandos como o usuário root. Essa opção pode ser configurada no arquivo de inicialização .bashrc
, para que seja definida sempre que você efetuar login.
Como já foi apontado, todas essas informações podem ser coletadas da página bash
man . Para o!, !! e! designadores, dê uma olhada na Seção 9.3 Expansão do Histórico .