Làm thế nào để có được N lệnh cuối cùng từ lịch sử?


37

Tôi muốn xem các lệnh N cuối cùng trong tôi là gì history. Tôi nghĩ rằng history | tail -n 5nó sẽ làm cho nó, nhưng tôi nhận thấy rằng một lệnh multiline tính cho nhiều dòng như nó có.

$ echo "hello
how are you"
$ history | tail -2
how are you"
1051  history | tail -2

Vì vậy, câu hỏi của tôi là: tôi có phải phân tích đầu ra của lệnh để thực hiện việc này không?


1
//, Đây là lý do tại sao tôi yêu stackexchange
Nathan Basan

Câu trả lời:


46

Tôi tìm thấy nó!

lịch sử [n]

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

$ echo "hello
how are you"
$ history 2
1060  echo "hello
how are you"
1061  history 2

4
Điều đó dường như là cho tcsh, yashbash. Bạn có thể muốn cung cấp cho các thông tin tương ứng cho vỏ khác thích zsh, fish, ksh, và cách POSIX.
Stéphane Chazelas

1
Tôi rất thích, mặc dù tôi không cài đặt bất kỳ thứ nào trong máy tính của mình. Bạn có đề nghị bất kỳ nguồn cụ thể để có được thông tin từ? Trong opengroup tôi thấy một tài liệu tham khảo đến pubs.opengroup.org/onlinepub/9699919799
fedorqui

6
fc -l -2cũng hoạt động (nhưng không thêm hiện tại fc -l -2vào đầu ra)
Evgeny Vereshchagin


fcbằng cách này cho thấy n lệnh cuối cùng với -n. Hiển thị from n commands until lastlà duy nhất n(không có ý nghĩa nhiều vì bạn cần biết tổng số). Trong tiếng Đức, chúng tôi sẽ nói ein kleiner aber feiner unterschied: Một khác biệt nhỏ nhưng thú vị. Đừng quên sử dụng -lnhư @EvgenyVereshchagin đã chỉ vì nếu không, bạn sẽ trở thành một biên tập viên không phải là điều bạn muốn.
Timo

0

Đã thử nghiệm trong OpenBSD 6.3 (PD KSH v5.2.14 99/07 / 13.2).

history [b]

Hiển thị tất cả lịch sử bắt đầu từ một mục có số [b]

history [b] [e]

Hiển thị khoảng lịch sử từ [b] đến [e]


0

Bạn cũng có thể sử dụng các số âm, như:

history -1

Hoặc sử dụng một phạm vi (10 cuối):

history -1 -11 

Không hoạt động với tôi với bash 5.0.11.
joelostblom

0

Khi bạn áp dụng lịch sử, nó cũng sẽ hiển thị lệnh lịch sử cuối cùng. Để ngăn chặn không gian đó, bí danh như vậy có thể có ích:

alias hs=' history 16 | head -n 15'

(chính lệnh history 16 | head -n 15)

Một bí danh lịch sử hữu ích khác:

  alias hsg=' history | grep ' 

(khi ctr + R quá nhỏ để chọn)

Không gian phía trước _history sẽ chạy lệnh không được ghi trong lịch sử

fc -l # cũng sẽ liệt kê 16 lệnh cuối cùng (và hơn thế nữa)


2
Trong khi sự thật, không ai trong số này giải quyết câu hỏi trong tầm tay.
Jeff Schaller
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.