Sekmede Bash'i otomatik olarak tamamlamayı büyük / küçük harfe duyarlı hale getirebilir miyim?


144

Ubuntu'nun Terminali, Linux için bekleneceği gibi büyük / küçük harf duyarlı otomatik tamamlama kullanıyor.

Ancak bunun yerine, büyük / küçük harf duyarsız bir tanesini kullanmanın, bir ad verirken doğru olmanızdan ve muhtemelen fazladan yanlış pozitiflere değeceğinden kurtarmanın daha uygun olacağını düşünüyorum. Bu davranışı değiştirmek mümkün mü?


Çok güzel bir soru. Kullanılabilirlik aracı olarak, sekme tamamlama işlemi, bilgisayarların adlandırılması söz konusu olduğunda genel olarak katı olmamalıdır.
masterxilo

Yanıtlar:


169

Yapmak amacıyla bashmevcut kullanıcıya yönelik küçük harf duyarsız:

Bir terminalde aşağıdaki kabuk betiğini çalıştırın:

# If ~/.inputrc doesn't exist yet: First include the original /etc/inputrc
# so it won't get overriden
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi

# Add shell-option to ~/.inputrc to enable case-insensitive tab completion
echo 'set completion-ignore-case On' >> ~/.inputrc

Yeni bir kabuk başlat (terminali yeniden aç).

Değişiklikleri sistem genelinde yapmak için:

# add option to /etc/inputrc to enable case-insensitive tab completion for all users
echo 'set completion-ignore-case On' >> /etc/inputrc
# you may have to use this instead if you are not a superuser:
echo 'set completion-ignore-case On' | sudo tee -a /etc/inputrc

Detaylar için bakınız man bash. Evet, uzun bir sayfadır, ancak bash biraz karmaşık bir programdır ve bu sayfayı sadece "büyük / küçük harf duyarlı" olarak adlandırıp ilgili bölüme gitmek istiyorsanız arayın. İnsanlar genellikle bir anda bir seçenek veya bir anda bir bash komut dosyası öğrenir ve tüm nüanslara hakim olmak uzun zaman alır. İlginiz değişebilir.


Teşekkürler. Kullanıcıya özel / yönetici dostu olmayan çözümü takdir ediyorum. Eko çizgisi işe yaramış gibi görünüyor, ancak şimdi imleci hareket ettirmek için Ctrl-Left / Right kullanma yeteneğini kaybetmiş gibiyim. Ayrıca, daha >>güvenli olurdu >?
mwfearnley

Genel olarak >> daha güvenli olacak, benim hatam, sanırım bir ~ / .inputrc olmadığını sanıyordum. Ayrıca noclobber =) 'i ayarladım. Ok tuşlarının neden çalışmadığından eminim, bunu çoğaltamıyorum. ~ / .İnputrc dosyasını kaldırabilir ve yeni bir kabuk başlatabilirsiniz.
Panter

Evet, kaldırırsam yine işe yarar .. linuxfromscratch.org/blfs/view/5.1/postlfs/inputrc.html 'e göre yeni inputrc küresel olanı geçersiz kılabilir mi?
mwfearnley

2
Lanet olsun, bunu / etc / inputrc içine kopyaladım ve artık "i" yazamıyorum ve "e" yazdığımda konsola "ssssssssss [..]" yazıyor. @ Emtin4
Luca Steeb

2
@LucaSteeb Ben de buna çarptım, ama sonra tüm bloğun .inputrc'nize koyulmaması gerektiğini, ancak bir kez yazıldığını fark ettim. Sadece $include /etc/inputrcve set completion-ignore-case on~ ..inputrc dosyanızda olmalıdır.
Chris

49

Bir terminal açın ve aşağıdaki komutu yazın:

echo set completion-ignore-case on | sudo tee -a /etc/inputrc

Şifre girin. Terminali tekrar başlat.

Bazı durumlarda büyük / küçük harf duyarlılığını kaldırmak istiyorsanız, set completion-ignore-casesatırı kaldırarak / etc / inputrc dosyasını düzenleyin .

Bu kadar.


Tamam, bunu senin için açıklığa kavuşturdum. Bash hakkında bilgi edinmek biraz zaman alır, ancak araştırmaya, okumaya ve sormaya devam edin. linuxcommand.org popüler bir başlangıç;)
Panter

3
Birden fazla kullanıcı olması durumunda, bu durum onu ​​herkes için değiştirir, bu istenen davranış olabilir veya olmayabilir
Walter Tross

2
şimdiye kadarki en yalındır ve basit cevap
workabyte

basit ve net cevap
Developerium

12

Bu sorunun çok eski olduğunu biliyorum ama bir şeyleri özümsemediğim sürece bash kullanıyorsanız süper basit bir çözümüm olduğunu düşünüyorum.

echo "bind 'set completion-ignore-case on'" >> ~/.bashrc

Veya sadece favori metin düzenleyicinizi kullanarak satırı ekleyin. Bash oturumunuzu yeniden başlatın ve tadını çıkarın.


2
Pekala, bir şeyi kaçırıyorsunuz: ~/.inputrcbash'ın bu tamamlamayı sağlamak için kullandığı şey , readline tarafından okunur. Readline, diğer programlar tarafından da kullanılır, bu nedenle, genel olarak bunu belirlemek için , kabul edilen cevabın daha iyi olacağını ~/.inputrcönerdiği gibi .
muru

Öneriniz için teşekkür ederim, bana biraz daha öğretir, ancak kabul ediyorum olandan daha basit görünmediğini söylemeliyim, bu da yeni dosyanın eskisini geçersiz kılmadığından emin olmak için ek bir satır kullanıyor.
mwfearnley

mükemmel. iyi hatırlanması bind 'set completion-ignore-case on'gereken tek şey yeni bir çizgide gitmeli.bashrc
Vishrant

3

Bunu, etkileşimli bir kabuktaki girişi ele alan GNU okuma satırı için bir yapılandırma değişkeni ayarlayarak yapabilirsiniz.

Gereken değişken completion-ignore-case, ve doğrudan bash oturumunuzda aşağıdakilerle ayarlanabilir:

bind "set completion-ignore-case on"

Tüm kullanıcılar için etkinleştirmek üzere, kullanıcıların ~/.inputrcdosyalarına veya sisteme yerleştirerek gelecekteki tüm bash oturumları /etc/inputrciçin etkinleştirilebilir. Bu, readline için başlatma dosyasıdır.

Ancak ~/.inputrc, oluşturursanız , bunun sistem kopyasını geçersiz kılacağına dikkat edin . (Benim için bu, Ctrl-Left/ gibi bazı anahtar eşlemelerini kaybetmeme neden oldu Right. Dosyayı inceleyerek hangilerini görebilirsiniz /etc/inputrc.)
Bu sorunu çözmenin yolu, çizgiyi $include /etc/inputrcen üstüne koymaktır ~/.inputrc, örneğin:

$include /etc/inputrc

set completion-ignore-case on

Değişiklikleri uygulamak için bash'ı yeniden başlatın veya inputrc'i yeniden yükleyin , örneğin Ctrl+x, ile Ctrl+r.

Taleb ve inputrc hakkında daha fazla bilgi bulunabilir man bashve man 3 readline.

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.