É possível percorrer o histórico da linha de comando para um comando em particular?

0

Por exemplo, posso ver todos os parâmetros anteriores que passei para o comando ssh (ou seja, todos os endereços de servidor que passei como parâmetro ao chamar o ssh)?

Isso vai ser algo semelhante ao comando 'history', mas não exatamente.

Seria incrível se eu pudesse acompanhar este histórico de comandos, mas isso provavelmente está pedindo muito. Por exemplo, se eu digitei ssh e, em seguida, a guia me permitiria percorrer os comandos executados anteriormente.

    
por user391339 30.05.2016 / 07:51

3 respostas

4

Não é exatamente o que você está pedindo, mas é possível pesquisar no histórico.

Por exemplo, ^R seguido por ssh e, em seguida, continue a percorrer os comandos com ^R .

(Essa é a pesquisa inversa. A pesquisa direta é por padrão em ^S , mas infelizmente colide com XOFF (desfeita com ^Q ) para o terminal típico, então você provavelmente deseja remapear isso para que seja útil.)

    
por 30.05.2016 / 07:55
4

Isso é possível. Você quer investigar Ctrl-R e um pouco de expansão de histórico.

De man bash :

reverse-search-history (C-r)
    Search backward starting at the current  line  and  moving 'up'
    through  the  history  as  necessary.   This  is  an incremental
    search.

History expansions introduce words from the history list into the input
stream,  making  it  easy to repeat commands, insert the arguments to a
previous command into the current input line, or fix errors in previous
commands quickly.

Mais explicações sobre o histórico de pesquisa inversa:

Pressione Ctrl-R e comece a digitar em uma string. Você verá a última linha do seu histórico que contém a string em qualquer posição, atualizada para cada pressionamento de tecla. Pressione Ctrl-R mais vezes para ver as linhas anteriores sem digitar novos caracteres. Pressione Enter para aceitar e iniciar o comando, da esquerda para a direita para editar o comando, de cima para baixo para navegar no histórico sem limitar a string pesquisada a partir da linha que encontrou, Ctrl-C para abandonar a pesquisa.

    
por 30.05.2016 / 07:55
1

Isso também é útil:

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.

Pode não estar vinculado por padrão, mas você pode vinculá-lo e h-s-forward a, e. page up / page down. Escrevendo o início de uma linha de comando e pressionando pgup / pgdown, você poderá percorrer as linhas de comando iniciando com isso. Fui um pouco mais longe e liguei as teclas de seta para cima / para baixo também.

Em /etc/inputrc ou $HOME/.inputrc :

# pgup, pgdown, up, down
"\e[5~" history-search-backward
"\e[6~" history-search-forward
"\e[A" history-search-backward
"\e[B" history-search-forward
    
por 02.06.2016 / 18:08