Como percorrer a pesquisa reversa no BASH?

360

No terminal, eu posso digitar CTRL-R para procurar um comando correspondente previamente digitado no BASH. Por exemplo, se eu digitar CTRL-R , então grep listará meu último comando grep , e eu posso pressionar enter para usá-lo. Isso só dá uma sugestão embora. Existe alguma maneira de percorrer outros comandos de correspondência digitados anteriormente?

    
por Village 24.04.2013 / 04:07

3 respostas

498

Se eu entendi a pergunta corretamente, você deve ser capaz de percorrer alternativas pressionando repetidamente Ctrl + R .

Por exemplo:

Ctrl + R %código% Ctrl + R Ctrl + R ...

Isso pesquisa de trás para frente no seu histórico. Para procurar em frente, use Ctrl + S , mas talvez seja necessário definir: grep (seja por stty -ixon ou manualmente) antes disso para desabilitar o recurso XON / XOFF que assume o controle Ctrl + s . (Mais detalhes aqui .)

    
por 24.04.2013 / 04:31
195

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

command #useful

Então

ctrl+r #useful

Isso funciona porque # é um delimitador de comentários, ou seja, tudo o que vem depois que o símbolo não é interpretado como um comando. No entanto, ele será gravado na história e, portanto, pesquisável.

    
por 09.11.2014 / 09:07
41

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

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

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

$ ls bart
$ ls fools

digite ls e pressione Up duas vezes, ele mostrará ls bart e o cursor no mesmo lugar. Compare com Ctrl - r , onde encontraria o ls duas vezes na última linha, então você teria que pressioná-lo novamente para encontrar a linha anterior.

Essas abordagens têm seus pontos strongs e ambas podem economizar muito tempo.

    
por 24.04.2013 / 11:20

Tags