Bash'te büyük / küçük harf duyarlı olmayan sekme tamamlama


131

Bash sekmesini tamamlama vakasını duyarsız hale getirmenin bir yolu var mı?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.

Mac OS X 10.6 kullanıyorum

Yanıtlar:


158

İçindeki metni güncelle /etc/inputrc içermek

set completion-ignore-case on

Sonra kullan ^X ^R yapılandırmayı yeniden yüklemek için


27
"aynı zamanda" - /etc/inputrc veya ~/.inputrc veya belirtilen bir dosya INPUTRC gidebilecekleri tek yerler. Bunu Bash komut istemine girmek işe yaramaz.
Dennis Williamson

hoppala! haklısın :)
John T

8
^X ^R yeniden yüklemek inputrc
grawity

14
@DennisWilliamson: yapabilir bind "set completion-ignore-case on" komut satırından; inanıyorum ki, sadece bu terminal oturumu
Clay Bridges

1
Yani işte msysgit'in sahip olduğu fakat MSYS2'de eksiklik var! Burada, örneğin onu bulmaya çalışıyordum. / etc / profile ...
SamB

104

Kullanmanın artılarını ve eksilerini karşılaştırmak için hindsight'ın yararıyla yeniden yapılandırıldı [.]inputrc vs. .bash_profile.
Şapkanın ucu underscore_d onun yardımı için.

Not: Bash'deki komut satırı düzenlemesi, Readline kütüphanesi tarafından sağlanır; kişiselleştirmek önemsiz, ama iyi öğrenmeye değer; özellikleri, önceden tanımlanmış metin parçacıklarını eklemek için özel klavye kısayolları tanımlamayı içerir - bkz. Komut Satırı Düzenleme Bash Referans Kılavuzunda

için kalıcı Bash'te sekme tamamlama özelliğine duyarsız hale getirme:


Seçenek A: Zaten varsa:

  • bir /etc/inputrc dosya (sistem genelinde geçerlidir, değişiklik yapılması gerekir) sudo )
  • ve / veya a ~/.inputrc dosya (kullanıcıya özel)

    ve / veya

readline kütüphanesini kapsamlı şekilde kişiselleştirmeyi planlıyorsanız ve / veya kişiselleştirmeleri etkili hale getirmek istiyorsanız senaryo onlar da aradığında read -e:

Satır ekle

set completion-ignore-case on

için ya ayarının etkili olup olmamasına bağlı olarak herşey kullanıcılar veya şimdiki kullanıcı (gerekirse dosyayı oluşturun).

Dosya ve dizin adlarının tamamlanmasını kolaylaştıran ilgili komut şudur:

set show-all-if-ambiguous on

Bu, Tab tuşuna basılmasını gereksiz kılar iki defa Birden fazla eşleşme olduğunda.


Seçenek B: Alternatif olarak, kullanıcıya özgü Readline komutları ekleyebilirsiniz. ~/.bash_profile OS X'deki dosya (veya ~/.bashrc Linux'ta), onları bir tek argümanı bind builtin :

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"

Bunu not et bind komutları ~/.bash_profile / ~/.bashrc her ikisinde de eşdeğer komutlardan öncelikli olmak /etc/inputrc veya ~/.inputrc.

Yukarıda belirtildiği gibi, bu şekilde tanımlanan Readline yapılandırması değil etkili olmak senaryo bu çağrı read -e Kullanıcı girişi okumak için Readline desteğini etkinleştirmek için.


9
show-all-if-belirsiz çok güzel! Bu eylemi gerçekleştirmek için neden beni iki kez sekme yaptıklarını sık sık merak ederdim. geleceğimde binlerce tuşa basma! Teşekkürler!
user34112

4
Harika, hatta için çalışıyor cd emreder. Hangi çözer bu soru ve ayrıca beni binlerce tuşa basıştan kurtaracak. :)
hoosierEE

1
Büyük nokta yeniden show-all-if-ambiguous. Ancak, “alternatif olarak” dediğiniz için, bunu yapmaktan gerçekten fayda var mı? bind, ne zaman inputrc dosyalar bunu gereksiz kılıyor?
underscore_d

1
@underscore_d: Güzel soru; lütfen güncellenmiş cevabımı gör.
mklement0

1
Harika, teşekkürler! 8.2’de Debian 8.2’de inputrc, ama mutlu bir şekilde yarattım ~/.inputrc & Sons; Bunları ve diğer gerçekten faydalı yönergeleri ekledi. Sanırım tüm okuyucuların bunu bildiğini varsayıyoruz /etc/inputrc diğer kullanıcıları etkiler (ikincisi etkilenen ayarları geçersiz kılmadıkça)? Sadece biz uyarılardan bahsederken;)
underscore_d

1

Tüm kullanıcılar için yapılandırmayı değiştirmekten ve kök izinlerinden kaçınmak için aşağıdakileri kullanın:

if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc

Sonra yeniden giriş yapın veya ~ / .inputrc dosyasını yeniden yükleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.