Bash-Verlauf mit Zeitstempeln


14

Ich möchte Zeitstempel für die in meiner Bash $ HISTFILE protokollierten Befehle behalten. Ist das möglich?

Ich habe es nicht geschafft, es man bashals Informationsquelle einzurichten .

Meine anderen Optionen sind wie folgt:

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

Ich hätte erwähnen sollen, dass ich auf OS X Mountain Lion bin (seufz). uname -agibt mir:

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

und echo $BASH_VERSIONgibt mir:

3.2.48(1)-release

Versuchte dies hinzuzufügen:

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

und diese Art von Zeitstempeln wird nur den Befehlen vorangestellt:

#1349057791

Ich versuche, die Variable ( echo $HISTTIMEFORMAT) zurückzugeben, sie hat den richtigen Wert.

Interessant!

Ich habe sogar .profile komplett entfernt, um dies zu debuggen. Immer noch nur lustige Zeitstempel:

#1349058320

Ich weiß nicht, wie ich das weiter beheben soll ... :(

Lösung : Ich habe ein Skript verwendet, das die $ HISTFILE direkt liest, nicht den integrierten Verlauf, sodass der epochenbasierte Zeitstempel (Sekunden seit UTC (Coordinated Universal Time) vom 1. Januar 1970) nicht mit der Datumsformatierungszeichenfolge übersetzt wurde . Plain-old historyfunktioniert gut, ich werde das stattdessen verwenden.


2
Haben Sie versucht, Einstellungen vorzunehmen HISTTIMEFORMAT?
— Jw013

Wahrscheinlich verstehe ich das Strftime-Format falsch. Es wäre hilfreich, wenn die Manpage mindestens ein paar Beispiele enthalten würde. +% Y-% m-% d% H-% M-% S?
— Robottinosino

Antworten:


14

Ja, setzen Sie dies in ~/.bashrc:

export HISTTIMEFORMAT='%F %T '

Führen Sie dann die folgenden Befehle aus:

. ~/.bashrc
history

Es wird so aussehen:

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

Erläuterungen zur Ausgabe:

  • first col ist das Unikat id
  • Das zweite ist das Datum, das dritte die Stunde
  • Neueste ist Ihre Kommandozeile

3
Nein, funktioniert nicht unter OSX .. :( Wahrscheinlich ist das das Problem. Ein seltsames Betriebssystem.
— Robottinosino

Wissen Sie source ~/.bashrc?
— Gilles Quenot

Ich habe es definitiv getan. Es tut "etwas": Hinzufügen einer kommentierten Zeile vor dem Befehl mit einem numerischen Zeitstempel: # 1349057149
— Robottinosino

1
@Robottinosino Ja, die kommentierte Zeile entspricht dem erwarteten Format. Verwenden historySie zum Anzeigen der Befehle mit formatierter Zeit den integrierten Befehl und sehen Sie sich die Verlaufsdatei nicht direkt an.
— Jw013

1
Kann der Zeitstempel in der Verlaufsdatei mit HISTTIMEFORMAT aufgezeichnet werden? Ich benutze den historyBefehl nie , sondern benutze einen Texteditor, um die von mir gesuchten Befehle zu finden, und es wäre schön, wenn ich eine vom Menschen lesbare Datumsreferenz hätte.
— gegangen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.