Anzeigen des Datum / Uhrzeit-Stempels für den Verlaufsbefehl in der Zsh-Shell

34

Wenn ich den Befehl history auf meinem Ubuntu-Server ausführe, wird Folgendes ausgegeben:

   history
   ...
   25  cd ~
   26  ls -a
   27  vim /etc/gitconfig
   28  vim ~/.gitconfig

Ich möchte die Datumszeit eines bestimmten Benutzers anzeigen. Wenn ich sie jedoch annehme:

su otheruser
export HISTTIMEFORMAT='%F %T  '
history
...
25  cd ~
26  ls -a
27  vim /etc/gitconfig
28  vim ~/.gitconfig

Es zeigt immer noch keine Datums- / Uhrzeitangabe. Ich benutze zsh Shell.

JohnMerlino
quelle

Antworten:

49

Ich glaube das HISTTIMEFORMAT ist für Bash Shells. Wenn Sie verwenden, können zshSie diese Schalter für den historyBefehl verwenden:

Beispiele

$ history -E
    1   2.12.2013 14:19  history -E

$ history -i
    1  2013-12-02 14:19  history -E

$ history -D
    1  0:00  history -E
    2  0:00  history -i

Wenn Sie a man zshoptionsoder tun, erhalten man zshbuiltinsSie weitere Informationen zu diesen Schaltern sowie weitere Informationen zu history.

Auszug aus der Manpage von zshbuiltins

Also when listing,
  -d     prints timestamps for each command
  -f     prints full time-date stamps in the US `MM/DD/YY hh:mm' format
  -E     prints full time-date stamps in the European `dd.mm.yyyy hh:mm' format
  -i     prints full time-date stamps in ISO8601 `yyyy-mm-dd hh:mm' format
  -t fmt prints time and date stamps in the given format; fmt is formatted 
         with the strftime function with the  zsh extensions described for 
         the %D{string} prompt format in the section EXPANSION OF PROMPT 
         SEQUENCES in zshmisc(1).  The resulting formatted string must be no 
         more than 256 characters or will not be printed.
  -D     prints elapsed times; may be combined with one of the options above.

Debugging-Aufruf

Sie können die folgenden 2 Methoden zum Debuggen verwenden, zshwenn Sie es aufrufen.

Methode 1

$ zsh -xv

Methode # 2

$ zsh
$ setopt XTRACE VERBOSE

In beiden Fällen sollten Sie beim Start so etwas sehen:

$ zsh -xv
#
# /etc/zshenv is sourced on all invocations of the
# shell, unless the -f option is set.  It should
# contain commands to set the command search path,
# plus other important environment variables.
# .zshenv should not contain commands that produce
# output or assume the shell is attached to a tty.
#

#
# /etc/zshrc is sourced in interactive shells.  It
# should contain commands to set up aliases, functions,
# options, key bindings, etc.
#

## shell functions
...
...
unset -f pathmunge _src_etc_profile_d
+/etc/zshrc:49> unset -f pathmunge _src_etc_profile_d

# Created by newuser for 4.3.10
slm
quelle
6
"Ereignis nicht gefunden: -i" "Ereignis nicht gefunden: -E". Muss ich etwas in eine Konfigurationsdatei laden, bevor ich diese Schalter ausführe?
JohnMerlino
1
Welche Version von zsh? zsh --version. Ich habe gerade unter Ubuntu 12.10 bestätigt, dass die Befehle, die ich dir gegeben habe, einwandfrei funktionieren.
slm
17
@ JohnMerlino Ich hatte zsh 4.3.10 (x86_64-unknown-linux-gnu) auf einem Server, für den ich den Verlauf mit Zeitstempeln anzeigen wollte. Nachdem zshbuiltinsich die Manpage durchgesehen hatte , stellte ich fest, dass ich sie verwenden musste fc. Was schließlich für mich gearbeitet hat, war fc -li. Sie können auch Befehlsnummern übergeben fc, um fc -li -100die letzten 100 Befehle in Ihrem Verlauf aufzulisten.
Thomas Upton
21
Ich muss verwenden \history -E, ich verwende oh-my-zsh
juanpastas
1
Es ist ein langjähriger (6+ Jahre) Fehler mit oh-my-zsh finden Sie in dieses Thema auf GitHub: github.com/robbyrussell/oh-my-zsh/issues/739
Rokoko
20

history -Eoder history -ioder was auch immer funktioniert NICHT bei mir.

zsh --versionzeigt das zsh 4.3.6 (x86_64-suse-linux-gnu).

Dann fc -li 100klappt das! Es zeigt die letzten 100 Befehle mit Zeitstempel :)

Gab 是 是
quelle
Danke, das hat auch bei mir geklappt, entgegen der Top-Antwort. Meine Version ist: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). Und während ich hier bin: Weißt du, wie du die Hilfe des Befehls bekommst fc? Weder man fcnoch fc --helpArbeit
exhuma
@exhuma warum nicht googeln :)
Gab Gab 好人
@Gab 是 好人 Hast du einen Alias ​​in der Geschichte? Wenn Sie oh-my-zshden Befehl history verwenden, fügen Sie das -lFlag in eine der Optionen ein. Siehe github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Mike D
1
fc -lfzeigt einen vollen Zeitstempel. Beachten Sie, dass dies nur auf zsh funktioniert, nicht auf bash.
dr01
@exhuma In zsh können Sie verwenden run-help fc.
Xuhdev
4

Wenn Sie mit oh-my-zshAdd - on in zsh, history -Eoder history -inicht funktionieren (weil es aliased zu fc -l 1).

Versuchen Sie es, wie @juanpastas betonte

\history -E

oder

\history -i

oder

fc -li 100

alpha_989
quelle
1
Ich habe gerade hinzugefügt: 'alias history = "fc -li 1"', um den Verlaufsalias in meiner ~ / .zshrc-Datei neu zu definieren, und es funktioniert jetzt wie gewünscht!
user886869
oder noch besser: 'alias history = "history -i". Auf diese Weise können Sie denselben Befehl im Alias ​​ausführen, und wenn Sie weitere Schlüssel / Optionen hinzufügen möchten, ist dies nicht so verwirrend.
Dr. Beco