(búsqueda inversa) en Bash

26

Por lo general, termino usando CTRL+ rfor (reverse-i-search), sin embargo, a veces paso el comando que estaba buscando; si hago de nuevo un (reverse-i-search)ya no lo encuentra. Supongo que el puntero actual al historial de comandos está antes del comando que estoy buscando.

¿Alguien sabe cómo volver al comando más actual en el historial sin tener que hacer clic 1000 veces down arrow?

Micro
fuente
1
La búsqueda inversa es una característica de bash (y las bibliotecas readline), por lo que he editado el título y la pregunta un poco para reflejar eso.
Doug Harris
si pasa el comando que quería, CTRL+SHIFT+Rregrese
Ricky Robinson

Respuestas:

7

Hay una pregunta similar en stackoverflow.com .

La mejor respuesta es usar Ctrl+Gpara cancelar la búsqueda actual.

Doug Harris
fuente
Esta realmente no es la mejor respuesta. La mejor respuesta es la dada por Dennis Williamson: agregue stty -ixonsu .bashrc(o en algún otro archivo de configuración correspondiente), y luego Ctrl-Savance en el historial, de manera similar a los Ctrl-Gpasos hacia atrás. La primera Ctrl-Spulsación de tecla después de los Ctrl-Gcambios reverse-i-searchen i-search, el siguiente Ctrl-Sda el primer paso hacia adelante. Entonces cada Ctrl-Suno da un paso adelante más.
nrz
o si ya finalizó la búsqueda (por ejemplo, presionando esc o una tecla de flecha), puede presionar Esc seguido de '>'
Superole
38

En realidad, otra respuesta a esa pregunta ofrece una mejor opción.

En su ~/.bashrcagregar la siguiente línea:

stty -ixon

Luego puede usar Ctrl, spara avanzar por el historial de la misma manera que lo haría Ctrl, rpara retroceder.

Esto incluso funcionará para comenzar una nueva búsqueda hacia adelante (llamada i-searchen lugar de reverse-i-search) mientras navega por el historial. Suponga que lo hace Ctrl, ry escriba el texto de un comando cerca de su destino, luego presione la flecha hacia arriba varias veces para superar lo que realmente estaba buscando (o cambia de opinión). Ahora presione Ctrl- sy escriba algunos caracteres de esa línea. Zoooom! Directo a ello.

Pausado hasta nuevo aviso.
fuente
2
¿Cuál es la implicación de stty -ixon? ¿Desactiva algo que podría ser necesario en otras situaciones?
Gregory Pakosz
77
@GregoryPakosz: Desactiva XON / XOFF ( control de flujo de software ), que es inútil desde el teclado ahora que nos estamos comunicando a una velocidad un poco más alta que 300 baudios.
Pausado hasta nuevo aviso.
gracias, busqué en Google por un tiempo y llegué a la misma conclusión, es inútil en la actualidad
Gregory Pakosz