Konfigurasikan panah atas untuk menelusuri perintah dengan karakter awal yang sama dan bukan semua perintah sebelumnya

15

Pada baris bashperintah, beri saya perintah sebelumnya. Pada baris perintah di numpyatau matlab, ketika saya mengetik beberapa karakter, beri saya perintah yang dimasukkan sebelumnya dimulai dengan karakter tersebut . Bagaimana saya bisa mengaktifkan perilaku ini dengan tepat bash?

Saya menyadari cara yang lebih maju dalam mencari melalui sejarah baris perintah, tetapi kadang-kadang cara sederhana lebih mudah.

gerrit
sumber

Jawaban:

18

Perintah readline yang Anda cari adalah history-search-*perintah:

history-search-forward
Cari maju melalui sejarah untuk string karakter antara awal baris saat ini dan posisi kursor saat ini (titik). Ini adalah pencarian non-tambahan.
history-search-backward.
Cari mundur melalui sejarah untuk string karakter antara awal baris saat ini dan titik. Ini adalah pencarian non-tambahan.

Mengikat ini di Anda .inputrc, seperti:

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

akan memungkinkan Anda untuk memasukkan karakter pertama dari suatu perintah, dan kemudian menggunakan tombol Updan Downuntuk bergerak hanya melalui perintah-perintah di Anda .bash_historyyang dimulai dengan string itu.

Misalnya, memasukkan vidan Upakan membawa Anda ke perintah sebelumnya pertama yang dimulai dengan vi, seperti vim somefile. Memasukkan Upakan membawa Anda ke contoh sebelumnya berikutnya, dan seterusnya.

Anda dapat membaca lebih lanjut tentang semua binding readline di sini: http://linux.about.com/library/cmd/blcmdl3_readline.htm

jasonwryan
sumber
10

Tambahkan berikut ini ke .inputrc Anda di ~ /, untuk melakukan apa yang Anda sarankan:

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

Mungkin Anda juga ingin menambahkan yang berikut ke .bash_profile Anda:

export INPUTRC=~/.inputrc
johankj
sumber
Bisakah Anda menguraikan mengapa melakukan "ekspor" ini?
texnic
2

Tambahkan "!" ke perintah yang Anda cari. Jika Anda ingin mengganti fungsionalitas panah atas dan bawah, memodifikasi file inputrc (seperti jawaban lainnya) adalah cara yang harus dilakukan.

Jika "perintah" adalah perintah yang Anda cari, masukkan ini:

!comm

Anda harus mendapatkan "perintah" sebagai output.

Demikian juga, jika Anda ingin menemukan perintah yang menyertakan (tetapi mungkin tidak dimulai dengan) bagian dari perintah, tekan ctrl + r dan kemudian ketik bagian dari perintah.

Anda juga dapat mengetik "tab" untuk secara otomatis melengkapi teks yang Anda masukkan (ini termasuk file juga). Ini berguna jika Anda mencari perintah yang tidak ada dalam riwayat Anda (atau Anda tidak memiliki file riwayat)

Anda dapat membaca lebih lanjut tentang "menguasai" file sejarah di sini: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/

Ini adalah duplikat dari /programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line

Vreality
sumber
Jawaban lainnya menjawab pertanyaan saya dengan lebih tepat, tetapi terima kasih atas penunjuknya ke SO (lihat juga meta.stackexchange.com/q/4708/172266 ).
gerrit