Como exibir o carimbo de data e hora para o comando history no shell Zsh

34

Quando executo o comando history no meu servidor ubuntu, recebo a seguinte saída:

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

Quero visualizar a data e hora de um usuário específico. No entanto, quando eu os assumo:

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

Ainda não mostra data e hora. Estou usando o shell zsh.

JohnMerlino
fonte

Respostas:

49

Eu acredito que o HISTTIMEFORMAT é para conchas de Bash. Se você estiver usando zsh, poderá usar estas opções no historycomando:

Exemplos

$ 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 você faz um man zshoptionsou man zshbuiltinspode encontrar mais informações sobre essas opções, além de outras informações relacionadas a history.

trecho da página do manual 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.

Chamada de depuração

Você pode usar os 2 métodos a seguir para depurar zshquando invocá-lo.

Método 1

$ zsh -xv

Método # 2

$ zsh
$ setopt XTRACE VERBOSE

Em qualquer um dos casos, você deverá ver algo assim quando iniciar:

$ 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
fonte
6
"evento não encontrado: -i" "evento não encontrado: -E". Preciso carregar algo em um arquivo de configuração antes de executar essas opções?
31413 JohnMerlino
1
Qual versão do zsh? zsh --version. Acabei de confirmar no Ubuntu 12.10 que os comandos que dei foram úteis.
slm
17
@JohnMerlino Eu tinha o zsh 4.3.10 (x86_64-unknown-linux-gnu) em um servidor para o qual queria ver o histórico com registros de data e hora. Depois de examinar a zshbuiltinspágina de manual, descobri que precisava usar fc. O que finalmente funcionou para mim foi fc -li. Você também pode passar os números de comando fcpara fc -li -100listar os últimos 100 comandos no seu histórico.
21814 Thomas Upton
21
Eu tenho que usar \history -E, eu uso oh-meu-zsh
juanpastas
1
É um bug de longa data (6 + anos) com oh-meu-zsh, consulte esta questão no github: github.com/robbyrussell/oh-my-zsh/issues/739
rococó
20

history -Eou history -iou o que quer que NÃO funcione para mim.

zsh --versionmostra isso zsh 4.3.6 (x86_64-suse-linux-gnu).

Então fc -li 100funciona! Ele mostra os 100 comandos recentes com carimbo de data e hora :)

Gabão
fonte
Obrigado, isso funcionou para mim também, ao contrário da resposta principal. Minha versão é a seguinte: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). E enquanto estou aqui: você sabe como obter a ajuda do comando fc? Nem man fcnem fc --helptrabalho
exhuma
@exhuma porque não google :)
Gab是好人
@Gab 好人 好人 você tem histórico de alias? se você estiver usando oh-my-zsho comando history, adicione a -lbandeira em uma das opções. Veja github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Mike D
1
fc -lfmostrará um carimbo de data / hora completo. Observe que isso funciona apenas no zsh, não no bash.
01
@exhuma No zsh, você pode usar run-help fc.
xuhdev
4

Se você estiver usando oh-my-zshaddon in zsh, history -Eou history -inão funcionará (porque é um alias para fc -l 1).

Como @juanpastas apontou, tente

\history -E

ou

\history -i

ou

fc -li 100

alpha_989
fonte
1
Acabei de adicionar: 'alias history = "fc -li 1"' para redefinir o alias do histórico no meu arquivo ~ / .zshrc e agora está funcionando como desejado!
user886869 8/06
ou melhor ainda: 'alias history = "history -i". Dessa forma, você pode executar o mesmo comando no alias e, se desejar adicionar mais chaves / opções, não é tão confuso.
Dr Beco