Configure a seta para cima para navegar pelos comandos com os mesmos caracteres iniciais em vez de todos os comandos anteriores

14

Na linha de comando bash , me fornece o comando anterior. Nas linhas de comando em numpy ou matlab , quando eu digito alguns caracteres, me fornece o comando anteriormente digitado, começando com esses caracteres . Como posso ativar exatamente esse comportamento em bash ?

Estou ciente das formas mais avançadas de pesquisar através do histórico da linha de comando, mas às vezes uma maneira simples é mais conveniente.

    
por gerrit 04.11.2012 / 12:09

3 respostas

14

Os comandos readline que você está procurando são os comandos history-search-* :

history-search-forward
Search forward through the history for the string of characters between the start of the current line and the current cursor position (the point). This is a non-incremental search.
history-search-backward
Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search.

Vinculando-os ao seu .inputrc , assim:

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

permitirá que você insira os primeiros caracteres de um comando e, em seguida, use as teclas Up e Abaixo para percorrer apenas os comandos em .bash_history que começam com essa string.

Por exemplo, inserir vi e Up levará você ao primeiro comando anterior, começando com vi , como vim somefile . Digitar Up leva você para a próxima instância anterior, e assim por diante.

Você pode ler mais sobre todas as ligações readline aqui: link

    
por 04.11.2012 / 21:57
8

Adicione o seguinte ao seu .inputrc em ~ /, para fazer o que você sugeriu:

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

Talvez você também queira adicionar o seguinte ao seu .bash_profile:

export INPUTRC=~/.inputrc
    
por 04.11.2012 / 21:45
1

Prefira um "!" para o comando que você está procurando. Se você deseja substituir a funcionalidade das setas para cima e para baixo, modificar o arquivo inputrc (como as outras respostas sugerem) é o caminho a ser seguido.

Se "comando" for o comando que você está procurando, digite isto:

!comm

Você deve receber "comando" como saída.

Da mesma forma, se você quiser encontrar um comando que inclua (mas não comece com) parte do comando, pressione ctrl + r e digite uma parte do comando.

Você também pode digitar "aba" para completar automaticamente o texto digitado (isso inclui arquivos também). Isso é útil se você estiver procurando por um comando que não esteja no seu histórico (ou se você não tiver um arquivo de histórico)

Você pode ler mais sobre "masterizar" o arquivo de histórico aqui: link

Esta é uma possível duplicação de link

    
por 04.11.2012 / 20:42

Tags