OSX'te bash küçük harf duyarsız mı?


79

OSX durumunda bash komutları duyarsız mı? Ben "hangi TR" yazarım ve / usr / bin / TR ibaresini gösterir, ancak böyle bir ikili sistem yoktur. Büyük harf kullanıldığında diğer ikili dosyalar için aynı şey. Veya Terminal.app belki de bu çeviri yapıyor? Bunu nasıl kapatabilirim?


Meraktan, neden bunu kapatmak istiyorsun?
Sören Kuklau

Bu muhteşem bir soru. Bash, vakaların aralıklarla eşleşip eşleşmediğini kontrol etmek için bir nocaseglob seçeneğine sahip, ancak bu küçük kandırmaca, normal localeve tamamlanma-yoksay-case / nocaseglob'dan
bmike

3
Kapatmamın sebebi aptalca, gerçekten. Kabukta çalışırken hassasiyeti küçük tutmaya alışkınım. Sadece bu özelliğin beni etkileyeceğinden endişeleniyorum. Örnek olarak, bir bash betiği yazarım, mistype 'lS'; komut dosyası OSX'te iyi çalışır. Onu cenTOS kutuma taşıdım ve kırılıyor. Verilen, tespit edilmesi ve düzeltilmesi kolay olacak, ancak senaryoları iki sistem arasında aynı şekilde çalıştırabilirsem senaryoyu tamamen önleyebilirdi. Bunu kazara keşfettim ve şu ana kadar sıkıntı yaşamadım, bu yüzden muhtemelen sadece bunun için alıştırma değiştirme dosya sistemlerinden geçmeyeceğim.
1'de

5
Bunu kapatmak isteyip istemediğinizin nedeni, duyarsızlığın SVN gibi bazı uygulamalar için sorunlara neden olmasıdır. Büyük / küçük harf duyarsız globbing yararlı olabilir, ancak "Foo" adlı bir dosya oluşturursanız SVN'nin kafası karışır, daha sonra depo bir şekilde "foo" için bir referans oluşturur.

Devre dışı bırakmanın başka bir nedeni: 1980'den bu yana yolumda ~ / bin / CC betiğini kullandım. Cc artı bazı hoş varsayılanlar. UNIX v6'dan v7'ye, Eunice, BSD 4.1, 4.2, 4.3, SVr4, Xenix, Gould UTX, Linux, cygwin ... ve MacOS'ta ilk kez sonsuz özyinelemede çalıştı.
Krazy Glew

Yanıtlar:


94

Bu aslında bash veya Terminal.app değil, diskinizin dosya sisteminin bir özelliğidir.

HFS + (Mac dosya sistemi) genellikle büyük / küçük harfe duyarlı değil, büyük / küçük harfe koruma sağlayacak şekilde yapılandırılmıştır . Bu dosya sistemi ele alacağız demektir foove FoOaynı olacak şekilde, ancak yeni bir dosya oluştururken bu harfle nerede ve hangi hangi harfleri hatırlayacaktır.

Bir diski HFS + ile biçimlendirdiğinizde, dosya sisteminin büyük / küçük harf duyarlı olup olmamasını seçebilirsiniz. UFS (Unix FileSystem) ile formatlamayı seçtiyseniz, her zaman büyük / küçük harf duyarlıdır, AFAIK.

Bir diskin büyük / küçük harf duyarlı olup olmadığını kontrol etmek için, aşağıdakileri çalıştırın:

 diskutil info <device>

Örneğin:

 diskutil info disk0s2

Arayın Name:hattı. Eğer böyle bir şey okursa Mac OS Extended (Case-sensitive, Journaled)büyük-küçük harf duyarlıdır. Sadece Mac OS Extended(okunmadan Case-sensitive) okursa , sadece büyük / küçük harfe duyarlı ancak büyük / küçük harfe duyarlı değildir .


