ZSH - đầu ra toàn bộ lịch sử?


37

Gần đây tôi đã chuyển từ bash sang zsh. Trong bash, một cách (ngoài tìm kiếm đệ quy) mà tôi đã sử dụng để tìm các lệnh đã chạy trước đó history | grep whatever, đó whateverlà bit lệnh tôi nhớ.

Trong zsh, điều này không hoạt động. historychỉ trả về một vài mục, mặc dù .zsh_historytệp của tôi chứa nhiều mục, mà tôi đã cấu hình nó để làm.

Làm cách nào tôi có thể xuất toàn bộ lịch sử của mình, phù hợp để tìm kiếm với grep?

Câu trả lời:


48

Lịch sử chấp nhận một phạm vi trong các mục zsh làm [first] [last]đối số, vì vậy để có được tất cả chúng chạy history 0.

Để nhận được trợ giúp zsh (ít nhất là với tâm trí), hãy gõ Alt-hlệnh lịch sử và điều này sẽ mang đến sự trợ giúp cho các phần dựng sẵn.


3
Tuyệt quá! Tuy nhiên, đó là một mặc định khó chịu đối với tôi, vì vậy tôi đang thêm phần này vào tệp bí danh của mình:alias history="history 0"
Nathan Long

7
Không phải là vấn đề nhưng danh sách lịch sử bắt đầu từ 1 chứ không phải 0.
ggustafsson

2
Tôi đang sử dụng bí danh này:alias h='history 1 | grep'
Harald Nordgren

3
Điều này dường như không hoạt động đối với tôi: tôi ~/.zsh_historycó 10066 dòng, nhưng history 0(hoặc tương đương, fc -l 0), chỉ in ra 4999 dòng.
jayhendren

2
Đối với history 1 | grepmọi người, tôi hy vọng bạn biết về ctrl+r- mẹo / lối tắt tốt nhất từng có!
Emil Vatai

9

Câu trả lời được chấp nhận là chính xác, nhưng đáng chú ý là bạn không cần gọi grepnhị phân bên ngoài để thực hiện tìm kiếm, vì khả năng đó được đưa vào. Tôi có chức năng này được xác định trong .zshrc:

histsearch() { fc -lim "*$@*" 1 }

Ghi chú:

  • fclà nội dung zsh kiểm soát lịch sử tương tác. historytương đương với fc -l.

  • Các -mcờ đòi hỏi một mô hình, mà phải được trích dẫn.

  • Các -ilá cờ cho biết thêm một dấu thời gian.

  • fccó nhiều thủ thuật hơn nữa (ví dụ: giới hạn tìm kiếm trong lịch sử nội bộ cho phiên hiện tại). Xem zshbuiltins(1)trang người đàn ông hoặc tài liệu chính thức .


Tốt hơn nữa là sử dụng mẫu "* $ @ *" (lưu ý các ngôi sao bổ sung) thay vì "$ @" vì mẫu sau chỉ mang lại kết quả khớp chính xác.
Piotr Dobrogost

1
Bạn hoàn toàn đúng, @PiotrDobrogost! Tôi không chắc chắn làm thế nào tôi quản lý để gửi câu trả lời này trong trạng thái mà tôi đã làm - Tôi đoán tôi phải gõ chức năng đó từ bộ nhớ. Vì nó không thể sử dụng được, vì vậy tôi sẽ chỉnh sửa câu trả lời để kết hợp các dấu sao.
wjv

3

Có một cái nhìn tại fzf . Nó không chỉ giúp tìm "bất cứ hạt nào" trong lịch sử vỏ của bạn, mà còn ở những nơi thú vị khác, ví dụ: lịch sử trình duyệt, lịch sử thư mục, v.v.

fzf là một công cụ tìm mờ dòng lệnh. Điều đó có nghĩa là bạn có thể tìm kiếm các hạt hoặc phân số của những gì bạn đang tìm kiếm và nó sẽ hiển thị một bộ sưu tập các trận đấu mà bạn có thể liên tục tinh chỉnh. Nó thực sự là một thay đổi trò chơi.

Các trang web của tác giả có chứa một số ví dụ minh họa.


Xem xét thêm một số tài liệu tham khảo cho câu trả lời này hỗ trợ những gì bạn nêu.
Pimp Juice IT

Chào mừng bạn đến với Siêu người dùng! Vui lòng đọc Cách giới thiệu phần mềm để biết thông tin tối thiểu và đề xuất về cách đề xuất phần mềm trên Super User. Để giữ cho câu trả lời của bạn hữu ích ngay cả khi (các) liên kết được cung cấp phá vỡ các chi tiết này nên được chỉnh sửa thành câu trả lời của bạn.
Tôi nói Phục hồi Monica
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.