Como tornar o histórico do bash sensível a prefixos?


8

Como fazer com que pressionar para cima / para baixo no bash exiba o último comando iniciado com o prefixo que eu já inseri?

Por exemplo

$ ls foo
$ echo hello
$ ls <UP_ARROW>

Clicar em PARA CIMA após digitar ls deve exibir "ls foo" e não "echo hello"

Respostas:


11

Algumas possibilidades:

  1. Vincule os history-search-backward/forwardcomandos. Acredito que isso seja o mais próximo do que você deseja:

    bind '"\e[A":history-search-backward'
    bind '"\e[B":history-search-forward'
  2. Use o histórico de pesquisa. Provavelmente isso está vinculado ^R. Em uma linha vazia, ^Rls<space>você retornará a ls foo, e ^Rnovamente o levará ao último lscomando (ou outro comando com lsalgum lugar da linha) antes ls foo, etc ...

  3. Vincular o magic-spacecomando: bind SPACE:magic-space. Em seguida, digite (em uma linha vazia) !ls<space>e o readline executará a substituição do histórico automaticamente, deixando você com ls foo.


1
Obrigado. Peguei a opção 1 e, com a ajuda dessa resposta antiga, percebi que \ e [B ligará a seta para baixo.
Ripper234 27/05

Eu editei a pergunta para incluir história-procurar-forward (bem, apresentou uma edição para a fila de edição)
ripper234
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.