Como posso preencher automaticamente um comando a partir do histórico de comandos? [duplicado]

19

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

    
por Sparkler 10.10.2014 / 10:00

3 respostas

27

Primeiro de tudo, apertar a aba no bash é ainda melhor, já que ela completa automaticamente todos os executáveis em seu PATH, independentemente de estarem no histórico. Dito isso, existem várias maneiras de obter um comando do seu histórico:

  1. Use seu número. Se você sabe que o comando que você quer era 3 comandos atrás, você pode simplesmente executar

    !-3
    

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

  2. Pesquise por ele. Digite Ctrl r e comece a digitar qualquer texto. O primeiro comando do histórico que corresponde ao seu texto será mostrado e pressionar enter irá executá-lo.

  3. Pressione (seta para cima). Isso trará o último comando, pressione-o novamente e você irá subir seu histórico de comandos. Quando você encontrar o que deseja, pressione enter .

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

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

    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. Pressione novamente para ver o resto e tecle enter quando encontrar o que deseja.

  5. Use o comando history . Como @Isaac explicou, isso listará todos os comandos armazenados no seu arquivo de histórico.

por 10.10.2014 / 14:42
8

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 ajude.

    
por 10.10.2014 / 10:16
2

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

Por exemplo, se você esteve cd -ing em todo o sistema de arquivos durante todo o dia e precisa apenas 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 histórico) para re-executá-lo.

    
por 10.10.2014 / 15:03