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 grep
comando 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_profile
ou 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 ls
e pressione Upduas vezes, ele mostrará ls bart
o cursor no mesmo lugar. Compare com Ctrl- r, onde encontraria ls
duas 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:
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).