Zsh kabuğunda geçmiş komutu için datetime damgası nasıl görüntülenir?


34

Ubuntu sunucumda history komutunu çalıştırdığımda aşağıdaki gibi çıktı alıyorum:

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

Belirli bir kullanıcının tarihini görüntülemek istiyorum. Ancak onları varsaydığımda:

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

Hala tarihini göstermiyor. Zsh kabuk kullanıyorum.

Yanıtlar:


49

HISTTIMEFORMAT'ın Bash mermileri için olduğuna inanıyorum. Eğer zshkullanıyorsanız, bu anahtarları historykomuta kullanabilirsiniz:

Örnekler

$ 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

Bir yaparsanız man zshoptionsveya man zshbuiltinsbu anahtarlar hakkında daha fazla bilgi yanı sıra ilgili diğer bilgileri öğrenebilirsiniz history.

alıntı zshbuiltins adam sayfadan

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.

Hata ayıklama çağrısı

Bunu zshçağırdığınızda hata ayıklamak için aşağıdaki 2 yöntemi kullanabilirsiniz .

Yöntem 1

$ zsh -xv

Yöntem 2

$ zsh
$ setopt XTRACE VERBOSE

Her iki durumda da, başladığında böyle bir şey görmelisiniz:

$ 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
"olay bulunamadı: -i" "olay bulunamadı: -E". Bu anahtarları çalıştırmadan önce bir yapılandırma dosyasına bir şey yüklemem gerekir mi?
JohnMerlino

1
Hangi versiyonu zsh? zsh --version. Ubuntu 12.10'da size verdiğim komutların iyi çalıştığını onayladım.
slm

17
@JohnMerlino Zaman damgasıyla geçmişi görüntülemek istediğim bir sunucuda zsh 4.3.10 (x86_64-unknown-linux-gnu) vardı. zshbuiltinsMan sayfasına baktıktan sonra kullanmam gerektiğini keşfettim fc. Sonunda benim için çalıştı fc -li. Komut numaralarını da iletebilirsiniz fc, böylece fc -li -100geçmişinizdeki son 100 komutu listeler.
Thomas Upton

21
\history -E
Kullanmak

1
It-my-zsh oh ile uzun süredir devam eden (6 + yaş) böcek, github bu sorunu bakın: github.com/robbyrussell/oh-my-zsh/issues/739
rokoko

20

history -Eya history -iya da her türlü YAPMAYIN benim için çalışıyor.

zsh --versionbunu gösterir zsh 4.3.6 (x86_64-suse-linux-gnu).

O zaman fc -li 100çalışıyor! Zaman damgası ile son 100 komutları gösterir :)


Teşekkürler, bu benim için de işe yaradı, en üstteki cevabın aksine. Benim sürümü: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). Ve ben buradayken: emrin yardımını nasıl alacağınızı biliyor musunuz fc? Ne man fcde fc --helpçalışma
exhuma

@exhuma neden bu google :) :)
Gab 好人 好人

@ Gab 是 好人 takma adınız var mı? Eğer oh-my-zshgeçmiş komutunu kullanıyorsanız -lbayrak seçeneklerden birine ekleyin . bkz github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Mike D

1
fc -lftam bir zaman damgası gösterecektir. Bunun yalnızca zsh üzerinde çalıştığını, bash'de olmadığını unutmayın.
dr01

@exhuma zsh'da kullanabilirsiniz run-help fc.
xuhdev

4

Eğer kullanıyorsanız oh-my-zshaddon zsh, history -Eya history -ialışkanlık işi (Bu diğer ad çünkü fc -l 1).

@Juanpastas'ın işaret ettiği gibi, deneyin

\history -E

veya

\history -i

veya

fc -li 100


1
Yeni ekledim: 'alias history = "fc -li 1"', geçmiş takma adını ~ / .zshrc dosyama yeniden tanımlamak için ve şimdi istendiği gibi çalışıyor!
user886869

veya daha da iyisi: 'alias history = "history -i". Bu yolla aynı komutu diğer adda çalıştırabilirsiniz ve daha fazla anahtar / seçenek eklemek istiyorsanız bu kafa karıştırıcı değildir.
Dr Beco
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.