Come visualizzare il timbro datetime per il comando della cronologia nella shell Zsh


34

Quando eseguo il comando history sul mio server Ubuntu, ottengo l'output come segue:

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

Voglio visualizzare il datetime di un determinato utente. Tuttavia quando li presumo:

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

Non mostra ancora datetime. Sto usando la shell zsh.

Risposte:


49

Credo che HISTTIMEFORMAT sia per shell Bash. Se stai usando, zshpuoi usare queste opzioni per il historycomando:

Esempi

$ 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

Se lo fai man zshoptionso man zshbuiltinspuoi trovare maggiori informazioni su questi interruttori e altre informazioni correlate history.

estratto dalla pagina man di 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.

Invocazione del debug

È possibile utilizzare i seguenti 2 metodi per eseguire il debug zshquando lo si richiama.

Metodo n. 1

$ zsh -xv

Metodo n. 2

$ zsh
$ setopt XTRACE VERBOSE

In entrambi i casi dovresti vedere qualcosa del genere quando si avvia:

$ 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

6
"evento non trovato: -i" "evento non trovato: -E". Devo caricare qualcosa in un file di configurazione prima di eseguire questi switch?
John Merlino,

1
Quale versione di zsh? zsh --version. Ho appena confermato su Ubuntu 12.10 che i comandi che ti ho dato hanno funzionato bene.
slm

17
@JohnMerlino Avevo zsh 4.3.10 (x86_64-unknown-linux-gnu) su un server per il quale volevo visualizzare la cronologia con i timestamp. Dopo aver guardato la zshbuiltinspagina man, ho scoperto che dovevo usare fc. Ciò che alla fine ha funzionato per me è stato fc -li. Puoi anche passare i numeri di comando a fc, quindi fc -li -100elenca gli ultimi 100 comandi nella tua cronologia.
Thomas Upton,

21
Devo usare \history -E, uso oh-my-zsh
juanpastas il

1
È un bug di vecchia data (6+ anni) con oh-my-zsh, vedi questo problema su github: github.com/robbyrussell/oh-my-zsh/issues/739
rococo

20

history -Eo history -iqualunque cosa NON funzioni per me.

zsh --versionlo dimostra zsh 4.3.6 (x86_64-suse-linux-gnu).

Quindi fc -li 100funziona! Mostra i recenti 100 comandi con data e ora :)


Grazie, ha funzionato anche per me, contrariamente alla risposta migliore. La mia versione è: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). E mentre sono qui: sai come ottenere l'aiuto del comando fc? Né man fcfc --helplavoro
exhuma

@exhuma perché non cercarlo su Google :)
Gab 是 好人

@Gab 是 好人 hai la storia aliasata? se si utilizza oh-my-zshil comando history è aggiungere il -lflag in una delle opzioni. vedi github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Mike D

1
fc -lfmostrerà un timestamp completo. Nota che questo funziona solo su zsh, non su bash.
dr01,

@exhuma In zsh, puoi usare run-help fc.
xuhdev,

4

Se si utilizza oh-my-zshaddon in zsh, history -Eo history -inon funzionerà (perché è alias a fc -l 1).

Come ha sottolineato @juanpastas, prova

\history -E

o

\history -i

o

fc -li 100


1
Ho appena aggiunto: 'alias history = "fc -li 1"' per ridefinire l'alias della cronologia nel mio file ~ / .zshrc e ora funziona come desiderato!
user886869

o ancora meglio: 'alias history = "history -i". In questo modo puoi eseguire lo stesso comando nell'alias e se vuoi aggiungere più chiavi / opzioni non è così confuso.
Dr Beco,
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.