Cara melihat stempel datetime untuk perintah sejarah di Zsh shell

34

Ketika saya menjalankan perintah history di server ubuntu saya, saya mendapatkan output sebagai berikut:

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

Saya ingin melihat datetime pengguna tertentu. Namun ketika saya menganggap mereka:

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

Itu masih tidak menunjukkan datetime. Saya menggunakan shell zsh.

JohnMerlino
sumber

Jawaban:

49

Saya percaya HISTTIMEFORMAT adalah untuk kerang Bash. Jika Anda menggunakan zshmaka Anda bisa menggunakan sakelar ini ke historyperintah:

Contohnya

$ 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

Jika Anda melakukan man zshoptionsatau man zshbuiltinsAnda dapat mengetahui informasi lebih lanjut tentang sakelar ini serta info lain yang terkait history.

kutipan dari halaman 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.

Doa debugging

Anda dapat menggunakan 2 metode berikut untuk melakukan debug zshketika Anda memintanya.

Metode # 1

$ zsh -xv

Metode # 2

$ zsh
$ setopt XTRACE VERBOSE

Dalam kedua kasus Anda akan melihat sesuatu seperti ini ketika mulai:

$ 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
sumber
6
"acara tidak ditemukan: -i" "acara tidak ditemukan: -E". Apakah saya perlu memuat sesuatu dalam file konfigurasi sebelum menjalankan switch ini?
JohnMerlino
1
Versi apa zsh? zsh --version. Saya baru saja mengkonfirmasi di Ubuntu 12.10 bahwa perintah yang saya berikan kepada Anda berfungsi dengan baik.
slm
17
@JohnMerlino Saya punya zsh 4.3.10 (x86_64-unknown-linux-gnu) di server yang saya ingin melihat sejarah dengan cap waktu. Setelah melihat-lihat zshbuiltinshalaman manual, saya menemukan bahwa saya perlu menggunakannya fc. Apa yang akhirnya berhasil bagi saya adalah fc -li. Anda dapat memberikan nomor perintah fcjuga, jadi fc -li -100daftarkan 100 perintah terakhir dalam riwayat Anda.
Thomas Upton
21
Saya harus menggunakan \history -E, saya menggunakan oh-my-zsh
juanpastas
1
Ini adalah bug lama (6+ tahun) dengan oh-my-zsh, lihat masalah ini di github: github.com/robbyrussell/oh-my-zsh/issues/739
rococo
20

history -Eatau history -iatau apa pun JANGAN bekerja untukku.

zsh --versionmenunjukkan itu zsh 4.3.6 (x86_64-suse-linux-gnu).

Lalu fc -li 100bekerja! Ini menunjukkan 100 perintah terbaru dengan timestamp :)

Gab 是 好人
sumber
Terima kasih, ini bekerja untuk saya juga, bertentangan dengan jawaban teratas. Versi saya adalah: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). Dan sementara saya di sini: apakah Anda tahu cara mendapatkan bantuan perintah fc? Tidak bekerja man fcatau tidakfc --help
exhuma
@exhuma kenapa tidak google itu :)
Gab 是 好人
@Gab 是 好人 apakah Anda memiliki riwayat alias? jika Anda menggunakan oh-my-zshperintah histori tambahkan -lbendera di salah satu opsi. lihat github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Mike D
1
fc -lfakan menampilkan stempel waktu penuh. Perhatikan bahwa ini hanya berfungsi pada zsh, bukan pada bash.
dr01
@exhuma Di zsh, Anda dapat menggunakan run-help fc.
xuhdev
4

Jika Anda menggunakan oh-my-zshaddon di zsh, history -Eatau history -itidak akan berfungsi (karena itu alias fc -l 1).

Seperti yang ditunjukkan oleh @ juanpastas, coba

\history -E

atau

\history -i

atau

fc -li 100

alpha_989
sumber
1
Saya baru saja menambahkan: 'alias history = "fc -li 1"' untuk mendefinisikan kembali alias riwayat ke dalam file ~ / .zshrc saya dan sekarang berfungsi sesuai keinginan!
user886869
atau bahkan lebih baik: 'alias history = "history -i". Dengan begitu Anda dapat menjalankan perintah yang sama di alias, dan jika Anda ingin menambahkan lebih banyak kunci / opsi, itu tidak membingungkan.
Dr Beco