Navegar el historial

Todos estos comandos que fuimos ejecutando a lo largo del taller se guardan en un historial y esto tiene múltiples beneficios:

  • En el caso de que haya habido una falla, poder ver cuales fueron los últimos comandos que se ejecutaron en esa terminal para poder analizar cuál pudo haber ocasionado el problema (si es que fue por la ejecución de un comando)

  • Para comandos más complejos, poder recuperar exactamente la misma sintaxis utilizada de manera sencilla. Esto es particularmente útil cuando se usan comandos que requieren una configuración específica (por ejemplo, ssh a una determinada IP)

Veamos como manejar esta funcionalidad.

Acceder al historial

Para visualizar el historial de nuestra terminal contamos con el comando history.

[vkmc@amaterasu ~]$ history
(...)
629 vim cat
630 head cat
631 head -3 cat
632 tail -2 cat
633 cat cat
634 more
635 more --help
636 man less
637 man more
638 cat /var/log/
639 ls /var/log/
640 more /var/log/dnf.log
641 man more
642 more /var/log/dnf.log
643 man more
644 more /var/log/dnf.log
645 less /var/log/dnf.log
646 man less
647 less /var/log/dnf.log
648 man less
649 man tail
650 history

Para simplificar un poco les muestro las últimas líneas de mi history. Como ven, tengo varias entradas. La primer columna corresponde al número identificador del comando y la segunda al comando en si mismo.

El historial se guarda en un archivo de configuración que tenemos oculto en su directorio /home, .bash_history.

ACTIVIDAD. Localicen el archivo .bash_history y vean las últimas 5 líneas del mismo (pista: usando tail)

Ejecutar comandos del historial

Una vez que sabemos el comando que queremos ejecutar, directamente podemos ejecutarlo tipeando !<numero-comando>. Por ejemplo:

[vkmc@amaterasu ~]$ history
(...)
633 cat cat
(...)
[vkmc@amaterasu ~]$ !633
cat cat
/|_
/ ,\
.-' _,'
/ _ |
/ )_ |
,=='`.____)_)

Como ven, se indica en la primer línea el comando que se ejecuta (cat cat) y luego se ejecuta el mismo.

Hay algunos atajos también. Si queremos ejecutar el último comando ejecutado, lo podemos hacer con !!. Veamoslo:

[vkmc@amaterasu ~]$ !!
cat cat
/|_
/ ,\
.-' _,'
/ _ |
/ )_ |
,=='`.____)_)

Y también tenemos un atajo que nos permite buscar un determinado string. Con !<string> buscamos la ejecución más reciente de un comando que contiene una determinada cadena. Por ejemplo,

[vkmc@amaterasu ~]$ history
(...)
652 echo $HISTSIZE
653 ls -la
654 cat .bashrc
655 cat .bash_profile
656 history
657 ls -la
658 cat cat
659 history
[vkmc@amaterasu ~]$ !cat
cat cat
/|_
/ ,\
.-' _,'
/ _ |
/ )_ |
,=='`.____)_)

Hay muchos otros atajos que pueden ver, pero estos son tal vez lo que les van a dar mayor utilidad cuando interactúen con el historial.