Historial de Bash con marcas de tiempo

15

Me gustaría mantener marcas de tiempo en los comandos registrados en mi Bash $ HISTFILE, ¿es posible?

No logré configurarlo usando man bashcomo fuente de información.

Mis otras opciones son las siguientes:

function thebanana() {
  local -r -a bash_commands=(
    "ls"
    # ... more coconut commands
  )
  for bash_command in "${bash_commands[@]}"; do
    printf "${bash_command}"
    printf ":"
  done
}
export HISTFILE=banana
export HISTIGNORE="$(thebanana)"
export HISTSIZE=999999
export HISTFILESIZE=999999999
export HISTCONTROL=ignoredups:erasedups

Debería haber mencionado que estoy en OS X Mountain Lion (suspiro). uname -ame da

Darwin CoconutMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

y echo $BASH_VERSIONme da

3.2.48(1)-release

Intenté agregar esto:

export HISTTIMEFORMAT='%b %d %I:%M:%S %p '

y solo antepone este tipo de marcas de tiempo a los comandos:

#1349057791

Intento repetir la variable ( echo $HISTTIMEFORMAT), tiene el valor correcto.

¡Interesante!

Incluso eliminé .profile por completo para depurar esto. Todavía solo marcas de tiempo divertidas:

#1349058320

No sé cómo solucionar este problema ... :(

Solución : Estaba usando un script que lee el $ HISTFILE directamente, no el historial incorporado, por lo que la marca de tiempo basada en la época (segundos desde el Tiempo Universal Coordinado (UTC) del 1 de enero de 1970) no se tradujo utilizando la cadena de formato de fecha . Simple historyfunciona bien, lo usaré en su lugar.

Robottinosino
fuente
2
¿Has intentado configurar HISTTIMEFORMAT?
jw013
Probablemente estoy obteniendo el formato de strftime incorrecto. Sería útil que la página del manual incluyera al menos un par de ejemplos. +% Y-% m-% d% H-% M-% S?
Robottinosino

Respuestas:

15

Sí, pon esto en ~/.bashrc:

export HISTTIMEFORMAT='%F %T '

Luego, ejecute los siguientes comandos:

. ~/.bashrc
history

Se verá así:

 (...)
 5200  2012-09-30 23:55:37 find -printf '%Ts %f\n'
 5201  2012-10-01 00:00:58 ls
 5202  2012-10-01 00:03:45 cd
 (...)

Explicaciones de la salida:

  • primer col es el único id
  • el segundo es la fecha, el tercero es la hora
  • lo último es tu línea de comando
Gilles Quenot
fuente
3
No, no funciona en OSX .. :( Prob ese es el problema. Un sistema operativo extraño.
Robottinosino
¿Lo hiciste source ~/.bashrc?
Gilles Quenot
Definitivamente lo hice. Está haciendo "algo": agregar una línea comentada antes del comando con una marca de tiempo numérica: # 1349057149
Robottinosino
1
@Robottinosino Sí, la línea comentada es el formato esperado. Para mostrar los comandos con hora formateada, use el historycomando incorporado, no mire directamente el archivo de historial.
jw013
1
¿Es posible tener la marca de tiempo en el archivo de historial grabado con HISTTIMEFORMAT? Nunca uso el historycomando, en su lugar uso un editor de texto para encontrar los comandos que estoy buscando, y sería bueno tener una referencia de fecha legible por humanos.
desapareció el