Como faço para completar automaticamente um comando do histórico de comandos?

Como faço para completar automaticamente um comando do histórico de comandos?

Existe uma combinação de teclas para o bash competir automaticamente com um comando do histórico? No ipython e no matlab, por exemplo, isso é conseguido pressionando a seta para cima após digitar alguns caracteres.

Responder1

Em primeiro lugar, acessar tabo bash é ainda melhor, pois preenche automaticamente todos os executáveis ​​no seu PATH, independentemente de estarem no histórico. Dito isto, existem várias maneiras de obter um comando do seu histórico:

  1. Use seu número. Se você sabe que o comando desejado foi há 3 comandos, basta executar

     !-3
    

Isso executará novamente o comando que você executou três comandos atrás.

  1. Procure por isso. Digite Ctrlre comece a digitar qualquer texto. O primeiro comando do histórico que corresponder ao seu texto será mostrado e clicar enterirá executá-lo.

  2. Clique (seta para cima). Isso abrirá o último comando, pressione-o novamente e você subirá no seu histórico de comandos. Quando você encontrar o que deseja, clique em enter.

  3. Adicione estas linhas ao seu ~/.inputrc(crie o arquivo se ele não existir):

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

Para carregar o arquivo imediatamente, execute bind -f ~/.inputrc(fonte). Agora, digite os primeiros caracteres de um dos comandos que você executou anteriormente e pressione . O primeiro comando do seu histórico que começa com esses caracteres será mostrado. Clique novamente para ver o resto e clique enterquando encontrar o que deseja.

  1. Use o historycomando. Como explicou @Isaac, isso listará todos os comandos armazenados em seu arquivo de histórico.

Responder2

Você pode verificar a posição do comando na sequência do histórico com o comando history. Então você pode executar !<number_in_the_sequence>. Espero que isso ajude.

Responder3

Você também pode usar historye canalizar a saída para um comando específico.

Por exemplo, se você esteve cdno sistema de arquivos o dia todo e só precisa de um lembrete de quais diretórios foram trabalhados

history | grep cd

Você pode então copiar/colar o comando ou !n(onde n é o número da linha no arquivo de histórico) executá-lo novamente.

informação relacionada