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"

ripper234
fonte

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.

Andy
fonte
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