Hiển thị các mục lịch sử cũ hơn hoặc mới hơn bằng lệnh lịch sử trong zsh


7

Tôi đã gõ lệnh lịch sử và nó cho tôi thấy 10 lệnh cuối cùng được thực thi bởi tôi. Bây giờ tôi muốn xem 20 lệnh cuối cùng được thực thi bởi tôi (sau khi đọc tài liệu):

Một đối số của n chỉ liệt kê n dòng cuối cùng.

Tôi gõ vào history 20. Điều này cho tôi thấy tất cả các lệnh bắt đầu từ lệnh số 20 đến lệnh hiện tại ở đâu đó khoảng năm 2000. Vì vậy, tôi đã thử history -20 và nó hoạt động. Nó cho tôi thấy 20 lệnh cuối cùng. Nhưng đây không phải là những gì được nói trong tài liệu.

Cũng history -d [offset]có nghĩa vụ xóa lệnh trên offset đó. Ngay cả điều đó không làm việc trong zsh của tôi.

Đây là thẳng ra khỏi vỏ zsh của tôi: nhập mô tả hình ảnh ở đây


"Một đối số của n chỉ liệt kê n dòng cuối" trong tài liệu về bash. Zsh làm những việc khác nhau. zsh.sourceforge.net/Doc/Release/ từ
Mark Plotnick

Trên Linux, man builtinslệnh sẽ hiển thị trang BASH BUILTIN THÔNG TIN , bất kể bạn đang sử dụng shell nào. Hãy thử man zshbuiltinshoặc trang web trong bình luận trước của tôi để xem tài liệu chính xác.
Đánh dấu Plotnick

Câu trả lời:


8

Trong zsh, historylà một bí danh cho fc -l 1, vì vậy khi bạn thực hiện history -20nó sẽ được thay thế bởi fc -l 1 -20nó sẽ không hoạt động, vì vậy thay vào đó hãy sử dụng fctrực tiếp:

  ~  fc -l -20
10095  grep -R PAPER /usr/lib/locale/
10096  man locale
10097  man 7 locale
10098  mc
10099  history
10100  history --help
10101  run-help history
10102  history 20
10103  history 1 20
10104  history -l 20
10105  fc
10106  history -l 20
10107  type history
10108  fc -l ..20
10109  fc -l -20
10110  history -l -20
10111  history -20
10112  fc -l -20
10113  type history
10114  fc -l 1 -20

và bạn sẽ ổn thôi


Bạn không hiểu câu hỏi của tôi. Tôi biết rằng lịch sử -20 (hoặc fc -l -20) hoạt động. Tôi muốn biết tại sao lịch sử 20 (hoặc fc -l 20) không hoạt động? Nó sẽ làm việc theo tài liệu.
dùng590849

@ user590849 run-help historykhông nói gì về điều đó. Bạn đã tìm thấy tài liệu này ở đâu?
Braiam

@Braiam: history~ ~ fc -l, tại sao fc -l 1?
cuonglm

1
@ user590849, bạn đang đọc bashtài liệu, không phải zshtài liệu.
Stéphane Chazelas

Thêm phần sau vào .zshrc của bạn: function lhistory() { fc -l -$1}và sử dụng nó để hiển thị 10 lệnh cuối cùng (ví dụ):lhistory 10
Olshansk

3

Điều đầu tiên để biết, trong zsh, historycó nghĩa fc -l.

Sau đó đọc man zshbuiltins , phần về fclệnh:

Chọn một loạt các lệnh từ đầu đến cuối từ danh sách lịch sử. Các đối số đầu tiên và cuối cùng có thể được chỉ định dưới dạng số hoặc dưới dạng chuỗi. Số âm được sử dụng làm phần bù cho số sự kiện lịch sử hiện tại . Một chuỗi xác định sự kiện gần đây nhất bắt đầu bằng chuỗi đã cho. Tất cả các thay thế cũ = mới, nếu có, sau đó được thực hiện trên các lệnh.

...

Nếu lần đầu tiên không được chỉ định, nó sẽ được đặt thành -1 (sự kiện gần đây nhất) hoặc -16 nếu cờ -l được đưa ra. Nếu cuối cùng không được chỉ định, nó sẽ được đặt thành đầu tiên hoặc thành -1 nếu cờ -l được đưa ra .

Như tài liệu đã nói, nếu số âm được sử dụng, đó là phần bù cho lịch sử hiện tại. Vì vậy, history -20liệt kê lệnh từ hiện tại đến 20 lệnh trước.

Nếu bạn cung cấp một số history 20, hãy zshnghĩ rằng đó là first to lasthình thức. Trong trường hợp này, firstđược đặt thành 20, nhưng lastbị bỏ qua. Vì vậy, lastđược đặt thành -1fc -lđược sử dụng.

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.