6
Unix'in dışında, doğayı koruyan dava pek sıra dışı değil. Örneğin, NTFS aynıdır: varsayılan olarak büyük / küçük harfe duyarlı değildir, ancak öyle biçimlendirebilirsiniz. Ayrıca, vakanın duyarsız olduğunu varsayılan olarak Mac OS 9 üzerinden aldığımı düşünüyorum , ancak birçok Mac ve Windows geliştiricisinin bu konuda tembel olduğu ve doğru kasayı önemsemediği gerçeği, büyük / küçük harf duyarlılığına geçmeyi neredeyse imkansız hale getiriyor , çok sayıda uygulamayı keser. Unix'ten gelince, ilk başta çok garip buldum.
DarkDust

1
İtiraf etmeliyim ki, hiç Klasik Mac OS kullanmadım, tahmin ediyorum. Her iki şekilde de, cevap budur ve DarkDust benden daha iyi ifade etti, bence bu kabul edilmeli.
Stuffe

6
Mac OS'un her sürümü, kullanılabilirlik nedenleriyle, büyük / küçük harfe duyarsız ancak koruyucudur. UNIX kesinliği tercih ederken (dosya adlarının byte byte'larının karşılaştırılması), yanlışlıkla 'Resume' ve 'REsume' kayıtlarını biriktiren ve yanlış sürümü açtıklarında ve tüm değişiklikleri bittiğinde kafayı karıştıran son kullanıcılar için kullanılabilir bir kabus olabilir. .
Dan Udey

2
Öte yandan, bu olabilir de yerine yürütülmekte olan program / usr / bin / head (Bir dosyanın ilk satırları göster) komut satırı sonuçlarına "HEAD" yazarken bir "kullanılabilirlik kabus" olarak yerel / usr / / bin / HEAD (LWP'den: bir HTTP 'HEAD' isteği yap).
TML

2
Her büyük harf karakteri için bir küçük harf eşdeğeri olduğunu ve bunun tersinin de İngilizce konuşan programcıların tipik olduğunu ve yerelden bağımsız olmadığını düşünün. Türkçe için hangi çözümün benimsendiğini bilmiyorum i, DOTTED büyük harfe tekabül eden noktalı küçük harf İvarken, dotless büyük harf IDOTLESS küçük harfe karşılık gelir ı, ancak HERHANGİ bir çözüm kötü olacaktır. Peki ßya sık sık 2 Ssaniye ile kapitalize edilen Almanlar ? Ve büyük harf kullanılırken çoğunlukla bırakılan aksanlar? Ve ... Vaka duyarlılığı tüm bu baş ağrıları ile ortadan kaldırıyor.
Walter Tross

5

HFS'de hem büyük / küçük harfe duyarlı hem de büyük / küçük harf duyarlı olmayan varyasyonlar bulunduğundan dosya sisteminize bir bakın. Varsayılan değer büyük / küçük harf duyarsızdır; bu durumda BASH durumu değil, altta yatan bir dosya sistemidir. Bunu, büyük / küçük harfe duyarlı seçeneğiyle yedek bir USB çubuğu biçimlendirerek ve testinizi tekrar etmek için dosyaları kopyalayarak, vb. Test edebilirsiniz.



1

Bash kesinlikle büyük / küçük harf duyarlıdır.

Ben sadece terminale whoami yazdım ve caps lock butonu açıktı.

WHOAMİ'den tamamen farklı bir yanıt aldım.

'Hangi' ile bir WHOAMI komutu olduğunu görebiliyorum, ancak 'ls' ile bulamıyorum.


4
Bu, büyük / küçük harfe duyarlı olan kabuk değil, whoamiprogramın kendisi. Aslında aynı program id, ancak hangi adın çalıştırıldığını kontrol eder ve id -un"whoami" adı altında çalıştırıldığında farklı bir çıktı (eşdeğer ) kullanır . Bu çek büyük / küçük harf duyarlıdır. Çıktısını karşılaştırın id, WHOAMI, WhOaMi, WhoAmI, vb Ayrıca, çıktısını karşılaştırmak ls -li /usr/bin/whoamiVS ls -li /usr/bin/WHOAMI, ve düğüm numarası (çıktıda listelenen ilk şey) aynı olduğuna dikkat - onlar aynı dosyasının belirtilmesinden iki farklı şekilde konum .
Gordon Davisson
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.