Cronologia dei bash con timestamp


15

Vorrei mantenere i timestamp sui comandi registrati nel mio Bash $ HISTFILE, è possibile?

Non sono riuscito a configurarlo utilizzando man bashcome fonte di informazioni.

Le mie altre opzioni sono le seguenti:

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

Avrei dovuto menzionare che sono su OS X Mountain Lion (sospiro). uname -ami 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

e echo $BASH_VERSIONmi dà:

3.2.48(1)-release

Ho provato ad aggiungere questo:

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

e antepone solo questo tipo di timestamp ai comandi:

#1349057791

Provo a riecheggiare la variabile ( echo $HISTTIMEFORMAT), ha il giusto valore.

Interessante!

Ho persino rimosso completamente .profile per eseguire il debug di questo. Ancora solo timestamp divertenti:

#1349058320

Non so come risolvere ulteriormente questo ... :(

Soluzione : stavo usando uno script che legge direttamente $ HISTFILE, non la cronologia incorporata, quindi il timestamp basato sull'epoca (secondi dall'orario coordinato universale (UTC) del 1 gennaio 1970) non veniva tradotto usando la stringa di formattazione della data . Il vecchio historyfunziona perfettamente, lo userò invece.


2
Hai provato a impostare HISTTIMEFORMAT?
jw013

Probabilmente sto sbagliando il formato strftime. Sarebbe utile se la pagina man includesse almeno un paio di esempi. +% Y-% m-% d% H-% M-% S?
Robottinosino,

Risposte:


15

Sì, inseriscilo in ~/.bashrc:

export HISTTIMEFORMAT='%F %T '

Quindi, esegui i seguenti comandi:

. ~/.bashrc
history

Sarà simile a questo:

 (...)
 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
 (...)

Spiegazioni dell'output:

  • il primo passo è unico id
  • la seconda è la data, la terza è l'ora
  • ultima è la tua riga di comando

3
No, non funziona su OSX .. :( Probabilmente questo è il problema. Uno strano sistema operativo.
Robottinosino,

Tu source ~/.bashrc?
Gilles Quenot

L'ho sicuramente fatto. Sta facendo "qualcosa": l'aggiunta di una riga commentata prima del comando con un timestamp numerico: # 1349057149
Robottinosino

1
@Robottinosino Sì, la riga commentata è il formato previsto. Per visualizzare i comandi con tempo formattato, utilizzare il historycomando incorporato, non guardare direttamente il file della cronologia.
jw013,

1
È possibile avere il timestamp nel file della cronologia registrato utilizzando HISTTIMEFORMAT? Non uso mai il historycomando, invece uso un editor di testo per trovare i comandi che sto cercando e sarebbe bello avere un riferimento alla data leggibile dall'uomo.
andato il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.