Eksik bir dizin adı verildiğinde cd'nin otomatik olarak seçilmesi standart davranış mıdır?


17

Aradım üç klasörler ProjectA, ProjectBve ProjectC. Ne zaman tab-tam cdiçin cd Projectbasın Enter, bu seçer ProjectC. Bunun diğer benzer davalarda da geçerli olduğunu gördüm; varsayılan olarak sözlük sırasına göre sonuncudur (ancak bu en son değiştirilebilir / eklenebilir).

Bu beklenen varsayılan davranış mı cd, yoksa burada yanlışlıkla bir şey ayarladım mı?

Ben bash 4.3 ile OSX 10.10.3 kullanıyorum.

Yanıtlar:


18

Bu davranışla karşılaşmıyorum. Ama yeniden üretebildim. Belki de seçeneği yanlışlıkla değiştirdiniz cdspell. Bash Referans Kılavuzuna bakın :

cdspell

Ayarlanırsa, cd komutundaki bir dizin bileşeninin yazımındaki küçük hatalar düzeltilir. Kontrol edilen hatalar, aktarılmış karakterler, eksik bir karakter ve çok fazla karakterdir. Bir düzeltme bulunursa, düzeltilen yol yazdırılır ve komut devam eder. Bu seçenek yalnızca etkileşimli kabuklar tarafından kullanılır.

Denedim ve verilen argümandaki yolu her zaman düzeltir cd. Birden ile klasördeki gibi olasılıklar varsa ProjectA, ProjectBve ProjectCdizin sırayla sonuncu birine, varsayılan olarak. Bunu kontrol edebilirsiniz ls -U. Örneğe bakın:

user@host:~$ ls -Ul
total 0
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectA
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectB
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectC
user@host:~$ cd Project<tab><tab>
ProjectA/ ProjectB/ ProjectC/
user@host:~$ cd Project
ProjectC
user@host:~/ProjectC$

Bu davranışı devre dışı bırakmak için şunu kullanın:

shopt -u cdspell

İlginç, ama neden dizin sıralamasında sonuncuyu seçiyor? Bu belgelenmemiş gibi görünüyor.
Faheem Mitha

Bunun için bir kaynak bulamıyorum. Bash'ın kaynak kodunda spname, doğru yazılan dosya adını döndüren bir işlev vardır . Bu esinlenmiştirthe code in "The UNIX * Programming Environment", Kernighan & Pike, Prentice-Hall 1984, pages 209 - 213.
kaos

Bir dokümantasyon hatası gibi görünüyor. Muhtemelen bash'a rapor etmelisin. Bunu yaparsanız, cevabınıza hatanın bağlantısını ekleyebilirsiniz.
Faheem Mitha

@chaos Ah evet, shopt -s cdspellbenim ayarladığımı görüyorum .bashrc(bir sürü osx / linux çapraz uyumlu hale getirme ve yapıştırma yaptım .bashrcve açıkça daha fazla dikkat etmeliydim). Aslında hoşuma gitti, nedenini bulmak için bir arama yapamadım. Teşekkürler!
Rob Holt
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.