retroceder al final del historial de bash al usar la búsqueda inversa?

12

Mantengo un historial de bash bastante largo y, a veces, cuando busco algo con la función de búsqueda inversa bash ( Ctrl+ r) termino al comienzo del historial de búsqueda y todavía no encontré lo que necesitaba y luego me gustaría volver al final del archivo de historial. Una opción es usar la función de búsqueda hacia adelante ( Ctrl+ s) que se acerca al final del historial o ejecutar #, pero ¿hay también un atajo de teclado para moverse directamente al final del historial de bash?

Martín
fuente
2
historyle mostrará todos los comandos de bash hecho ..
ryekayo

Respuestas:

6

Existe la función readline end-of-history, asignada de forma predeterminada a M- >, pero si se usa durante la búsqueda inversa, sale del indicador de búsqueda inversa.

Una posible solución / truco

Iniciar búsqueda de cadena

En cambio, para usar la búsqueda inversa, puede usar history-search-backwardy history-search-forward(predeterminado sin asignar), asignarlos a up/down(muy útil) en su .inputrc:

# up-down arrow to search in history
"\e[A":history-search-backward
"\e[B":history-search-forward

Entonces, después de haber escrito, podría invertir la búsqueda presionando up (en lugar de Ctrl+ R), y cuando desee regresar al final del historial puede usar la end-of-historyfunción presionando ( M- >)

De esta manera, "La cadena de búsqueda debe coincidir al comienzo de una línea de historial ", por lo que, si busca ls -ltr, debe escribir lsy luego presionar la  uptecla.

Búsqueda de subcadenas

si desea " La cadena de búsqueda puede coincidir en cualquier parte de una línea de historial ", debe usar history-substring-search-forward y history-substring-search-backward:

# up-down arrow to search in history
"\e[A":history-substring-search-backward
"\e[B":history-substring-search-forward

De esta manera, si busca ls -ltr, puede escribir ls, pero también ltr, antes de presionar up.

Referencia: Manual de referencia de Bash - Comandos para el historial .

lgaggini
fuente