¿Cómo hacer que el historial de bash sea sensible al prefijo?

8

¿Cómo puedo hacer que presionar arriba / abajo en bash muestre el último comando que comenzó con el prefijo que ya ingresé?

P.ej

$ ls foo
$ echo hello
$ ls <UP_ARROW>

Al hacer clic en ARRIBA después de ingresar ls debería aparecer "ls foo" y no "echo hola"

ripper234
fuente

Respuestas:

11

Algunas posibilidades

  1. Vincula los history-search-backward/forwardcomandos. Creo que esto está más cerca de lo que quieres:

    bind '"\e[A":history-search-backward'
    bind '"\e[B":history-search-forward'
  2. Utiliza el historial de i-search. Esto probablemente está obligado a ^R. En una línea vacía, lo ^Rls<space>llevará de regreso ls foo, luego ^Rnuevamente lo llevará al último lscomando (u otro comando con lsalgún lugar en la línea) antes ls foo, etc.

  3. Enlazar el magic-spacecomando: bind SPACE:magic-space. Luego escriba (en una línea vacía) !ls<space>, y readline realizará la sustitución del historial automáticamente, dejándolo con ls foo.

Andy
fuente
1
Gracias. Tomé la opción 1 y, con la ayuda de esta vieja respuesta, me di cuenta de que \ e [B unirá la flecha hacia abajo.
ripper234
Edité su pregunta para incluir el historial de búsqueda hacia adelante (bueno, envié una edición a la cola de edición)
ripper234