Como percorrer a pesquisa reversa no BASH?

Como percorrer a pesquisa reversa no BASH?

No terminal, posso digitar Ctrl+ Rpara procurar um comando correspondente digitado anteriormente no BASH. Por exemplo, se eu digitar Ctrl+ Rthen grep, ele listará meu último grepcomando e posso pressionar Enter para usá-lo. Isso só dá uma sugestão. Existe alguma maneira de percorrer outros comandos correspondentes digitados anteriormente?

Responder1

Se entendi a pergunta corretamente, você poderá percorrer as alternativas pressionando repetidamente Ctrl+ R.

Por exemplo:

  • Ctrl+R
  • grep
  • Ctrl+R
  • Ctrl+ R ...

Isso pesquisa retroativamente sua história. Em vez disso, para pesquisar adiante, use Ctrl+ S, mas pode ser necessário ter definido: stty -ixon(manualmente .bash_profileou manualmente) antes disso para desativar o recurso XON/XOFF que assume Ctrl+ S. Se isso acontecer de qualquer maneira, use Ctrl+ Qpara reativar a saída da tela (Mais detalhesaqui.)

Responder2

Se você acha que o comando será usado com frequência, você pode adicionar uma tag

command #useful

Então

Ctrl+R #useful

Isso funciona porque #é um delimitador de comentários, ou seja, tudo que vem depois do símbolo não é interpretado como um comando. No entanto, ele ficará registrado no histórico e, portanto, poderá ser pesquisado.

Responder3

Você também pode configurar as setas para cima e para baixo para fazer uma pesquisa ligeiramente diferente adicionando estas linhas a ~/.inputrc:

"\e[A": history-search-backward
"\e[B": history-search-forward

Em vez de procurar uma substring em qualquer lugar do comando (comoCtrl-r) ele irá procurar por um comandocomeçando com o texto à esquerda do cursor. Por exemplo, se eu executar estes comandos:

$ ls bart
$ ls fools

em seguida, digite lse pressione Upduas vezes, ele mostrará ls barto cursor no mesmo lugar. Compare com Ctrl- r, onde encontraria lsduas vezes na última linha, então você teria que pressioná-lo mais uma vez para encontrar a linha anterior.

Ambas as abordagens têm seus pontos fortes e podem economizar muito tempo.

Responder4

Há um substituto para o integrado Ctrl + Rchamadohstr. Ele permite pesquisar o histórico de comandos que corresponde a todos os tokens de pesquisa ao mesmo tempo (entre outras coisas) e percorrer os resultados usando as teclas de seta:

Exemplo

Aqui está umscreencast de demonstração.

Ele pode ser instalado em um sistema operacional da família Debian como:

add-apt-repository ppa:ultradvorka/ppa
apt-get update
apt-get install hstr

hstr --show-configuration >> ~/.bashrc

E então use Ctrl + R(após reabrir o terminal).

informação relacionada