Bagaimana cara membuat bash history prefix-sensitive?


8

Bagaimana cara saya membuat menekan atas / bawah pada bash memunculkan perintah terakhir yang dimulai dengan awalan yang sudah saya masukkan?

Misalnya

$ ls foo
$ echo hello
$ ls <UP_ARROW>

Mengklik setelah memasukkan ls harus memunculkan "ls foo" dan bukan "gema halo"

Jawaban:


11

Beberapa kemungkinan:

  1. Bind history-search-backward/forwardperintah. Saya percaya ini paling dekat dengan yang Anda inginkan:

    bind '"\e[A":history-search-backward'
    bind '"\e[B":history-search-forward'
  2. Gunakan histori i-search. Ini mungkin terikat ^R. Pada baris yang kosong, ^Rls<space>akan membuat Anda kembali ke ls foo, sekali ^Rlagi akan membawa Anda ke lsperintah terakhir (atau perintah lain dengan lssuatu tempat di baris) sebelumnya ls foo, dll ...

  3. Mengikat magic-spaceperintah: bind SPACE:magic-space. Kemudian ketik (pada baris kosong) !ls<space>, dan readline akan melakukan penggantian riwayat secara otomatis, meninggalkan Anda ls foo.


1
Terima kasih. Saya mengambil opsi 1, dan dengan bantuan jawaban lama ini, saya menyadari bahwa \ e [B akan mengikat panah bawah.
ripper234

Saya mengedit pertanyaan Anda untuk memasukkan pencarian-riwayat-maju (well, mengirimkan hasil edit ke antrian edit)
ripper234
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.