Apakah ada cara untuk membuat Bash tab menyelesaikan kasus dengan tidak sensitif?
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Saya menggunakan Mac OS X 10.6
Apakah ada cara untuk membuat Bash tab menyelesaikan kasus dengan tidak sensitif?
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Saya menggunakan Mac OS X 10.6
Jawaban:
Perbarui teks /etc/inputrcuntuk disertakan
atur penyelesaian-abaikan-kasus aktif
Kemudian gunakan ^X ^Runtuk memuat ulang konfigurasi.
^X ^Runtuk memuat ulanginputrc
bind "set completion-ignore-case on"dari baris perintah; karena, saya percaya, sesi terminal itu saja
Direstrukturisasi dengan manfaat dari belakang untuk kontras pro dan kontra dari menggunakan [.]inputrcvs .bash_profile.
Kiat topi untuk menggarisbawahi _ bantuannya.
Catatan: Pengeditan baris perintah di Bash disediakan oleh pustaka Readline; mengkustomisasi itu tidak sepele, tetapi layak dipelajari; fitur-fiturnya termasuk kemampuan untuk menentukan pintasan keyboard khusus untuk memasukkan potongan teks yang telah ditentukan - lihat Pengeditan Baris Perintah dalam Manual Referensi Bash
Untuk secara terus - menerus membuat penyelesaian huruf-huruf tidak sensitif di Bash:
Opsi A: Jika Anda sudah memiliki:
/etc/inputrcfile (berlaku untuk seluruh sistem, membutuhkan modifikasi sudo) dan / atau ~/.inputrcfile (khusus pengguna)
dan / atau
Anda berencana untuk menyesuaikan pustaka readline secara luas dan / atau ingin menjadikan kustomisasi juga efektif untuk skrip ketika mereka memanggil read -e:
Tambahkan baris
set completion-ignore-case on
ke salah satu file, tergantung pada apakah Anda ingin pengaturan menjadi efektif untuk semua pengguna atau pengguna saat ini (buat file, jika perlu).
Perintah terkait yang membuat penyelesaian nama file dan direktori lebih mudah adalah:
set show-all-if-ambiguous on
Ini membuatnya tidak perlu untuk menekan Tab dua kali ketika ada lebih dari satu kecocokan.
Opsi B: Atau, Anda dapat menambahkan perintah Readline ke ~/.bash_profilefile khusus pengguna Anda di OS X (atau ~/.bashrcdi Linux), dengan meneruskannya sebagai argumen tunggal ke bindbuiltin :
bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"
Perhatikan bahwa bindperintah di ~/.bash_profile/ ~/.bashrcdiutamakan daripada perintah yang setara di salah satu /etc/inputrcatau ~/.inputrc.
Seperti tersirat di atas, konfigurasi Readline yang ditentukan dengan cara ini tidak akan berpengaruh pada skrip yang memanggil read -euntuk mengaktifkan dukungan Readline untuk membaca input pengguna.
cdperintah. Yang memecahkan pertanyaan ini dan akan menyelamatkan saya ribuan penekanan tombol juga. :)
show-all-if-ambiguous. Namun, karena Anda mengatakan "sebagai alternatif", apakah sebenarnya ada manfaatnya melakukan hal ini melalui bind, ketika inputrcfile - file tersebut tampaknya tidak perlu?
inputrc, tapi saya dengan senang hati membuat ~/.inputrc& menambahkan ini, ditambah arahan lain yang sangat berguna. Saya kira kami menganggap semua pembaca tahu yang /etc/inputrc memengaruhi pengguna lain (kecuali yang terakhir mengabaikan pengaturan yang terpengaruh)? Tepat saat kami menyebutkan peringatan;)
Untuk menghindari perubahan konfigurasi untuk semua pengguna dan untuk menghindari izin root gunakan yang berikut:
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc
Kemudian masuk kembali atau muat ulang ~ / .inputrc
/etc/inputrcatau~/.inputrcfile yang ditunjuk olehINPUTRCadalah satu-satunya tempat yang bisa dituju. Memasukkannya di Bash prompt tidak akan berhasil.