Tutorial de comandos de historia de Linux para principiantes (8 ejemplos)

Si tu trabajo implica la ejecución de herramientas y scripts en la línea de comandos de Linux, seguro que hay un montón de comandos que ejecutarías cada día. Aquellos que sean nuevos en la línea de comandos deben saber que existe una herramienta -llamada historial- que te da una lista de comandos que has ejecutado anteriormente.

En este tutorial, hablaremos de los fundamentos del comando historial utilizando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí han sido probados en una máquina Ubuntu 16.04LTS.

El comando historia de Linux

Si sabes cómo utilizar eficazmente el historial de tu línea de comandos, puedes ahorrar mucho tiempo en el día a día. A continuación se presentan algunos ejemplos de estilo Q&A que deberían darte una buena idea de cómo puedes utilizar el comando historial en tu beneficio.

Q1. ¿Cómo funciona el comando historial?

El uso básico es sencillo: sólo tienes que ejecutar el comando «historial».

history

Cómo funciona el comando historia

Así podrás ver que tus comandos ejecutados anteriormente se muestran en la salida. Ten en cuenta que he utilizado el comando ‘more‘ para asegurarme de que la visualización de la salida se detiene en la primera página (la salida completa de ‘history’ suele ser muy larga).

Q2. ¿Cómo hacer que el historial muestre también la fecha y la hora?

Si quieres que el comando «historial» muestre la fecha y la hora de ejecución de cada comando, puedes hacerlo exportando la variable HISTTIMEFORMAT de la siguiente manera:

export HISTTIMEFORMAT="%F %T: "

Eso es todo. Ahora, cuando ejecutes el comando «historial», verás la información de la fecha y la hora en la salida.

Cómo hacer que el historial muestre también la fecha y la hora

En caso de que veas que la fecha y la hora son las mismas para todos los comandos, la siguienteexplicación debería aclarar las cosas:

If you set the HISTTIMEFORMAT in bash your new entries get stored in the history file with a 
timestamp, older commands that don't have a timestamp (those before you ever set HISTTIMEFORMAT
will display one and the same date-time-stamp (I assume the one from the first entry found with a
real timestamp).

This problem should solve itself after your complete history has been updated in a few days.

You can look in ~/.bash_history to see what is the first line that has a date-time-stamp.
Those are lines starting with a # followed by a (currently) 10 digit number.

Q3. ¿Cómo hacer que el historial deje de registrar los comandos?

Si se da una situación en la que no quieres que el sistema guarde el historial de tus comandos, puedes hacerlo utilizando la variable HISTSIZE. Sólo tienes que exportarla con un valor de cero, y ya está.

Mira el siguiente ejemplo:

Cómo hacer que el historial deje de registrar comandos

Como puedes ver, ejecutar el comando «historial» ahora no ha producido ningún resultado.

Ten en cuenta que también hay una variable HISTFILESIZE.Ésta es la diferencia entre ambas:

HISTSIZE is the number of lines or commands that are stored in memory in a history list while your 
bash session is ongoing.

HISTFILESIZE is the number of lines or commands that (a) are allowed in the history file at startup
time of a session, and (b) are stored in the history file at the end of your bash session for use in
future sessions.

Q4. ¿Cómo hacer que el historial no registre un solo comando?

Esto se puede hacer ajustando la variable HISTCONTROL a ‘ignorespace’. Esto lo puedes hacer de la siguiente manera:

export HISTCONTROL=ignorespace

Ahora, cada vez que ejecutes un comando que no quieras que se registre en el historial, sólo tienes que ejecutarlo con un espacio inicial.

Q5. ¿Cómo realizar una búsqueda rápida en el historial?

Por supuesto, puedes utilizar el comandogrep para buscar palabras clave o comandos específicos en la salida producida por el comando historial. Sin embargo, también existe un método mucho más rápido: la búsqueda inversa.

Es bastante fácil: todo lo que tienes que hacer es pulsar CTRL+R mientras estás en la línea de comandos, y verás que tu prompt se convierte en algo así:

Ahora escribe la palabra clave que quieres buscar, y verás las sugerencias coincidentes del historial a la derecha. Por ejemplo, yo escribí «man» (sin comillas), y el primer resultado que obtuve fue «man apropos».

Si no es lo que buscas, puedes obtener el siguiente resultado coincidente pulsando de nuevo CTRL+R. En mi caso, el siguiente resultado que obtuve fue ‘man find search’.

Puedes seguir buscando de esta manera. Una vez que obtengas el resultado que deseas, pulsa la tecla de flecha derecha y obtendrás el comando completo en tu prompt.

Así que ahora puedes ejecutar este comando, o utilizarlo como quieras.

Q6. ¿Cómo ejecutar el comando anterior?

Hay dos formas sencillas de ejecutar el último comando ejecutado: pulsar CTRL+P, o ejecutar el siguiente comando:

!!

¿No crees (especialmente la segunda forma)? Pruébalo.

Si lo que necesitas es ejecutar rápidamente el penúltimo comando, puedes hacerlo de la siguiente manera:

!-1

Y así sucesivamente.

Q7. ¿Cómo hacer que el historial ignore las entradas duplicadas en la salida?

Para ello, establece la variable HISTCONTROL variable «ignorar» y «borrar». Puedes hacerlo de la siguiente manera:

echo HISTCONTROL=ignoreboth:erasedups

Ahora, cuando ejecutes el comando del historial, la salida no contendrá duplicados.

Q8. ¿Cómo borrar el historial?

Si quieres borrar el historial existente para poder empezar de nuevo, utiliza la opción de línea de comandos -c.

history -c

Conclusión

Seguramente estarás de acuerdo en que el historial es un comando muy importante que debes conocer. En este tutorial, hemos hablado de varios consejos/trucos importantes para sacar el máximo partido a esta herramienta. Una vez que los hayas practicado, dirígete a lapágina man de la herramienta para obtener más información.

También te podría gustar...