¿Existe una combinación de teclas para que bash compita automáticamente un comando del historial? En ipython y matlab, por ejemplo, esto se logra presionando la flecha hacia arriba después de escribir algunos caracteres.
Respuesta1
En primer lugar, presionar tabbash es aún mejor ya que completa automáticamente todos los ejecutables en su RUTA independientemente de si están en el historial. Dicho esto, hay varias formas de obtener un comando de tu historial:
Usa su número. Si sabe que el comando que desea fue hace 3 comandos, simplemente puede ejecutar
!-3
Eso volverá a ejecutar el comando que ejecutó hace tres comandos.
Buscalo. Escribe Ctrlry comienza a escribir cualquier texto. Se mostrará el primer comando del historial que coincida con su texto y al presionarlo enterse ejecutará.
Pulsa ▲(flecha hacia arriba). Aparecerá el último comando, presiónelo nuevamente y accederá a su historial de comandos. Cuando encuentres el que buscas, presiona enter.
Agregue estas líneas a su
~/.inputrc
(crea el archivo si no existe):"\e[A": history-search-backward "\e[B": history-search-forward
Para cargar inmediatamente el archivo, ejecute bind -f ~/.inputrc
(fuente). Ahora, escriba los primeros caracteres de uno de los comandos que ejecutó anteriormente y presione ▲. Se mostrará el primer comando de tu historial que comience con esos caracteres. Vuelve a pulsar ▲para ver el resto y pulsa entercuando hayas encontrado el que deseas.
- Utilice el
history
comando. Como explicó @Isaac, eso enumerará todos los comandos almacenados en su archivo de historial.
Respuesta2
Puede verificar la posición del comando en la secuencia del historial con el comando history
. Entonces puedes ejecutar !<number_in_the_sequence>
. Espero que eso ayude.
Respuesta3
También puede utilizar history
y canalizar la salida de un comando específico.
Por ejemplo, si ha estado cd
revisando todo el sistema de archivos todo el día y sólo necesita un recordatorio de en qué directorios se trabajó
history | grep cd
Luego puede copiar/pegar el comando o !n
(donde n es el número de línea en el archivo histórico) volver a ejecutarlo.