Cómo ver el sello de fecha y hora para el comando de historial en el shell Zsh

34

Cuando ejecuto el comando history en mi servidor ubuntu, obtengo el siguiente resultado:

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

Quiero ver la fecha y hora de un usuario en particular. Sin embargo, cuando los asumo:

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

Todavía no muestra fecha y hora. Estoy usando zsh shell.

JohnMerlino
fuente

Respuestas:

49

Creo que HISTTIMEFORMAT es para los proyectiles Bash. Si está utilizando zsh, podría usar estos modificadores para el historycomando:

Ejemplos

$ 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 realiza una man zshoptionso man zshbuiltinspuede obtener más información sobre estos interruptores, así como otra información relacionada con history.

extracto de la página de manual de 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.

Invocación de depuración

Puede usar los siguientes 2 métodos para depurar zsh cuando lo invoque.

Método 1

$ zsh -xv

Método 2

$ zsh
$ setopt XTRACE VERBOSE

En cualquier caso, debería ver algo como esto cuando se inicia:

$ 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
fuente
66
"evento no encontrado: -i" "evento no encontrado: -E". ¿Necesito cargar algo en un archivo de configuración antes de ejecutar estos interruptores?
JohnMerlino
1
¿De qué versión zsh? zsh --version. Acabo de confirmar en Ubuntu 12.10 que los comandos que te di funcionaron bien.
slm
17
@JohnMerlino Tenía zsh 4.3.10 (x86_64-unknown-linux-gnu) en un servidor para el que quería ver el historial con marcas de tiempo. Después de mirar a través de la zshbuiltinspágina de manual, descubrí que necesitaba usar fc. Lo que finalmente funcionó para mí fue fc -li. También puede pasar números de comando a fc, así que fc -li -100enumera los últimos 100 comandos en su historial.
Thomas Upton
21
Tengo que usar \history -E, uso oh-my-zsh
juanpastas
1
Es un error de larga data (6+ años) con oh-my-zsh, vea este problema en github: github.com/robbyrussell/oh-my-zsh/issues/739
rococó
20

history -Eo history -ilo que sea, NO me funciona.

zsh --versionmuestra eso zsh 4.3.6 (x86_64-suse-linux-gnu).

Entonces fc -li 100funciona! Muestra los 100 comandos recientes con marca de tiempo :)

Gab 是 好人
fuente
Gracias, esto también funcionó para mí, al contrario de la respuesta principal. Mi versión es: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). Y mientras estoy aquí: ¿sabes cómo obtener la ayuda del comando fc? Ni man fcni fc --helptrabajo
exhuma
@exhuma por qué no googlearlo :)
Gab 是 好人
@Gab 是 好人 ¿tienes un alias de historia? si está utilizando oh-my-zshel comando de historial, agregue la -lbandera en una de las opciones. ver github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Mike D
1
fc -lfmostrará una marca de tiempo completa. Tenga en cuenta que esto solo funciona en zsh, no en bash.
dr01
@exhuma En zsh, puedes usar run-help fc.
xuhdev
4

Si está usando oh-my-zshcomplemento en zsh, history -Eo history -ino funcionará (porque es un alias a fc -l 1).

Como señaló @juanpastas, intente

\history -E

o

\history -i

o

fc -li 100

alpha_989
fuente
1
Acabo de agregar: 'alias history = "fc -li 1"' para redefinir el alias del historial en mi archivo ~ / .zshrc y ahora funciona como se desea.
user886869
o incluso mejor: 'alias history = "history -i". De esa manera, puede ejecutar el mismo comando en el alias, y si desea agregar más teclas / opciones, no es tan confuso.
Dr Beco