Para algunos proyectos, a menudo escribo un par de comandos, como por ejemplo:
cd an/extremely/long/path/in/which/I/have/some/kinda/project
y
./runmyproject --with some --command line --options set
Al ver que soy bastante vago, trato de evitar escribir esos comandos una y otra vez. Así que, por supuesto, puedo usar la tecla arriba para encontrar esos comandos, pero a menudo, tengo tantos comandos intermedios, que buscarlos lleva aún más tiempo que simplemente escribirlos.
Ahora me pregunto si hay algún tipo de utilidad que pueda sugerir un comando completo que utilizo mucho, cuando aún no lo he escrito todo. Para que pueda, por ejemplo, escribir 'cd an /' y que ya sugiera el resto del camino porque lo he usado mucho el mes pasado.
Encontré algo llamado Bash Smart Complete. Pero eso es un poco "tonto", ya que no mira los comandos que usé antes. También encontré esta respuesta SO , que sugiere poner los comandos que uso mucho en un archivo. Sin embargo, eso no responde lo suficiente, ya que necesitaría crear un nuevo archivo cada vez que inicio nuevos proyectos o cambie carpetas o argumentos de programa.
¿Alguien sabe alguna otra utilidad u otra forma de lograr esto? O, ¿alguien sabría cómo podría alterar el Bash Smart Complete para que pueda ver los comandos que utilicé en el último mes y completar el comando que más se ajusta y se ha utilizado en el último mes?
[EDITAR] A continuación hay algunas respuestas realmente geniales. Todavía no he marcado ninguna como respuesta definitiva. No porque no me gusten las respuestas, sí, sino porque ninguna de ellas es un ganador absoluto. Creo que el Finalterm es un gran proyecto. Lamentablemente, todavía es bastante irregular en los bordes. Por ejemplo; Todavía no admite copiar y pegar. Sin embargo, estaría atento a ese proyecto, porque cuando madure, creo que será una gran aplicación de terminal. En cuanto a las otras respuestas; sugirieron crear un alias, que no es lo que quiero hacer porque crea trabajo adicional en lugar de quitar el trabajo, o usar Ctrl + R, lo cual es genial (¡no lo sabía!). Un par de personas sugirió usar Ctrl + R, por lo que realmente no puedo resaltar una respuesta sobre la otra.
Así que por ahora definitivamente estoy usando Ctrl + R, y en el futuro podría usar Finalterm.
Gracias por todas las excelentes respuestas chicos!
fuente
zsh
. Ofrece todo lo que está pidiendo y mucho más. Pasar de bash a zshRespuestas:
Si los comandos se usan con frecuencia, se registran en las pistas de bash del historial de comandos
.bash_history
.Ahora el truco: puede realizar una búsqueda inversa en este historial para volver a ejecutar comandos presionando CTRL-r .
En el modo de búsqueda de historial inverso, bash muestra, en vivo, mientras escribe , el comando más reciente en el historial que comienza con su entrada dada. Luego presione Intro para aceptar y ejecutar el comando propuesto. Siga presionando CTRL-R para pasar a los comandos más antiguos con el mismo prefijo.
Esto está integrado en bash, no es necesario personalizar scripts o instalar software :) Es una de las características más útiles de bash, en mi humilde opinión.
fuente
Pegue (Ctrl-Shift-V) lo siguiente en una pantalla de terminal:
Salga (Ctrl-D) de la pantalla de terminal, luego abra Terminal nuevamente.
Ahora puede escribir el primer par de caracteres, luego presionar Arriba o Abajo para desplazarse por la lista filtrada
fuente
Término final
Existe esta muy prometedora aplicación de terminal denominada Término final . Entre sus muchas características, también tiene un historial de recordar comandos, para que luego pueda seleccionarlo. Aquí hay algunas características más:
Puedes leer más sobre esto en este artículo .
Aquí está el sitio web de los creadores. http://finalterm.org/
Para instalarlo
Advertencia
He dicho que es prometedor. El único problema es que está en la versión 0.1. Así que algunas cosas como
vim
ynano
todavía no funcionan bien. También he notado que todavía no admite Arrastrar y soltar, y copiar y pegar. Pero tiene la función que solicita. A medida que el software madure, se convertirá en uno de los mejores terminales para el escritorio.Captura de pantalla
Aquí está la función en acción:
Espero que esto ayude.
* Estoy en Saucy, por eso tengo experiencia en Salamander :)
fuente
Use un
alias
para todo su comando, o agregue el directorio en su$PATH
. Además, no tiene que cambiar los directorios a donde debe ejecutar su ejecutable (o script, o lo que sea), por lo que es bastante simple. Ambos métodos requieren que reinicie el terminal que está utilizando antes de que los cambios surtan efecto.Aquí se explica cómo crear un
bash
alias
para su ejemplo (agregue la siguiente línea a su~/.bashrc
archivo):De esta manera, todo lo que necesita hacer es ingresar
runmyproject
al terminal donde sea que se encuentre, sin tener que especificar opciones / argumentos.Alternativamente, puede agregar su ruta de proyecto en su
$PATH
variable de entorno. Para hacerlo, agregue las siguientes líneas en su~/.bashrc
archivo:En este caso, aún deberá especificar sus opciones / argumentos para su ejecutable cuando lo ejecute.
fuente
Cuando me encuentro con frecuencia teniendo que cambiar a un directorio como este:
Solo haría esto una vez:
Y a partir de entonces, use:
Cuando se trata de:
Usaría la búsqueda del historial de bash. En el símbolo del sistema, simplemente presione Ctrl-R y escriba 'runmy'. Voila, todo el comando con todas las opciones tal como se ingresó por última vez está ahí para volver a ingresarlo. Si no me gustaran las opciones que utilicé la última vez y quisiera ver los comandos anteriores, seguiría presionando Ctrl-R para recorrer todos los comandos anteriores que contenían "runmy".
La búsqueda del historial Ctrl-R también podría ayudar con el comando 'cd', si no le gusta la idea del enlace simbólico. [Ctrl-R] / proj es muy probable que recupere el último comando que usó para cd a ese directorio.
En lugar de agregar un alias o cambiar a un shell especial, siempre prefiero aprender a usar las funciones de bash diseñadas para ayudar con este tipo de cosas. De esa manera puedo usar las mismas funciones en máquinas remotas o si tengo que sentarme en la terminal de un colega.
fuente
presione control + r en su teclado: lo pondrá en modo de historial inverso y puede escribir la parte que conoce y se mostrará todo el comando
Hay otras formas enumeradas aquí
http://www.talug.org/events/20030709/cmdline_history.html
Aunque tiendo a usar el control R más
fuente
Pruebe esto ... Esto funciona para todos los comandos en su archivo de historial ... es lo mismo que Ctrl+ R, pero creo que es más intuitivo :)
editar
/etc/inputrc
descomentar o agregar estas dos líneas
cerrar sesión / iniciar sesión
luego intente escribir algún comando listado en el historial ...
me gusta...
escribir
y presione
Page Upo Page Dnpara navegar a través de su archivo de historial en busca de comandos que comienzan con "ls"
Si hiciste todo bien, debería completar automáticamente tu comando ...
fuente