Cómo navegar selectivamente por el historial de comandos de Bash en un terminal de Linux [duplicado]

9

Todo el mundo sabe (¡o debería saber!) Que en un terminal, las teclas de flecha hacia arriba y hacia abajo se utilizan para navegar por el historial de comandos utilizados.

Cuando utiliza el terminal diariamente, su historial de comandos probablemente será una larga lista de muchos comandos diferentes, lo que hará que la navegación sea menos fácil. Solo como ejemplo, digamos que hace un mes usé el iwconfigcon un conjunto determinado de parámetros (como dije, es solo un ejemplo, no necesito meterme con eso en este momento), ¿cómo puedo recordar ese comando en particular? con todos sus argumentos y parámetros sin tener que navegar a través de cientos de comandos del historial?

Sé que podría usar historypara tener una lista de comandos utilizados previamente y !nvolver a ejecutar el comando n en dicha lista, pero cuando el historial crece, no es muy práctico también.

Lo ideal sería tener algo que me permita usar algunas teclas de acceso rápido para navegar por el historial, pero solo entre las instancias que contienen lo que ya he escrito en la línea de comandos; así que en mi ejemplo, después de haber escrito iwconfig, use algunas teclas (¿tal vez PgUp y PgDown?) para navegar a través de las entradas que comienzan con iwconfig .

Si no es posible, también sería bueno imprimir una lista como historydo pero que solo contendrá lo que ya he escrito (sospecho que eso historyy el grepcomando están involucrados, pero no estoy seguro de la sintaxis correcta); pero la solución de teclas de acceso rápido anterior sería la mejor opción.

Sekhemty
fuente

Respuestas:

12

Puede buscar en el historial con Ctrl+ Ry luego escribir la cadena de búsqueda (por ejemplo, iwpara buscar iwconfig). Luego, aún puede navegar por el historial en ese punto con las teclas de flecha hacia arriba y hacia abajo, o presionar Ctrl+ Rnuevamente para encontrar la ocurrencia anterior.

Stefan Seidel
fuente
No estoy seguro de haber entendido bien si funciona. Si presiono Ctrl + R y escribo iwconfig, me muestra una instancia que la contiene (no necesariamente la más reciente), pero si uso las teclas de flecha, navega por todos los elementos, no solo los que contienen la cadena. Me parece que selecciona un punto específico en el historial para comenzar la navegación (en lugar de comenzar desde abajo como lo hace la tecla arriba), pero aparte de eso, la navegación es la misma de siempre. ¿Me he perdido algo?
Sekhemty
Creo que no importa en absoluto, pero por si acaso, estoy usando el konsoleemulador de terminal.
Sekhemty
Lo siento, he actualizado mi respuesta sobre cómo encontrar coincidencias anteriores.
Stefan Seidel
5

Después de un poco de práctica, descubrí cómo usar la solución alternativa.

Emparejé la sintaxis correcta para imprimir una lista filtrada, lo hice history | grep iwconfig(no fue tan difícil después de todo); con el resultado que puedo usar !ncon la lista filtrada ahora fácil de leer.

Sekhemty
fuente
3
Un truco adicional: uso !n:p. Esto imprime el comando anterior sin ejecutarlo y lo vuelve a colocar en su historial. Luego ve a él con un solo trazo de flecha hacia arriba y ahora puedes editarlo. Hay muchos otros trucos tontos como este: ss64.com/bash/history.html
Wandering Logic
3

No puedo comentar sobre la respuesta de Stefan, pero normalmente tienes que seguir presionando Ctrl + R. Vea esta página para más información.

usuario2313067
fuente
2

Presione "ctrl + r" y luego ingrese la cadena de búsqueda.

Si no es el que está buscando, de nuevo "ctrl + r"

Si lo encuentra, presione Entrar para ejecutarlo O presione la flecha derecha -> tecla para editarlo antes de usarlo.

Santosh
fuente