Định cấu hình mũi tên lên để duyệt qua các lệnh có cùng ký tự ban đầu thay vì tất cả các lệnh trước đó


15

Trên dòng bashlệnh, đưa cho tôi lệnh trước đó. Trên các dòng lệnh trong numpyhoặc matlab, khi tôi nhập một vài ký tự, đưa cho tôi lệnh đã nhập trước đó bắt đầu bằng các ký tự đó . Làm thế nào tôi có thể kích hoạt chính xác hành vi này trong bash?

Tôi biết các cách tìm kiếm nâng cao hơn trong lịch sử dòng lệnh, nhưng đôi khi một cách đơn giản lại thuận tiện hơn.

Câu trả lời:


18

Các lệnh readline mà bạn đang tìm kiếm là các history-search-*lệnh:

history-search-Forward
Tìm kiếm chuyển tiếp qua lịch sử cho chuỗi ký tự giữa điểm bắt đầu của dòng hiện tại và vị trí con trỏ hiện tại (điểm). Đây là một tìm kiếm không gia tăng.
history-search-backward
Tìm kiếm ngược qua lịch sử cho chuỗi ký tự giữa điểm bắt đầu của dòng hiện tại và điểm. Đây là một tìm kiếm không gia tăng.

Liên kết những thứ này trong của bạn .inputrc, như vậy:

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

sẽ cho phép bạn nhập các ký tự đầu tiên của lệnh và sau đó sử dụng các phím UpDownđể di chuyển chỉ các lệnh trong .bash_historychuỗi bắt đầu bằng chuỗi đó.

Ví dụ, nhập viUpsẽ đưa bạn đến lệnh trước đầu tiên bắt đầu bằng vi, như vim somefile. Việc nhập Upsẽ đưa bạn đến trường hợp trước đó, v.v.

Bạn có thể đọc thêm về tất cả các ràng buộc về đường dẫn ở đây: http://linux.about.com/l Library / cmd / blcmdl3_readline.htmlm


10

Thêm phần sau vào .inputrc của bạn trong ~ /, để làm những gì bạn đề xuất:

"\e[B": history-search-forward
"\e[A": history-search-backward

Có lẽ bạn cũng có thể muốn thêm phần sau vào .bash_profile của mình:

export INPUTRC=~/.inputrc

Bạn có thể giải thích lý do tại sao làm "xuất khẩu" này?
texnic

2

Chuẩn bị một "!" theo lệnh bạn đang tìm kiếm. Nếu bạn muốn thay thế chức năng của mũi tên lên và xuống, sửa đổi tệp inputrc (giống như các câu trả lời khác gợi ý) là cách tốt nhất.

Nếu "lệnh" là lệnh bạn đang tìm kiếm, hãy nhập vào đây:

!comm

Bạn sẽ nhận được "lệnh" làm đầu ra.

Tương tự, nếu bạn muốn tìm một lệnh bao gồm (nhưng có thể không bắt đầu bằng) một phần của lệnh, hãy nhấn ctrl + r và sau đó nhập một phần của lệnh.

Bạn cũng có thể nhập "tab" để tự động hoàn thành văn bản đã nhập của mình (bao gồm cả các tệp). Điều này hữu ích nếu bạn đang tìm kiếm một lệnh không có trong lịch sử của bạn (hoặc bạn không có tệp lịch sử)

Bạn có thể đọc thêm về "làm chủ" tệp lịch sử tại đây: http : //www.thegeek ware.com/2008/08/15-examples-to-master-linux-command-line-history/

Đây là một bản sao có thể có của /programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-al yet-on-the-line


Các câu trả lời khác trả lời chính xác hơn câu hỏi của tôi, nhưng cảm ơn con trỏ tới SO (xem thêm meta.stackexchange.com/q/4708/172266 ).
gerrit
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.