Como posso definir minha rolagem do histórico BASH para filtrar pelo que eu já digitei?

9

Dado um histórico de comandos:

1 pwd
2 mysql -u root -p
3 ps -ef | more
4 top
5 mysql -h 192.168.1.101 -u root -p

Quando você pressiona a seta para cima, você percorre todos esses comandos. Eu li em algum lugar antes (e fiz isso no meu PC de trabalho) que você pode configurar o BASH de tal forma que quando eu digito p pela primeira vez, em seguida, pressione a seta para cima, ele só iria percorrer todos os comandos no histórico que começa com "p" ( pwd e ps -ef | more ). Quando eu digito mysql , em seguida, pressione para cima, então ele só iria percorrer todos os comandos, começando com "mysql".

Eu gostaria de configurar meu laptop para usar isso, mas não consigo encontrar as instruções novamente.

    
por Nikki Erwin Ramirez 08.01.2010 / 04:49

2 respostas

11

Você pode configurar a pesquisa incremental em /etc/inputrc (para alterações em toda a máquina) ou ~/.inputrc (apenas para sua conta de usuário).

Adicione estas duas linhas:

"\e[A": history-search-backward
"\e[B": history-search-forward
    
por 08.01.2010 / 04:59
7

Como alternativa, você pode pressionar ctrl+R para entrar no modo reverse-i-search . Você pode então começar a digitar e ele encontrará a primeira linha anterior que corresponde à string digitada (por exemplo, digite m e ela retornará para mysql -h 192.168.1.101 -u root -p ; em seguida, digite o e ela voltará para ps -ef | more como essa é a primeira linha com mo in.

Você pode acertar ctrl+r novamente para procurar a correspondência antes disso (isto é, ctrl+r,my,ctrl+r levaria você ao segundo último comando que começa com mysql )

Você pode ler mais sobre como pesquisar na pesquisa de histórico do Readline , comandos para interagir com o histórico e como você pode modifica os atalhos de teclado padrão e se comporta em man bash (ou online )

    
por 08.01.2010 / 05:20