¿Cómo ver las marcas de tiempo en la historia de bash?

259

¿Hay alguna manera de ver a qué hora se ejecutaron los comandos desde el historial de bash? Podemos ver el pedido, pero ¿hay alguna forma de que también pueda obtener el tiempo?

Conclusión: tiempo de ejecución en el historial de Bash

rɑːdʒɑ
fuente
77
Estoy sorprendido de lo poco documentado que está esto tanto en Linux como en BSD en las páginas de manual.
Sridhar Sarnobat
Mira este blog: sanctum.geek.nz/arabesque/better-bash-history .
abhicantdraw
44
si estás usando zsh:history -E
Vahid
44
No estoy seguro de por qué dos respuestas a continuación sienten la necesidad de decirle cómo abrir una terminal ..
mwfearnley
2
Según el blog al que hace referencia @ dog0, la marca de tiempo aparentemente no se guarda a menos que la HISTTIMEFORMATvariable se haya configurado cuando se emitieron los comandos. En otras palabras, si no lo configuró, configurarlo ahora no lo ayudará a recuperar las marcas de tiempo de los comandos emitidos anteriormente.
Tomislav Nakic-Alfirevic

Respuestas:

318

Presione Ctrl+ Alt+ Tpara abrir la Terminal, luego ejecute el siguiente comando:

HISTTIMEFORMAT="%d/%m/%y %T "

O, para que el cambio sea permanente para el usuario actual:

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc

Entonces

history

Para obtener más información, consulte man bash o An AZ Index de la línea de comando Bash para Linux .

Para los comandos que se ejecutaron antes, HISTTIMEFORMAT se estableció la hora actual como la marca de tiempo. Los comandos que se ejecuten después de HISTTIMEFORMATestablecerse tendrán la marca de tiempo adecuada guardada.

Mitch
fuente
77
¿Por qué declararlo con exportin .bash_profile? Es una variable que solo se lee bash, no mediante comandos lanzados desde ella, por lo que no debe exportarse.
Alvaro Gutierrez Perez
71
Tenga en cuenta que esto solo registrará las marcas de tiempo para los nuevos elementos del historial , después de que HISTTIMEFORMATesté configurado para las sesiones, es decir, no puede usar esto retrospectivamente. Algunas respuestas aquí dan la impresión de que el comando de historial muestra inmediatamente las entradas con marca de tiempo
Louis Maddox
10
@Louis - ¡¿En realidad esto funcionó para mí retroactivamente para mí?!?!
stephenmm
19
@Jamil: para las personas que siguen los estándares ISO, es "% y-% m-% d" para la parte de la fecha;)
Gauthier
13
@Gauthier: en realidad, solo use% F para la fecha ISO ;-) man7.org/linux/man-pages/man3/strftime.3.html
brianmearns
73

Abra la terminal Ctrl+ Alt+ Ty ejecute,

HISTTIMEFORMAT="%d/%m/%y %T "

entonces,

history

Para hacer los cambios permanentes, siga los pasos a continuación,

gedit ~/.bashrc

necesita agregar la siguiente línea al archivo .bashrc y luego guardarlo,

export HISTTIMEFORMAT="%d/%m/%y %T "

ejecuta el siguiente comando para obtener el archivo .bashrc,

source ~/.bashrc

Después de ese historycomando de ejecución .

ingrese la descripción de la imagen aquí

fuente : http://www.cyberciti.biz/faq/unix-linux-bash-history-display-date-time/

Avinash Raj
fuente
Gracias por responder, ¿será un cambio permanente?
rɑːdʒɑ
1
Hola, estoy haciendo esto en OS X y Windows (a través de MINGW), y lo estoy agregando a .bash_profile, ¿cuál es la diferencia entre profile y rc?
LasagnaAndroid
18

Sí, puedes: si lo configuras $HISTTIMEFORMAT, se .bash-historymarcará correctamente la hora. Eso no ayuda con el .bash-historycontenido existente , pero ayudará en el futuro.

Dennis Kaarsemaker
fuente
1
¿Puedes ampliarlo para mayor claridad?
rɑːdʒɑ
55
Corrección a la publicación anterior: la configuración de HISTTIMEFORMAT permite la visualización de las marcas de tiempo ... incluso las existentes. Mi favorito es: HISTTIMEFORMAT = '% F% T', ya que no importa de qué país residas ... todo el mundo sabe de inmediato qué hora es. :)
44
Configuré $ HISTTIMEFORMAT y obtuve los tiempos de hoy incluso antes de los comandos de este conjunto.
Yasin Okumuş
@ user491029 "... incluso existente". Esto es cierto, pero engañoso. En ubuntu 14.04, al menos, comenzó a mostrar marcas de tiempo para todas las entradas del historial una vez que configuré HISTTIMEFORMAT, pero parece que las marcas de tiempo para cualquier comando ejecutado antes de la sesión actual fueron la marca de tiempo de inicio de sesión de la sesión actual.
jbobbins
1

Verá cambios en el próximo inicio de sesión.

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
DimiDak
fuente
0

Para habilitar las marcas de tiempo del historial para todos los usuarios, cree un script en /etc/profile.d:

echo 'HISTTIMEFORMAT="%Y%m%d %T "' >> /etc/profile.d/timestamp.sh
iii
fuente
1
Es probable que esto no funcione para los usuarios que inician sesión a través de la GUI, ya que el terminal predeterminado no ejecutará shells de inicio de sesión. /etc/bash.bashrcSería un lugar mejor.
muru
0

Lo sé, lo estoy respondiendo muy tarde, pero para hacer esto para todos los usuarios, puede crear cualquier .sharchivo /etc/profile.dy agregarle la siguiente línea:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' >> /etc/profile.d/existing-foo-file.sh

Si no inició sesión como rooto superusuario, debe usar el teecomando para hacer esto:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee /etc/profile.d/mytimestamp.sh

Si desea agregar a cualquier archivo existente, pase la -abandera al teecomando:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee -a /etc/profile.d/mytimestamp.sh

ingrese la descripción de la imagen aquí

Shashank Agrawal
fuente
Hola Shashank, gracias por agregar la respuesta, pero ¿en qué se diferencia esta respuesta de otras? Si su respuesta es completamente diferente, nos complace tenerla, pero si no, puede mejorar las respuestas existentes.
Jue
Hola, gracias por comentar. Esto es diferente de los demás de la siguiente manera: 1. Algunos de ellos han mencionado la creación para todos los usuarios, pero nadie mencionó la creación / explicación de ningún nombre de archivo /etc/profile.d. timestamp.shparece muy técnico (por lo que crea confusión), así que usé el nombre existing-foo-file.sh(concepto foo-bar). 2. Nadie ha mencionado su uso con usuarios no root. Así que he dado un ejemplo de uso sudo. 3. El tercer ejemplo mejora el segundo ejemplo de agregar a un archivo existente. Como los principiantes de Linux / Unix pueden llegar a este problema, elaboré.
Shashank Agrawal