La mejor manera de buscar en el historial de Shell

La mejor manera de buscar en el historial de Shell

¿Existe una mejor manera de buscar un comando en mi archivo de historial que grep? Tengo una idea de cómo comienza el comando, pero no sé qué tan atrás en la historia se encuentra.

actualizar:Anteriormente era específico de zsh, pero debido a la superposición de respuestas, no dude en responder para cualquier shell (o modo (vi/emacs)) aquí, solo tenga en cuenta si es específico.

Respuesta1

Ctrl+ Rsuele ser la mejor manera, ya queel descriptor dijo. También puede usar !string, que ejecuta el comando más reciente que comienza con string, o !?string?, que ejecuta el comando más reciente que contiene string.

(Creo que eso es lo único relevante para esta pregunta, pero cubrí muchos más comandos de historial enesta respuesta)

Respuesta2

Cuando utilice Bash, escriba Control- Ry luego comience a escribir. Escribir Controlrepetidamente Rdespués de ingresar algún texto lo hará retroceder a las líneas de comando coincidentes.

Respuesta3

Si agrega lo siguiente a~/.inputrc

"\e[5~": history-search-backward
"\e[6~": history-search-forward

y reinicie Bash, puede comenzar a escribir y luego usar Page Upy Page Downpara avanzar y retroceder en el historial de líneas que comienzan con el mismo prefijo que acaba de escribir.

(Es posible que algunos prefieran usar \e[Ay \e[B, que reemplazará las acciones normales Upy Downen lugar de vincular claves nuevas).

Respuesta4

El mensaje interactivo invocado por Ctrl- R, que ya se mencionó, es la forma más conveniente. Además, es popular reasignar Upy Downutilizar las teclas de flecha para buscar en el historial un prefijo que se encuentra actualmente en la línea de comando; sin embargo, esto requiere algo de tiempo.cambios en el ~/.inputrcarchivo.

La solución clásica y menos interactiva es utilizar la expansión del historial del shell. Mecanografía

!foo

ejecutará el último comando que comienza con fooy

!?foo

ejecutará el último comando que contiene foo. Puede encontrar más información sobre la expansión de la historia en elmanual de referencia de bash, suponiendo que su shell sea Bash o compatible.

información relacionada