¿Cómo recorrer la búsqueda inversa en BASH?

¿Cómo recorrer la búsqueda inversa en BASH?

En la terminal, puedo escribir Ctrl+ Rpara buscar un comando coincidente escrito previamente en BASH. Por ejemplo, si escribo Ctrl+ Rluego grep, aparece mi último grepcomando y puedo presionar Enter para usarlo. Sin embargo, esto sólo da una sugerencia. ¿Hay alguna forma de recorrer otros comandos coincidentes escritos previamente?

Respuesta1

Si entiendo la pregunta correctamente, debería poder recorrer las alternativas presionando Ctrl+ repetidamente R.

P.ej:

  • Ctrl+R
  • grep
  • Ctrl+R
  • Ctrl+ R ...

Que busca hacia atrás a través de tu historia. En su lugar, para buscar hacia adelante, use Ctrl+ S, pero es posible que deba haber configurado: stty -ixon(ya sea manualmente .bash_profileo de forma manual) antes de eso para deshabilitar la función XON/XOFF que toma el control de Ctrl+ S. Si sucede de todos modos, use Ctrl+ Qpara volver a habilitar la salida de pantalla (Más detallesaquí.)

Respuesta2

Si cree que el comando se utilizará con frecuencia, puede agregar una etiqueta

command #useful

Entonces

Ctrl+R #useful

Esto funciona porque #es un delimitador de comentarios, es decir, todo lo que viene después del símbolo no se interpreta como un comando. Sin embargo, quedará registrado en el historial y, por tanto, se podrá buscar.

Respuesta3

También puedes configurar las flechas hacia arriba y hacia abajo para realizar una búsqueda ligeramente diferente agregando estas líneas a ~/.inputrc:

"\e[A": history-search-backward
"\e[B": history-search-forward

En lugar de buscar una subcadena en cualquier parte del comando (comoCtrl-r) buscará un comandocomenzando con el texto a la izquierda del cursor. Por ejemplo, si ejecuto estos comandos:

$ ls bart
$ ls fools

luego escriba lsy presione Updos veces, se mostrará ls bartel cursor en el mismo lugar. Compare con Ctrl- r, donde encontraría lsdos veces en la última línea, por lo que tendría que presionarlo una vez más para encontrar la línea anterior.

Ambos enfoques tienen sus puntos fuertes y ambos pueden ahorrar mucho tiempo.

Respuesta4

Hay un reemplazo para el incorporado Ctrl + Rllamadohstr. Permite buscar el historial de comandos que coincida con todos los tokens de búsqueda al mismo tiempo (entre otras cosas) y recorrer los resultados usando las teclas de flecha:

Ejemplo

Aquí hay unscreencast de demostración.

Se puede instalar en un sistema operativo de la familia Debian como:

add-apt-repository ppa:ultradvorka/ppa
apt-get update
apt-get install hstr

hstr --show-configuration >> ~/.bashrc

Y luego usar Ctrl + R(después de volver a abrir la terminal).

información relacionada