Historial de comandos

Accediendo a comandos anteriores


Al trabajar con la terminal, estamos continuamente escribiendo comandos, por lo que lo ideal es tener formas rápidas de volver a escribir comandos anteriores de forma instantánea, o incluso buscarlos. Existe una serie de comandos, atajos y combinaciones de teclas para hacer esta tarea mucho más sencilla.

La tecla arriba [↑]

Probablemente, la forma más sencilla de recuperar un comando escrito anteriormente es pulsar la tecla o cursor (arriba). Esto recuperará la linea escrita anteriormente, de forma que con (arriba) vamos hacia atrás en el historial de comandos anteriores y con (abajo) podemos avanzar e ir hacia adelante en dicho historial.

Autocompletado con TAB

Otro consejo muy útil es el de pulsar la tecla TAB para autocompletar los comandos o rutas que escribimos en la consola. Por ejemplo, si escribimos cd /h e inmediatamente después pulsamos TAB el sistema autocompletará a cd /home porque es la única opción disponible.

$ cd /etc/r
rc1.d/       rc3.d/       rc5.d/       rcS.d/       rsyslog.d/   rc0.d/
rc2.d/       rc4.d/       rc6.d/       resolvconf/  runit/

Como puedes ver, en el caso de que hubieran varias carpetas disponibles que empiecen por la letra indicada, al pulsar TAB, se nos mostrarán todas las opciones disponibles, permitiéndonos escribir algunos carácteres más para resolver la ambiguedad y poder autocompletar nuevamente al volver a pulsar TAB.

Saltar entre fragmentos

En algunas ocasiones, puedes que tengas comandos de terminal que sean muy largos y que tengan varios parámetros. Con las flechas de izquierda y derecha puedes moverte sin borrar el texto, pero a veces queremos desplazarnos de forma más rápida.

Pulsando la combinación de teclas CTRL + o CTRL + , podemos saltar rápidamente de un fragmento a otro, saltándo entre palabras o carácteres especiales, lo que suele ser mucho más cómodo en ciertas situaciones.

$ ffmpeg -i video.mp4 -ss 1:30 -to 4:50

Por ejemplo, en este comando de ejemplo, si estamos situados al final del todo el texto y pulsamos la combinación de teclas CTRL + , saltamos al 5, luego al 4, luego al t, y así sucesivamente. Normalmente salta entre palabras (espacios), pero al usar carácteres especiales como :, . o -, también los tiene en cuenta.

Consultar el historial

Si no recuerdas bien el comando que necesitas, lo mejor sería examinar el historial cuidadosamente, en buscar del comando que interesa. Para ello, utilizaremos el comando history.

Escribiendo history mostraremos un listado con los últimos comandos, donde el número más pequeño es el comando más antiguo, y el número más grande, el comando más reciente:

$ history

1 clear
2 ls -l
3 cd /home/manz
4 cat index.html
5 cd /var/www/html

Sabiendo esto, tenemos algunos trucos interesantes:

  • !4 Ejecuta el comando número 4. En este caso, cat index.html.
  • !cd Ejecuta el último comando que empieza por cd. En este caso, cd /var/www/html.
  • !cd:p Recupera el último comando que empieza por cd, pero sin ejecutarlo.

Si al comando history le indicamos un guión seguido de un número, se nos mostrarán sólo los últimos comandos en la cantidad indicada. Por ejemplo:

# Últimos 2 comandos
history -2

50 man ls
51 cd /etc

Obviamente, ese 2 podemos cambiarlo por el número de comandos que nos interesen.

Sin embargo, si hemos escrito muchos comandos, es posible que nos lleve mucho tiempo encontrarlo pulsando la tecla . Para evitar esto, y si recordamos parte del comando, podemos pulsar la combinación de teclas Ctrl+R y nos aparecerá un mensaje como el siguiente:

(reverse-i-search)`':

Ahora, solo tenemos que escribir la parte del comando que buscamos, y nos irá apareciendo comandos anteriores que coincidan con lo escrito.

Atajos rápidos

Existen ciertos atajos rápidos que pueden ser muy interesantes para realizar acciones frecuentes, como por ejemplo los comandos especiales !! o !$.

Si queremos volver a ejecutar el último comando que escribimos por última vez, podemos simplemente utilizar el comando rápido !!:

$ cat /home/manz/hello.txt
Hola amigos míos

$ !!
Hola amigos míos

Observa que se ha ejectado el comando anterior, ya que vuelve a mostrar la salida del comando que escribimos antes. De la misma forma que !! vuelve a ejecutar el último comando, con !!:p se muestra el comando, pero no se ejecuta.

La mayoría de estos atajos, al añadirle al final :p, recupera el comando sin llegarlo a ejecutar.

Por otro lado, !$ ejecuta el último argumento del último comando:

$ cat /home/manz/hello.txt
Hola amigos míos

$ ls -lh !$
-rw-r--r--  1 manz  manz   34B Jun 20 15:36 /home/manz/hello.txt

Observa que ls -lh !$ en este caso sería equivalente a ejecutar ls -lh /home/manz/hello.txt.

Saltarse el historial

Si quieres ejecutar un comando y que no se guarde en el historial, basta con añadir un espacio antes del comando a ejecutar. Se ejecutará igualmente, pero no se guardará en el historial. Esto puede ser especialmente interesante si tienes que escribir una contraseña o datos que no quieres que queden registrados en el historial.

Borrar el historial

Si queremos vaciar y borrar el historial, podemos ejecutar el siguiente comando:

$ history -c

Ahora, si nuevamente escribimos history para consultar el historial, no mostrará nada porque está vacío. Empezará a registrar comandos a partir de este momento.

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev