Cách xem tem datetime cho lệnh history trong shell Zsh


34

Khi tôi chạy lệnh history trên máy chủ ubfox của mình, tôi nhận được kết quả như sau:

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

Tôi muốn xem datetime của một người dùng cụ thể. Tuy nhiên khi tôi giả sử họ:

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

Nó vẫn không hiển thị datetime. Tôi đang sử dụng vỏ zsh.

Câu trả lời:


49

Tôi tin rằng HISTTIMEFORMAT dành cho đạn Bash. Nếu bạn đang sử dụng zshthì bạn có thể sử dụng các công tắc này cho historylệnh:

Ví dụ

$ 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

Nếu bạn làm một man zshoptionshoặc man zshbuiltinsbạn có thể tìm hiểu thêm thông tin về các công tắc này cũng như các thông tin khác liên quan đến history.

trích từ trang người đàn ông 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.

Gỡ lỗi

Bạn có thể sử dụng 2 phương thức sau để gỡ lỗi zshkhi bạn gọi nó.

Phương pháp số 1

$ zsh -xv

Phương pháp # 2

$ zsh
$ setopt XTRACE VERBOSE

Trong cả hai trường hợp, bạn sẽ thấy một cái gì đó như thế này khi nó khởi động:

$ 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
"không tìm thấy sự kiện: -i" "không tìm thấy sự kiện: -E". Tôi có cần tải một cái gì đó trong một tập tin cấu hình trước khi chạy các công tắc này không?
JohnMerlino

1
Phiên bản zshnào? zsh --version. Tôi vừa xác nhận trên Ubuntu 12.10 rằng các lệnh tôi đưa cho bạn hoạt động tốt.
slm

17
@JohnMerlino Tôi đã có zsh 4.3.10 (x86_64-unknown-linux-gnu) trên máy chủ mà tôi muốn xem lịch sử bằng dấu thời gian. Sau khi xem qua zshbuiltinstrang người đàn ông, tôi phát hiện ra rằng tôi cần sử dụng fc. Điều cuối cùng làm việc cho tôi là fc -li. Bạn cũng có thể chuyển số lệnh cho fc, vì vậy hãy fc -li -100liệt kê 100 lệnh cuối cùng trong lịch sử của bạn.
Thomas Upton

21
Tôi phải sử dụng \history -E, tôi sử dụng oh-my-zsh
juanpastas

1
Đó là một lỗi lâu đời (hơn 6 năm) với oh-my-zsh, hãy xem vấn đề này trên github: github.com/robbyrussell/oh-my-zsh/issues/739
rococo

20

history -Ehoặc history -ibất cứ điều gì KHÔNG làm việc cho tôi.

zsh --versioncho thấy zsh 4.3.6 (x86_64-suse-linux-gnu).

Sau đó fc -li 100hoạt động! Nó hiển thị 100 lệnh gần đây với dấu thời gian :)


Cảm ơn, điều này làm việc cho tôi là tốt, trái với câu trả lời hàng đầu. Phiên bản của tôi là : zsh 5.1.1 (x86_64-ubuntu-linux-gnu). Và trong khi tôi ở đây: bạn có biết làm thế nào để nhận được sự giúp đỡ của lệnh fckhông? Không man fcphải cũng không fc --helphoạt động
shoutuma

@exhuma tại sao không google nó :)
Gab

@Gab bạn có lịch sử bí danh không? nếu bạn đang sử dụng oh-my-zshlệnh history sẽ thêm -lcờ vào một trong các tùy chọn. xem github.com/robbyrussell/oh-my-zsh/blob/master/lib/ mẹo
Mike D

1
fc -lfsẽ hiển thị dấu thời gian đầy đủ. Lưu ý rằng điều này chỉ hoạt động trên zsh, không phải trên bash.
dr01

@exhuma Trong zsh, bạn có thể sử dụng run-help fc.
xuhdev

4

Nếu bạn đang sử dụng oh-my-zshaddon zsh, history -Ehoặc history -isẽ không hoạt động (vì nó có biệt danh fc -l 1).

Như @juanpastas đã chỉ ra, hãy thử

\history -E

hoặc là

\history -i

hoặc là

fc -li 100


1
Tôi vừa thêm: 'alias history = "fc -li 1"' để xác định lại bí danh lịch sử vào tệp ~ / .zshrc của tôi và giờ nó hoạt động như mong muốn!
dùng886869

hoặc thậm chí tốt hơn: 'alias history = "history -i". Bằng cách đó, bạn có thể chạy cùng một lệnh trong bí danh và nếu bạn muốn thêm nhiều khóa / tùy chọn thì điều đó không khó hiểu.
Bác sĩ Beco
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.