วิธีดูการประทับวันที่และเวลาสำหรับคำสั่งประวัติในเปลือก Zsh


34

เมื่อฉันรันคำสั่ง history บนเซิร์ฟเวอร์ ubuntu ของฉันฉันจะได้ผลลัพธ์ดังนี้:

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

ฉันต้องการดูวันที่และเวลาของผู้ใช้เฉพาะ อย่างไรก็ตามเมื่อฉันถือว่าพวกเขา:

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

มันยังไม่แสดง datetime ฉันกำลังใช้เปลือก zsh

คำตอบ:


49

ฉันเชื่อว่า HISTTIMEFORMAT สำหรับ Bash shells หากคุณกำลังใช้อยู่zshคุณสามารถใช้สวิตช์เหล่านี้กับhistoryคำสั่ง:

ตัวอย่าง

$ 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

หากคุณทำman zshoptionsหรือman zshbuiltinsคุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับสวิทช์เหล่านี้เช่นเดียวกับข้อมูลอื่น ๆ historyที่เกี่ยวข้องกับการ

ตัดตอนมาจากหน้าคน 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.

การดีบักการร้องขอ

คุณสามารถใช้ 2 วิธีต่อไปนี้เพื่อตรวจแก้จุดบกพร่องzshเมื่อคุณเรียกใช้

วิธีที่ # 1

$ zsh -xv

วิธีที่ # 2

$ zsh
$ setopt XTRACE VERBOSE

ไม่ว่าในกรณีใดคุณควรเห็นสิ่งนี้เมื่อเริ่มทำงาน:

$ 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
"ไม่พบเหตุการณ์: -i" "ไม่พบเหตุการณ์: -E" ฉันต้องโหลดบางอย่างในไฟล์กำหนดค่าก่อนเรียกใช้สวิตช์เหล่านี้หรือไม่
JohnMerlino

1
รุ่นzshใด zsh --version. ฉันเพิ่งยืนยันใน Ubuntu 12.10 ว่าคำสั่งที่ฉันให้คุณใช้ได้ดี
slm

17
@ JohnMerlino ฉันมี zsh 4.3.10 (x86_64-unknown-linux-gnu) บนเซิร์ฟเวอร์ที่ฉันต้องการดูประวัติด้วยการประทับเวลา หลังจากที่มองผ่านหน้าคนผมค้นพบว่าผมจำเป็นต้องใช้zshbuiltins สิ่งที่ในที่สุดก็ทำงานให้ฉันเป็นfc fc -liคุณสามารถส่งหมายเลขคำสั่งไปที่fcได้เช่นกันดังนั้นจึงfc -li -100แสดงรายการคำสั่งล่าสุด 100 รายการในประวัติของคุณ
โทมัสอัพตัน

21
ฉันต้องใช้\history -Eฉันใช้ oh-my-zsh
juanpastas

1
เป็นข้อผิดพลาดที่ยาวนาน (6+ ปี) กับ oh-my-zsh ดูปัญหานี้ใน github: github.com/robbyrussell/oh-my-zsh/issues/739
rococo

20

history -Eหรือhistory -iอะไรก็ตามที่ไม่เหมาะกับฉัน

zsh --versionzsh 4.3.6 (x86_64-suse-linux-gnu)แสดงให้เห็นว่า

จากนั้นfc -li 100ทำงาน! มันแสดง 100 คำสั่งล่าสุดพร้อมเวลาประทับ :)


ขอบคุณสิ่งนี้ใช้ได้สำหรับฉันเช่นกันตรงข้ามกับคำตอบยอดนิยม รุ่นของฉันคือ: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). และในขณะที่ฉันอยู่ที่นี่คุณรู้วิธีรับความช่วยเหลือจากคำสั่งfcหรือไม่ ทั้งman fcมิได้fc --helpทำงาน
exhuma

@ exhuma ทำไมไม่ใช่ google it :)
Gab 是好人

@Gab 是好人คุณมีประวัตินามแฝงหรือไม่? หากคุณกำลังใช้oh-my-zshคำสั่ง history คือการเพิ่มการ-lตั้งค่าสถานะในหนึ่งในตัวเลือก ดูgithub.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Mike D

1
fc -lfจะแสดงการประทับเวลาแบบเต็ม โปรดทราบว่าสิ่งนี้ใช้ได้กับ zsh เท่านั้นไม่ใช่ใน bash
dr01

@exhuma ใน zsh run-help fcคุณสามารถใช้
xuhdev

4

หากคุณกำลังใช้oh-my-zshaddon ในzsh, history -Eหรือhistory -iเคยชินทำงาน (เพราะมันนามแฝงfc -l 1)

ตามที่ @ juanpastas ชี้ให้ลอง

\history -E

หรือ

\history -i

หรือ

fc -li 100


1
ฉันเพิ่งเพิ่ม: 'alias history = "fc -li 1"' เพื่อกำหนด alias ประวัติใหม่ให้เป็นไฟล์ ~ / .zshrc ของฉันและตอนนี้ก็ทำงานได้ตามที่ต้องการแล้ว!
user886869

หรือดียิ่งขึ้น: 'alias history = "history -i" ด้วยวิธีนี้คุณสามารถเรียกใช้คำสั่งเดียวกันในนามแฝงได้และหากคุณต้องการเพิ่มคีย์ / ตัวเลือกเพิ่มเติมจะไม่ทำให้เกิดความสับสน
ดร. เบโก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.