(tìm kiếm ngược) trong Bash


26

Tôi thường kết thúc bằng cách sử dụng CTRL+ rfor (đảo ngược i-search), tuy nhiên, đôi khi tôi truyền lệnh mà tôi đang tìm kiếm; nếu tôi làm lại (reverse-i-search)thì nó không tìm thấy nữa. Tôi giả sử rằng con trỏ hiện tại của lịch sử lệnh là trước lệnh tôi đang tìm kiếm.

Có ai biết làm thế nào để quay lại lệnh mới nhất trong lịch sử mà không cần phải nhấp 1000 lần down arrowkhông?


1
Tìm kiếm ngược là một tính năng của bash (và các từ khóa đọc), vì vậy tôi đã chỉnh sửa tiêu đề và đặt câu hỏi một chút để phản ánh điều đó.
Doug Harris

nếu bạn đi qua lệnh bạn muốn, CTRL+SHIFT+Rhãy quay lại
Ricky Robinson

Câu trả lời:


7

Có một câu hỏi tương tự trên stackoverflow.com .

Câu trả lời tốt nhất là sử dụng Ctrl+Gđể hủy tìm kiếm hiện tại.


Đây thực sự không phải là câu trả lời tốt nhất. Câu trả lời tốt nhất là câu trả lời được đưa ra bởi Dennis Williamson: thêm stty -ixonvào .bashrc(hoặc trong một số tệp cấu hình tương ứng khác), và sau đó Ctrl-Sbước về phía trước trong lịch sử, tương tự như Ctrl-Gcác bước lùi. Ctrl-SNhấn phím đầu tiên sau khi Ctrl-Gthay đổi reverse-i-searchthành i-search, bước tiếp theo Ctrl-Sthực hiện bước đầu tiên về phía trước. Sau đó, mỗi Ctrl-Sngười tiến một bước về phía trước.
nrz

hoặc nếu bạn đã kết thúc tìm kiếm (ví dụ: bằng cách nhấn esc hoặc phím mũi tên), bạn có thể nhấn Esc theo sau là '>'
Superole 24/2/2015

38

Trên thực tế, một câu trả lời khác cho câu hỏi đó cho một lựa chọn tốt hơn.

Trong dòng của bạn ~/.bashrcthêm dòng sau:

stty -ixon

Sau đó, bạn có thể sử dụng Ctrl- sđể bước qua lịch sử theo cách tương tự như bạn sẽ sử dụng Ctrl- rđể lùi lại.

Điều này thậm chí sẽ hoạt động để bắt đầu một tìm kiếm chuyển tiếp mới (được gọi i-searchlà trái ngược với reverse-i-search) trong khi duyệt qua lịch sử. Giả sử bạn làm Ctrl- rvà nhập một số văn bản của một lệnh gần đích của bạn sau đó nhấn mũi tên lên nhiều lần để vượt quá những gì bạn thực sự tìm kiếm (hoặc bạn thay đổi ý định). Bây giờ nhấn Ctrl- svà nhập một vài ký tự từ dòng đó. Sở thú! Thẳng đến đó.


2
ý nghĩa của stty -ixon là gì? nó vô hiệu hóa một cái gì đó có thể cần thiết trong các tình huống khác?
Gregory Pakosz

7
@GregoryPakosz: Nó vô hiệu hóa XON / XOFF ( điều khiển luồng phần mềm ), điều này vô dụng với bàn phím khi chúng ta giao tiếp với tốc độ cao hơn một chút so với 300 baud.
Tạm dừng cho đến khi có thông báo mới.

cảm ơn bạn, đã googled một thời gian và đi đến kết luận tương tự, ngày nay nó hầu như vô dụng
Gregory Pakosz
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.