Activar marcas temporales en historial de comandos de Linux

Cuando se utilizan sistemas operativos basados en Linux, como caso característico en la empresa, es común tener que echar mano del bash history o historial de comandos del intérprete de comandos Bash.
Cuando algo malo sucede con un sistema informático, es necesario saber qué pasó y, para poder descartar un fallo humano (o un sabotaje premeditado) lo primero es saber qué estaba haciendo el usuario frente a la consola o terminal.
Ponerse a testear comandos sin saber lo que se hace, o probar a descargar programas a un servidor en producción es una pésima idea. Es mejor descargarte una máquina virtual o utilizar alguno de estos terminales Linux en linea.
Como ya sabrás (y si no, estás de suerte) existe un comando en sistemas Unix/Linux que nos permite recuperar un historial de comandos lanzados en la terminal, con una «memoria» que puede variar:
history
Dicho historial es, por defecto, de 500/1000 entradas o lineas (se puede modificar). Lo puedes ver de la siguiente forma.
echo $HISTSIZE

Como se puede ver, estos comandos no podemos saber si se lanzaron en un momento u otro, pero es posible si sigues leyendo.
Mostrar la fecha y hora en los comandos del Bash History
Es bastante simple, lo que tenemos que hacer es asignar el valor HISTTIMEFORMAT
como variable de entorno, seguido de un valor concreto para representar la información.
Aquí usaremos, por ejemplo, la opción %F para poder ver los días en formato AAAAMMDD y la variable %T para ver la hora en formato HH:mm:ss.
export HISTTIMEFORMAT='%F %T '

Aunque, como buenos europeos que somos, seguor preferimos utilizar el siguiente formato y así ver primero los días antes que los años.
export HISTTIMEFORMAT='%d/%m/%y %T '
El resultado será algo así:
490 06/05/21 17:28:54 htop
Veremos que todos los comandos tienen por defecto la misma fecha/hora, que es la que leerá la variable cuando activemos la opción. Con el paso del tiempo, se irán actualizando los time stamps correctamente.
Ajuste persistente
SI queremos que el ajuste se mantenga entre diferentes sesiones, tendremos que ejecutar lo siguiente para modificar nuestro archivo bash_profile. Ojo, son 2 comandos consecutivos a lanzar.
echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile source ~/.bash_profile
Podemos hacerlo también abriendo un editor de textos y añadiendo la linea a mano:
nano ~/.bashrc export HISTTIMEFORMAT='%d/%m/%y %T '
Ctrl + X seguido de Y para salvar los cambios.
Esto aplica a Bash, que es el intérprete más utilizado, pero existen otras opciones que tendrán su forma específica de hacerlo, por ejemplo, en Zsh sería con la opción:
history -E
Buscar eventos en el historial de Bash
Aparte del uso habitual del comando, podemos obtener resultados personalizados, siguiendo estos ejemplos.
Obtener los últimos N comandos
history | tail -20
O bien:
history 20
Por último, si queremos borrar todos los eventos registrados, usaremos:
history -c
Categories
deweloper View All
Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.
Muchas gracias Alejandro, me ha sido de mucha utilidad.
Saludos
Genial!