Conclusão da linha de comando do histórico de comandos

76

Então, eu olhei para o histórico e na Ctrl + R , mas eles não são o que eu pensava que sabia. Existe uma maneira que eu possa digitar no início de um comando e percorrer as correspondências em meu histórico com algum atalho bash?

# mysq(some shortcut key)

Me dá:

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p
    
por Ben Dauphinee 03.01.2011 / 16:50

5 respostas

77

Pressionar Ctrl + R abrirá a pesquisa do histórico inverso. Agora comece a digitar seu comando, isso dará a primeira partida. Pressionando Ctrl + R novamente (e novamente) você pode percorrer o histórico.

mysq(Ctrl+R)

daria:

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl + R novamente:

mysql -u ben.dauphinee -p
    
por 03.01.2011 / 16:58
52

Para expandir o que o Gilles disse, tenho o seguinte em .inputrc para ligar a tecla de seta para cima / baixo a history-search-backward e history-search-forward :

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

Basta digitar algo (opcional) e, em seguida, pressionar a tecla de seta para cima / para baixo para pesquisar no histórico os comandos que começam com o que você digitou.

Para fazer isso em .bashrc em vez de .inputrc , você pode usar:

bind '"\e[A": history-search-backward'
    
por 16.09.2011 / 00:54
6

Você também pode pressionar o botão PAGEUP para concluir automaticamente um comando. Basicamente, ele pesquisa o arquivo bash_history .

    
por 21.09.2016 / 08:38
4

Você pode usar os comandos readline history-search-backward e history-search-forward para navegar entre as linhas de comando que começam com o prefixo que você já digitou. Nenhum desses comandos está vinculado a chaves na configuração padrão.

Zsh (zle) tem comandos semelhantes history-beginning-search-backward e history-beginning-search-forward , também não vinculados a chaves por padrão. Há também history-search-backward e history-search-forward , que usa a primeira palavra do comando atual como prefixo para pesquisar, independentemente da posição do cursor.

    
por 03.01.2011 / 20:50
4

Se você quiser uma boa visão geral de comandos muito semelhantes, você pode obter uma lista com:

history|grep KEYSTRING

Copie e cole com o botão do meio do mouse.

Rgds - Joe

    
por 24.04.2013 / 21:28