(reverse-i-search) di Bash

26

Saya biasanya berakhir menggunakan CTRL+ runtuk (pencarian balik-i-), namun, kadang-kadang saya melewati perintah yang saya cari; jika saya lakukan lagi (reverse-i-search)itu tidak menemukannya lagi. Saya berasumsi bahwa pointer saat ini ke histori perintah adalah sebelum perintah yang saya cari.

Apakah ada yang tahu cara kembali ke perintah terbaru dalam sejarah tanpa harus mengklik 1000 kali down arrow?

Mike
sumber
1
Pencarian sebaliknya adalah fitur bash (dan perpustakaan readline), jadi saya telah mengedit judul dan sedikit pertanyaan untuk mencerminkan hal itu.
Doug Harris
jika Anda melewati perintah yang Anda inginkan, lakukan CTRL+SHIFT+Runtuk kembali
Ricky Robinson

Jawaban:

7

Ada pertanyaan serupa di stackoverflow.com .

Jawaban terbaik yang ada Ctrl+Guntuk membatalkan pencarian saat ini.

Doug Harris
sumber
Ini sebenarnya bukan jawaban terbaik. Jawaban terbaik adalah salah satu yang diberikan oleh Dennis Williamson: add stty -ixondi Anda .bashrc(atau dalam beberapa lainnya file konfigurasi yang sesuai), dan kemudian Ctrl-Slangkah maju dalam sejarah, sama seperti Ctrl-Glangkah mundur. Pertama Ctrl-Smenekan tombol setelah Ctrl-Gperubahan reverse-i-searchke i-search, berikutnya Ctrl-Smengambil langkah pertama ke depan. Kemudian masing Ctrl-S- masing mengambil satu langkah lebih maju.
nrz
atau jika Anda sudah menghentikan pencarian (mis. dengan menekan esc atau tombol panah), Anda dapat menekan Esc diikuti oleh '>'
Superole
38

Sebenarnya, jawaban lain untuk pertanyaan itu memberikan opsi yang lebih baik.

Di ~/.bashrctambahkan Anda baris berikut:

stty -ixon

Kemudian Anda bisa menggunakan Ctrl- suntuk melangkah maju melalui sejarah dengan cara yang sama seperti yang Anda gunakan Ctrl- runtuk mundur.

Ini bahkan akan berfungsi untuk memulai pencarian maju baru (disebut i-searchsebagai lawan reverse-i-search) saat menelusuri sejarah. Misalkan Anda melakukannya Ctrl- rdan ketikkan beberapa teks dari perintah di dekat tujuan Anda kemudian tekan panah beberapa kali melampaui apa yang sebenarnya Anda cari (atau Anda berubah pikiran). Sekarang tekan Ctrl- sdan ketikkan beberapa karakter dari baris itu. Zoooom! Langsung saja.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
2
apa implikasi dari stty -ixon? apakah itu menonaktifkan sesuatu yang mungkin diperlukan dalam situasi lain?
Gregory Pakosz
7
@GregoryPakosz: Ini menonaktifkan XON / XOFF ( kontrol aliran perangkat lunak ), yang tidak berguna dari keyboard sekarang karena kami berkomunikasi dengan kecepatan yang sedikit lebih tinggi dari 300 baud.
Dijeda sampai pemberitahuan lebih lanjut.
terima kasih, googled untuk sementara waktu dan sampai pada kesimpulan yang sama, sebagian besar tidak berguna saat ini
Gregory Pakosz