¿Cómo completo automáticamente un comando del historial de comandos?

¿Cómo completo automáticamente un comando del historial de comandos?

¿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:

  1. 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.

  1. 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á.

  2. 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.

  3. 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.

  1. Utilice el historycomando. 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 historyy canalizar la salida de un comando específico.

Por ejemplo, si ha estado cdrevisando 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.

información relacionada