(pesquisa-reversa-i) no Bash


26

Normalmente, acabo usando CTRL+ rpara (pesquisa-e-inversa), no entanto, às vezes, passo o comando que estava procurando; se eu fizer novamente (reverse-i-search), não o encontrará mais. Suponho que o ponteiro atual para o histórico de comandos esteja antes do comando que estou procurando.

Alguém sabe como voltar ao comando mais atual da história sem precisar clicar 1000 vezes o down arrow?


1
A pesquisa reversa é um recurso do bash (e das bibliotecas readline), então eu editei o título e a pergunta um pouco para refletir isso.
Doug Harris

Se você passar o comando que você queria, fazer CTRL+SHIFT+Rvoltar
Ricky Robinson

Respostas:


7

Há uma pergunta semelhante no stackoverflow.com .

A melhor resposta a ser usada Ctrl+Gpara cancelar a pesquisa atual.


Esta realmente não é a melhor resposta. A melhor resposta é a dada por Dennis Williamson: adicione stty -ixonseu .bashrc(ou outro arquivo de configuração correspondente) e, em seguida, Ctrl-Savança no histórico, da mesma forma que Ctrl-Gretrocede. O primeiro Ctrl-Spressionamento de tecla após Ctrl-Galterar reverse-i-searchpara i-search, o próximo Ctrl-Sdá o primeiro passo à frente. Então cada Ctrl-Sum dá mais um passo à frente.
N

ou se você já encerrou a pesquisa (por exemplo, pressionando esc ou uma tecla de seta), você pode pressionar Esc seguido de '>'
Superole

38

Na verdade, outra resposta para essa pergunta oferece uma opção melhor.

No seu, ~/.bashrcadicione a seguinte linha:

stty -ixon

Depois, você pode usar Ctrl- spara avançar na história da mesma maneira que usaria Ctrl- rpara retroceder.

Isso funcionará até para iniciar uma nova pesquisa direta (chamada i-searchem oposição a reverse-i-search) enquanto estiver navegando no histórico. Suponha que sim Ctrl- re digite algum texto de um comando perto do seu destino e pressione a seta para cima várias vezes, ultrapassando o que realmente estava procurando (ou você muda de idéia). Agora pressione Ctrl- se digite alguns caracteres dessa linha. Zoooom! Direto para isso.


2
qual é a implicação de stty -ixon? desativa algo que pode ser necessário em outras situações?
Gregory Pakosz

7
@GregoryPakosz: Desativa o XON / XOFF ( controle de fluxo de software ), que é inútil no teclado agora que estamos nos comunicando a uma taxa um pouco maior que 300 baud.
Pausado até novo aviso.

obrigado, pesquisei por um tempo e chegou à mesma conclusão, é na maior parte inútil hoje em dia
Gregory Pakosz
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.