Como navegar seletivamente pelo histórico de comandos do Bash em um terminal Linux [duplicado]


9

Todo mundo sabe (ou deveria saber!) Que em um terminal as teclas de seta para cima e para baixo são usadas para navegar pelo histórico dos comandos usados.

Quando você usa o terminal diariamente, seu histórico de comandos provavelmente será uma longa lista de muitos comandos diferentes, tornando a navegação menos fácil. Apenas como exemplo, digamos que um mês atrás eu usei o iwconfigcom um conjunto determinado de parâmetros (como eu disse, é apenas um exemplo, não preciso mexer com isso agora), como posso lembrar desse comando específico com todos os seus argumentos e parâmetros sem ter que navegar de volta por centenas de comandos do histórico?

Eu sei que eu poderia usar historypara ter uma lista de comandos usados ​​anteriormente e !nexecutar novamente o comando n na lista mencionada, mas quando o histórico cresce, isso também não é muito prático.

O ideal seria ter algo que me permita usar algumas teclas de atalho para navegar pelo histórico, mas apenas entre as instâncias que contêm o que eu já digitei na linha de comando; Assim, no meu exemplo, depois de digitar iwconfig, use algumas teclas (talvez PgUp e PgDown?) para navegar apenas pelas entradas que começam com iwconfig .

Se não for possível, também seria bom imprimir uma lista como historydo, mas que conterá apenas o que eu já digitei (suspeito que o comando historye o grepcomando estejam envolvidos, mas não tenho certeza da sintaxe correta); mas a solução anterior de teclas de atalho seria a melhor opção.

Respostas:


12

Você pode pesquisar o histórico usando Ctrl+ Re, em seguida, digite a sequência de pesquisa (por exemplo, iwpara encontrar iwconfig). Em seguida, você ainda pode navegar pelo histórico nesse ponto com as teclas de seta para cima e para baixo ou pressionar Ctrl+ Rnovamente para encontrar a ocorrência anterior.


Eu não tenho certeza de ter entendido bem quente que funciona. Se eu pressionar Ctrl + R e digitar iwconfig, ele me mostrará uma instância que a contém (não necessariamente a mais recente), mas se eu usar as teclas de seta, ela navegará por todos os itens, não apenas pelos que contêm a string. Parece-me que ele selecionou um ponto específico da história para iniciar a navegação (em vez de começar de baixo como a tecla para cima), mas, além disso, a navegação é a mesma de sempre. Perdi alguma coisa?
Sekhemty

Eu acho que isso não importa, mas por precaução, estou usando o konsoleemulador de terminal.
Sekhemty

Atualizei minha resposta sobre como encontrar correspondências anteriores.
Stefan Seidel

5

Depois de um pouco de prática, descobri como usar a solução alternativa.

Combinei a sintaxe correta para imprimir uma lista filtrada, fiz com history | grep iwconfig(não era tão difícil, afinal); com a saída que posso usar !ncom a lista filtrada agora fácil de ler.


3
Um truque adicional: Use !n:p. Isso imprime o comando antigo sem executá-lo e o coloca de volta no seu histórico. Em seguida, vá para ele com um único toque da seta para cima e agora você pode editá-lo. Existem muitos outros truques tolos como este: ss64.com/bash/history.html
Wandering Logic

3

Não posso comentar a resposta de Stefan, mas você normalmente deve continuar pressionando Ctrl + R. Veja esta página para mais informações.


2

Pressione "ctrl + r" e digite a string de pesquisa.

Se não for o que você procura, novamente "ctrl + r"

Se encontrado, pressione Enter para executá-lo ou pressione a seta para a direita -> para editá-lo antes de usá-lo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.