Làm thế nào để làm cho tiền sử bash nhạy cảm?


8

Làm cách nào tôi có thể nhấn lên / xuống trên bash để hiển thị lệnh cuối cùng bắt đầu bằng tiền tố tôi đã nhập?

Ví dụ

$ ls foo
$ echo hello
$ ls <UP_ARROW>

Nhấp vào LÊN sau khi nhập ls sẽ hiển thị "ls foo" chứ không phải "echo hello"

Câu trả lời:


11

Một vài khả năng:

  1. Ràng buộc các history-search-backward/forwardlệnh. Tôi tin rằng đây là gần nhất với những gì bạn muốn:

    bind '"\e[A":history-search-backward'
    bind '"\e[B":history-search-forward'
  2. Sử dụng lịch sử i-search. Điều này có lẽ bị ràng buộc với ^R. Trên một dòng trống, ^Rls<space>sẽ đưa bạn trở lại ls foo, sau đó ^Rmột lần nữa sẽ đưa bạn đến lslệnh cuối cùng (hoặc lệnh khác với lsmột nơi nào đó trong dòng) trước ls foo, v.v ...

  3. Ràng buộc magic-spacelệnh : bind SPACE:magic-space. Sau đó nhập (trên một dòng trống) !ls<space>và readline sẽ tự động thực hiện thay thế lịch sử, để lại cho bạn ls foo.


1
Cảm ơn. Tôi đã chọn tùy chọn 1 và với sự trợ giúp của câu trả lời cũ này, nhận ra rằng \ e [B sẽ liên kết mũi tên xuống.
ripper234

Tôi đã chỉnh sửa câu hỏi của bạn để bao gồm tìm kiếm lịch sử-chuyển tiếp (tốt, đã gửi một chỉnh sửa cho hàng đợi chỉnh sửa)
ripper234
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.