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"

ripper234
sumber

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.

Andy
sumber
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