Como posso ativar algo como o histórico de comandos no estilo do Windows no bash?

1
Pessoalmente, eu prefiro o caminho do Windows de travessia do histórico de comandos (desculpe!), onde cada comando mantém seu lugar no histórico e quando você retorna ao último comando executado, ele não é necessariamente o último no histórico.

Não tenho certeza se isso faz sentido, então tentarei explicar com exemplos.

Bash

Suponha que eu executei quatro comandos ( one , two , three , four ). Depois disso, o histórico de comandos (do mais antigo ao mais recente) se parece com:

  • one
  • two
  • three
  • four

Agora, se eu pressionar três vezes, voltarei a four , depois three e, em seguida, two conforme o esperado. Se eu pressionar enter, executarei o comando two . Agora a história se parece com:

  • one
  • two
  • three
  • four
  • two

Se eu pressionar , verei two . Se eu pressioná-lo novamente, verei four e assim por diante.

Windows

Suponha que eu executei os mesmos quatro comandos ( one , two , three , four ). Depois disso, o histórico de comandos (do mais antigo ao mais recente) se parece com:

  • one
  • two
  • three
  • four

Agora, se eu pressionar três vezes, voltarei a four , depois three e, em seguida, two como antes. Se eu pressionar enter, executarei o comando two . Agora pressionando novamente, ele ainda mostrará two . Mas a história ainda parece:

  • one
  • two
  • three
  • four

O que isto significa é que eu "saltei" de volta para um ponto anterior da história. Agora eu posso pressionar para ver one , ou para ver three , etc.

Por que isso é útil

Isso é particularmente útil quando você acabou de executar uma série de comandos e deseja executá-los novamente. Envolve significativamente menos pressionamentos de tecla para executar toda a série novamente.

Existe uma maneira de fazer com que o bash se comporte da mesma maneira?

    
por Kidburla 25.01.2018 / 14:01

1 resposta

2

Isso não responde diretamente à sua pergunta, mas pode ser útil se não houver uma resposta verdadeira.

Se você executou alguma sequência de comandos:

$ one
$ two
$ three
$ four

$ history
1  one
2  two
3  thee
4  four

e você deseja executar a sequência novamente, você pode fazer o seguinte:

!1; !2; !3; !4

Ou, se você quiser executar comandos subseqüentes somente se os anteriores forem bem-sucedidos:

!1 && !2 && !3 && !4

Em seguida, você receberá uma entrada assim em seu histórico:

$ history
1  one
2  two
3  three
4  four
5  one; two; three; four
6  one && two && three && four

Então, se você quiser re-executar essa sequência novamente, você pode usar as setas ou apenas usar, por exemplo, !5

    
por 25.01.2018 / 16:47