Comment afficher l'horodatage pour la commande d'historique dans le shell Zsh

34

Lorsque j'exécute la commande history sur mon serveur Ubuntu, la sortie est la suivante:

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

Je veux voir la date et l'heure d'un utilisateur particulier. Cependant quand je les assume:

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

Il ne montre toujours pas la date et l'heure. J'utilise zsh shell.

JohnMerlino
la source

Réponses:

49

Je crois que le HISTTIMEFORMAT est pour les coquilles Bash. Si vous utilisez, zshvous pouvez utiliser ces commutateurs pour la historycommande:

Exemples

$ 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

Si vous faites un man zshoptionsou man zshbuiltinsvous pouvez trouver plus d'informations sur ces commutateurs ainsi que d'autres informations liées à history.

extrait de la page de manuel 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.

Invocation de débogage

Vous pouvez utiliser les 2 méthodes suivantes pour déboguer zshlorsque vous l'appelez.

Méthode n ° 1

$ zsh -xv

Méthode n ° 2

$ zsh
$ setopt XTRACE VERBOSE

Dans les deux cas, vous devriez voir quelque chose comme ceci au démarrage:

$ 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
la source
6
"événement introuvable: -i" "événement introuvable: -E". Dois-je charger quelque chose dans un fichier de configuration avant d'exécuter ces commutateurs?
JohnMerlino
1
Quelle version de zsh? zsh --version. Je viens de confirmer sur Ubuntu 12.10 que les commandes que je vous avais donné fonctionnaient parfaitement.
slm
17
@JohnMerlino J'avais zsh 4.3.10 (x86_64-unknown-linux-gnu) sur un serveur pour lequel je voulais afficher l'historique avec des horodatages. Après avoir parcouru la zshbuiltinspage de manuel, j'ai découvert que je devais utiliser fc. Ce qui a finalement fonctionné pour moi était fc -li. Vous pouvez également passer des numéros de commande à fc, donc fc -li -100répertorie les 100 dernières commandes de votre historique.
Thomas Upton
21
Je dois utiliser \history -E, j'utilise oh-my-zsh
juanpastas
1
C'est un bug de longue date (plus de 6 ans) avec oh-my-zsh, voir ce numéro sur github: github.com/robbyrussell/oh-my-zsh/issues/739
rococo
20

history -Eou history -iou quoi que ce ne fonctionne pas pour moi.

zsh --versionmontre que zsh 4.3.6 (x86_64-suse-linux-gnu).

Alors ça fc -li 100marche! Il montre les 100 commandes récentes avec horodatage :)

Gab 好人
la source
Merci, cela a fonctionné pour moi aussi, contrairement à la première réponse. Ma version est: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). Et pendant que je suis ici: savez-vous comment obtenir l'aide de la commande fc? Ni man fcni fc --helptravail
exhuma
@exhuma pourquoi pas google it :)
Gab
@Gab 是 好人 avez-vous une histoire aliasée? Si vous utilisez oh-my-zshla commande d'historique, ajoutez l' -lindicateur dans l'une des options. Voir github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Mike D
1
fc -lfaffichera un horodatage complet. Notez que cela ne fonctionne que sur zsh, pas sur bash.
dr01
@exhuma Dans zsh, vous pouvez utiliser run-help fc.
xuhdev
4

Si vous utilisez oh-my-zshaddon dans zsh, history -Eou history -ine fonctionnera pas (car il est associé à un alias fc -l 1).

Comme @juanpastas l'a fait remarquer, essayez

\history -E

ou

\history -i

ou

fc -li 100

alpha_989
la source
1
Je viens d'ajouter: 'alias history = "fc -li 1"' pour redéfinir l'alias d'historique dans mon fichier ~ / .zshrc et il fonctionne maintenant comme vous le souhaitez!
user886869
ou même mieux: 'alias history = "history -i". De cette façon, vous pouvez exécuter la même commande dans l'alias, et si vous voulez ajouter plus de clés / options, ce n'est pas si déroutant.
Dr Beco