Puede combinar las funciones de búsqueda de historial e historial existentes de Bash. Presione Ctrl-Rpara comenzar la búsqueda inversa incremental, luego comience a escribir la parte de la ruta más probable que sea única.
Puede seguir escribiendo letras hasta que termine en el cd
comando más reciente que involucra ese directorio, o puede presionar Ctrl-Rnuevamente para volver al historial al siguiente comando más nuevo que coincida con lo que ha escrito hasta ahora.
Hago esto todo el tiempo.
En realidad, lo llevo un paso más allá. Una vez que empiezo a descubrir secuencias de comandos que vale la pena mantener en el historial pero que no vale la pena comprometer con un script de shell, empiezo a encadenarlos &&
y ;
combinarlos para poder realizar una búsqueda inversa de una subcadena de ese comando largo, presionar Entery ejecutar toda la secuencia en una vez.
Por ejemplo, así es como construyo y ejecuto uno de mis programas durante el desarrollo:
$ ( cd .. ; make install ) && ./start_my_program
Lo hago desde el directorio de instalación, que se encuentra debajo del directorio de origen de nivel superior. Al envolver la parte cd
, construir e instalar en un subconjunto, me aseguro de que, sin importar lo que ocurra durante este proceso, termine de nuevo en mi shell normal sin cambiar nada. Solo si eso tiene éxito (&&) puedo iniciar el programa construido e instalado. Puedo encontrar esto en mi historia con solo un Ctrl-Rmomento sta, que es todo lo que necesito generalmente para encontrar de manera única esta secuencia de comandos.
Otro ejemplo de cómo uso esto es la secuencia que entra en la construcción de RPM para este mismo programa. La mayor parte del trabajo tedioso está en scripts de shell, pero todavía hay algunos comandos que normalmente tendría que escribir para hacer todo el trabajo de construir y desplegar los RPM construidos, que ahora rara vez tengo que volver a escribir, porque Bash mantiene en la historia para mi.
Combine todo esto con export HISTSIZE=bignum
y shopt histappend
y que acaba construido una memoria de elefante de comandos.
Otra solución que codifiqué una vez está en mi respuesta a otra pregunta aquí . Es posible que deba adaptarse para sus propósitos, y solo maneja cd
comandos, mientras que la opción de búsqueda de historial funciona en todas partes y para cada comando.