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/inputrc
untuk disertakan
atur penyelesaian-abaikan-kasus aktif
Kemudian gunakan ^X ^R
untuk memuat ulang konfigurasi.
^X ^R
untuk 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 [.]inputrc
vs .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/inputrc
file (berlaku untuk seluruh sistem, membutuhkan modifikasi sudo
) dan / atau ~/.inputrc
file (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_profile
file khusus pengguna Anda di OS X (atau ~/.bashrc
di Linux), dengan meneruskannya sebagai argumen tunggal ke bind
builtin :
bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"
Perhatikan bahwa bind
perintah di ~/.bash_profile
/ ~/.bashrc
diutamakan daripada perintah yang setara di salah satu /etc/inputrc
atau ~/.inputrc
.
Seperti tersirat di atas, konfigurasi Readline yang ditentukan dengan cara ini tidak akan berpengaruh pada skrip yang memanggil read -e
untuk mengaktifkan dukungan Readline untuk membaca input pengguna.
cd
perintah. 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 inputrc
file - 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/inputrc
atau~/.inputrc
file yang ditunjuk olehINPUTRC
adalah satu-satunya tempat yang bisa dituju. Memasukkannya di Bash prompt tidak akan berhasil.