İnsanlar Unix dosya adlarında boşluk kullanmamanız gerektiğini söylüyor. Büyük harfleri dosya adlarında kullanmamak için iyi nedenler var mı (yani, File_Name.txt
vs. file_name.txt
)? Yoksa bu sadece kişisel tercih meselesi midir?
İnsanlar Unix dosya adlarında boşluk kullanmamanız gerektiğini söylüyor. Büyük harfleri dosya adlarında kullanmamak için iyi nedenler var mı (yani, File_Name.txt
vs. file_name.txt
)? Yoksa bu sadece kişisel tercih meselesi midir?
Yanıtlar:
İnsanlar, Unix dosya adlarında boşluk bırakmamanız gerektiğini söylüyor.
İnsanlar çok şey söylüyor. Berbat olabilecek bazı araçlar var, ancak umarız bu noktada sayıları çok azdır, çünkü alanlar dev tüketici tescilli OS şirketleri tarafından çoğalan bir virüstür ve bundan kaçınmak imkansızdır.
Boşluklar komut satırında vb. Dosya isimlerini belirsiz hale getirir. Bu konuda. * Nix sistemlerinde kategorik olarak yasaklanan tek karakterler NUL'dur (endişelenmeyin, klavyenizde veya başkasının değil) ve /
bu yol ayırıcı olduğundan. 1 Bundan başka bir şey olmaz. Bireysel yol elemanları (dosya adları) 255 baytla sınırlıdır (genişletilmiş karakter setleri kullanıyorsanız olası bir komplikasyon) ve 4 KiB'ye giden yolları tamamlayın.
Yoksa bu sadece kişisel tercih meselesi mi?
Öyle söyleyebilirim. En DE en senin içinde büyük harfli dizinleri ile ilgili bir takım oluşturmak gibi görünüyor $HOME
( Downloads
, Desktop
, Documents
- D
bu yüzden bu konuda tuhaf bir şey yok, çok popüler). Gibi onları başkentlerinde, çok sıradan geleneksel dosyaları da vardır .Xclients
ve .Xauthority
.
Başlangıçta bir şeyleri aktif hale getirmenin bir değeri, sözlüksel olarak listelendiğinde, en küçük harflerden önce gelir - en azından birçok araçla ve yerel ayara tabidir.
Ben bir deve davası hayranıyım (aka. CamelCase) ve dosya isimleriyle kullanıyorum, örneğin, /home/goldilocks/blueSuedeShoes
- orada ne olduğunu boşver. Kesinlikle kişisel bir tercih meselesi ama henüz beni üzmedi.
Java sınıfı dosyaları, doğası gereği büyük harf kullanma eğilimindedir, çünkü Java sınıfı adları bunu yapar. Ve tabii ki, NetworkManager
bazılarımız tercih etse bile, unutmayalım .
1. çok daha POSIX tarafından önerilen, sınırlandırılmış bulunmaktadır "Taşınabilir Dosya adı karakter kümesi" gelmez boşluk - ama içermez büyük harf! POSIX , aynı belgenin herhangi bir yerinde "eğik çizgi karakteri ve boş bayt" ile ilgili daha genel kısıtlamaları da belirtir . Bu, uzun süredir devam eden geleneksel uygulamaları yansıtmaktadır veya yansıtılmaktadır .
README
s ve Makefile
s ve benzeri.
Dosya adlarında büyük harflerden kaçınmanın bir nedeni, Unix'deki sıralama düzeninin büyük / küçük harfe duyarlı olmasıdır, bu nedenle büyük harfle başlayan dosyalar sıra dışı görünecektir. Makefile
Genelde bir büyük harf kullanarak adlandırılmasının nedeni budur M
- ilk kayda / atlamadan önce görmek istediğiniz dosyalardan biridir a-l
.
Bu, dosya adları açısından daha kötüsünü yapabileceğini söyledi:
-
problemlere neden olabilir, çünkü birçok program onu bir dosya ismi yerine bir komut satırı seçeneği olarak rm -r
görecektir (örn -r
. adlı bir dosyayı silmez )..
birçok yardımcı programdan ve kabuk topluluğundan gizlenir (örneğinrm *
gibi dosyaları kaldırmayacak .config
)|<>*?
ve hatta yazdırılamayan karakterlerin newline
kullanılması teknik olarak mümkündür, ancak boşluk karakterine benzer komut dosyalarını / programları kırabilir. Aradaki fark, boşluk karakterinin sıklıkla kullanılmasıdır, bu nedenle programcılar programlarını buna karşı test etme eğilimindeyken, daha az popüler karakterler genellikle denenmeden kalır.rm *
gibi dosyaları kaldırmayacak .config
mı?
Makefile
ve README
bunun mükemmel örnekleridir. Ayrıca, harf addaki ilk harf değilse, bu etkinin ihmal edilebileceğini unutmayın; bu nedenle, eğer camelCase kullanıyorsanız çok da önemli değil. Tabii, daha anOctagon
önce gördüğünüze şaşırmış olabilirsiniz angle
, ama en azından listeye girerlerdi.
Bir Windows ortamıyla arayüz yapacaksanız, büyük harflerden kaçınmalısınız, çünkü Windows her şeyi küçük harf olur. Bu daha sıklıkla diğer tarafa giden bir problemdir; Windows'ta Page_2.html
bulacağınız bir bağlantı page_2.html
, ancak Unix'te başarısız olacak.
NUL
ve /
yasaklanmış.
cat > Foo
dosyanın üzerine yazacaktır foo
. Eğer küçük harf koruyarak için kullanılıyorsa bu davranış beklenmedik ve kafa karıştırıcı olması muhtemeldir ve bu tür ext gibi harf duyarlı dosya sistemleri *.
\0
ve /
küçük harfe duyarlı). En azından böyle hatırlıyorum. Ama bunun bir tür karışıklık olduğuna katılıyorum. Daha fazla kısıtlama var…
Büyük bash
harflerden kaçınmanın bir nedeni, sekme tamamlamanın büyük / küçük harfe duyarlı olmasıdır (en azından varsayılan olarak) - bu , varsayılan bir yapılandırma ile her önüne geldiğimde hala beni açıyor bash
. Elbette, diğer popüler mermiler de var, ancak bu bash
birçok işletim sistemindeki varsayılan giriş kabuğu olduğu gerçeğiyle birlikte , varsayılanın çoğu zaman büyük / küçük harfe duyarlı tamamlanma olduğu anlamına geliyor. Küçük harfli dosya adlarını kullanmak, burada işleri basitleştirir.
echo set completion-ignore-case On >> ~/.inputrc
en azından kendi sisteminizde biraz yardımcı olabilir.
Foo
daha sonra cat f
(Tab) adında bir dosya oluşturursanız , başarısız olur. Ancak aynı şey yazarsanız cat foo
, cat Foobar
veya cat Fu
- adını doğru hatırlamadığınız bir dosyaya erişmekte zorlanacağınız gerçeği, otomatik tamamlama ile gerçekten ilgisi yoktur.
NL_Derek bu solucanlar kutusunu açtığından, ancak onu doğru şekilde ifade etmediğinden, şunu söyleyeceğim:
Bu kullanım harflerle bir sakınca yoktur, ama (aynı dizinde) dosyaları oluşturma kaçınmalıdır farklılık sadece durumda tarafından örneğin, File_Name.txt
ve file_name.txt
çünkü,
FILENA~1.TXT
ve FILENA~2.TXT
- dir /x
hangi kısa adın (varsa) ne kadar uzun adla gideceğini görmek için yazın .)cmd1 > foo
cmd2 > Foo
cmd2
Teknik sebeplerden başka, bununla ilgili pratik bir yönüm var. Küçük harflere yapıştırmak, grep -i veya locate -i kullanmaya çok düşkün olmadıkça aramaların daha kolay olmasını sağlar. Bazen bir camelCase bile eğer bir depodaNYCDCPrimary'de olduğu gibi benzer kelimelerden oluşan bir kelime dizisi kullanmak zorunda kalırsa kafa karıştırıcı olabilir. Böylece, küçük harflere yapışmanın ve onları karartmaya devam etmenin en iyisi olarak storage_nyc_dc_primary gibi okunabilirlik için alt çizgi veya kısa çizgi ile işaretlemeliyim.
storageNycDcPrimary
ve StorageNycDcPrimary
her ikisi de okumak için garip.
Dosya adlarında büyük harf ve boşluk kullanmaktan kaçınmanın en iyi yöntem olduğunu düşünüyorum .
Bazıları aynı fikirde olmadıklarını söyleyecekler ancak bu benim meselem veya dini inançlar dediğim şey : tartışması ve üzerinde anlaşması zor. Kabul etmeyenler, araçların çoğunun artık başkentler ve mekanlar dostu olarak sabit olduğunu söylüyorlar: haklılar, ancak sorun bu değil.
Doğru soru, dosya adlarında büyük harf ve boşluk kullanmak için ne kadar ihtiyacınız olduğu . Bu soruya Java'da programlama yaptığım zamanlar hariç, cevap çoğunlukla her zaman: Dosya dosyalarımda büyük harflere ve boşluklara ihtiyacım yok . Tüm boşlukları bir alt çizgi ( _
) veya bir eksi işareti ( -
) ile değiştiriyorum ve bu nedenle diğer dinin bazılarına aykırı bir deve davası (aka. CamelCase) kullanmıyorum.
Birçok insan bunu yapmak ve öğretmek için bana saçmalık dedi - bazıları hala hala - bazıları sermaye / uzay dostu olmayan bir alete takıldı ve bana haklı olduğumu ve beni dinlemesi gerektiğini söyledi. Ne istersen yap ve dosya adında büyük harf ve boşluk kullanırsan, umarım kötü yazılmış bir aletle yolculuk yapmazsın. Bununla birlikte, böyle bir araçla seyahat ederseniz, umarım yine, düzeltmek zor olmayacak ve işinize ve / veya size çok fazla para ve / veya zaman mal olacak. Ancak, kötü yankıları varsa sona ererse, bazılarının size geçmişte dosya adlarında büyük harf ve boşluk kullanmanın kötü bir uygulama olduğunu söylediğini hatırlayacaksınız.
Ve son bir şey, tüm sorunlardan kaçınmak istiyorsanız , dosya adlarında özel karakterlerin olmaması (yalnızca küçük harf, rakam, alt çizgi ve eksi [1]). Bu istenmeyen karakter listesi, asci olmayan tüm karakterleri de içerir (evet, Fransızca ve diğer İngilizce olmayan insanlar - ve ben onlardan biriyim - bunlardan hiçbiri: à, â, ä, ç, é, ..., ö, æ, œ , ...). Bu aynı zamanda kullanıcı adı ve şifre de dahil olmak üzere birçok başka şeyi de kapsar . Onaylanmış bir sysadmin tarafından yazılmayan bir bash betiği tarafından işlenen bir giriş veya şifreye bir alıntı veya çift alıntı ( '
veya "
) koyduğunuzda ne olacağını tahmin etmenize izin vereceğim.
[1]: belki o uzatmak olabilir ~
, @
, #
(... ve evet ben emacs dosyaları hakkında bilmek) ve bazı diğerleri, ama bu bela aramaktadır.