Büyük harfleri dosya adlandırmada kullanmamak en iyi yöntem olarak mı kabul edilir?


28

İ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.txtvs. file_name.txt)? Yoksa bu sadece kişisel tercih meselesi midir?


Kapak kullanabilirsiniz, ancak standart olarak kullanmayın. Sadece küçük harfleri kullanın ve _ file_name.txt iyidir.
Shabir A. 28:15

9
Dosya adlarını büyük harflerle kullanan bazı Unixy şeyler var ... Bazı örnekler arasında Makefile, INSTALL, CHANGELOG ve elbette saygıdeğer README var.
Thomas

PSR-2 - Linux'ta çoğunlukla çalışan PHP dünyasının fiili adlandırma standardı, camelCase
jdog

Yanıtlar:


46

İ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- Dbu yüzden bu konuda tuhaf bir şey yok, çok popüler). Gibi onları başkentlerinde, çok sıradan geleneksel dosyaları da vardır .Xclientsve .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, NetworkManagerbazı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 .


5
Mia: "Bu bir gerçek mi?" Vincent: "Hayır değil, sadece duyduğum buydu." Mia: "Bunu sana kim söyledi?" Vincent: "Onlar". Mia: "Çok konuşuyorlar, değil mi?" Vincent: "Kesinlikle yapıyorlar."
corsiKa

4
Değer başında bir şeyler harf yapma leksikografik listelenmiş zaman [...], onlar her şeyden önce gelirim olması.” - Tabii ki, bu yalnızca çalışır çoğu Filenames küçük harf olur size bir neden daha sunan rezerv kapaklar ( en azından önde gelen kapaklar) READMEs ve Makefiles ve benzeri.
Blacklight Shining

4
Birçok klavyede ctrl-space veya ctrl- @ veya alt-0 bir NUL yazacaktır.
dubiousjim

2
@dodgethesteamroller Ileri eğik çizgi (veya daha doğrusu, 0x2F değerine sahip bayt ) ext * ' da yanlış anlaşıldığına inanıyorum . Aslında, dosya sistemine bile gideceğine inanmıyorum; VFS katmanı, destek deposundan bağımsız olarak buna izin vermez.
zwol

3
sadece dosya isimlerinde ve dizin isimlerinde boşluk kullanmayın. Sisteminiz teknik olarak izin verse bile, sadece kederinize yol açacaktır. Bunun yerine alt çizgi karakterini "_" kullanın.
SnakeDoc

9

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. MakefileGenelde 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:

  • boşluk kullanmak, dosya adlarını düzgün bir şekilde alıntılamayan bazı kötü yazılmış programları ve komut dosyalarını bozar
  • bir dosya isminin başlatılması -problemlere neden olabilir, çünkü birçok program onu ​​bir dosya ismi yerine bir komut satırı seçeneği olarak rm -rgörecektir (örn -r. adlı bir dosyayı silmez ).
  • bir dosya isminin başlaması .birçok yardımcı programdan ve kabuk topluluğundan gizlenir (örneğinrm * gibi dosyaları kaldırmayacak .config)
  • gibi özel karakterlerin |<>*?ve hatta yazdırılamayan karakterlerin newlinekullanı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.

4
Bu artık doğru olma eğiliminde değil, modern yerlerde sıralama günümüzde büyük küçük harfe duyarsız olma eğilimindedir ve birçok araç ve kabuk küresi dosya adlarını sıralamak için yerel ayarları onurlandırır.
Stéphane Chazelas

2
Şunu mu demek istediniz: rm *gibi dosyaları kaldırmayacak .configmı?
Wildcard

1
@Wildcard gerçekten değil, ama belki de senin örnek benimkinden daha gerçekçi. Amacım, bir nokta ile başlayan dosya adlarının, kullanıcı açıkça bu noktayı belirtse bile, globbing'e karşı bağışık olduğunu göstermekti.
Dmitry Grigoryev

1
@DryryGrigoryev, hayır değiller. Noktalı dosyaları olan herhangi bir dizinde ls -ald. ?? * komutunu deneyin.
Bill Barth

1
"Büyük harfleri dosya adlarında kullanmayı seçerseniz, Unix'teki sıralama düzeninin (bazen) büyük / küçük harf duyarlı olduğunu" aklınızda tutmanız gerektiğini söylemenin daha uygun olacağını düşünüyorum. Kullanıcı bu davranışı isteyebilir Makefileve READMEbunun 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.
G-Man 'eski durumuna Monica' Diyor

6

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.htmlbulacağınız bir bağlantı page_2.html, ancak Unix'te başarısız olacak.


10
Bu doğru değil. NTFS, VFAT ve exFAT'i tüm harf duyarsız ama küçük harf koruyarak onlar anlamı vardır görmezden arama amacıyla davayı ancak mağaza yine dava. Aynısı, OSX’teki varsayılan dosya sistemi olan HFS + için de geçerlidir. NTFS bile çalışan bir POSIX ad alanına sahip tam tüm Unix'lerde gibi, çok uzun dosya adları yalnızca un-yorumlanmış sekizli, yani NULve /yasaklanmış.
Jörg W Mittag

5
Dahası, "büyük / küçük harfe duyarlı olmayan ancak büyük / küçük harf koruyan", "A dosyasının sessiz bir şekilde üzerine yazabilme yeteneğine sahip olmanın başka bir yoludur, çünkü adı yalnızca B dosyasından farklı olması durumunda" (veya sonradan hangisinin daha sonra kaydedildiğine bağlı olarak). Başka bir deyişle, bir NTFS paylaşımına erişmek için bir * nix kabuğu kullanıyorsanız, cat > Foodosyanı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 *.
dodgethesteamroller

1
İ Yanılmıyorsam @ JörgWMittag, NTFS değil sadece bu var, küçük harf duyarsız gizemli yollarla pencereler çalışır.
Cthulhu

1
@Cthulhu: AFAIK, NTFS'de dosyalar için ad oluşturabileceğiniz dört farklı ad alanı vardır. (Tek bir dosyanın birden fazla ad alanında bir adının olup olmadığını bilmiyorum.) Bir "DOS" ad alanı (8.3, büyük / küçük harf duyarlı), "uzun" ad alanı (büyük / küçük harf duyarlı, küçük harf koruyucu, UTF-16), "kısa uzun" adları için özel bir ad, kimin vaka korunmuş fakat edilmelidir yani isimler 8.3 içine uyum ve POSIX ad (dışındaki sekizli akışı \0ve /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…
Jörg W Mittag

1
… Çekirdeği ve hatta API'de daha fazla kısıtlama var (aslında, farklı kısıtlamalara sahip farklı dönemlerden farklı API'ler var), DOS ve FAT ile uyumluluk nedeniyle kısıtlamalar var, komut yorumlayıcısında kısıtlamalar var. grafiksel) kabuk ve Explorer'da kısıtlamalar vardır. Kısıtlamanın nereden geldiğini güvenilir bir şekilde belirlemek genellikle imkansızdır . Bu delilik. Bir keresinde Explorer’ı kullanarak açamayacağım, kopyalanamayan, taşınamayan, yeniden adlandırılmayan veya silinemeyen bir araç oluşturmayı denedim. Temelde kaldı ...
Jörg W Mittag

4

Büyük bashharflerden 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 bashbirç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.


2
echo set completion-ignore-case On >> ~/.inputrcen azından kendi sisteminizde biraz yardımcı olabilir.
wchargin

1
Bu cevabın amacının ne olduğu konusunda net değilim - bir dosya adını nasıl "hecelediğini" unutmadığın sürece. Örneğin, Foodaha sonra cat f(Tab) adında bir dosya oluşturursanız , başarısız olur. Ancak aynı şey yazarsanız cat foo, cat Foobarveya 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.
G-Man

@ G-Man Touché. Yine de, tümü küçük harfli dosya adlarını kullanmak, onlar hakkında hatırlamanız gereken daha az şey olduğunu gösterir.
Blacklight Shining

3

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ü,

  • Bir şekilde dizini bir Windows sisteminde kullanabiliyorsanız, her iki dosyaya da erişemeyecektir. Muhtemelen, hangi ismi kullandığınızdan bağımsız olarak, sadece dizinde ilk görünene erişebilecek. (Bunun dışında: size onlara erişim hakkı verebilir FILENA~1.TXTve FILENA~2.TXT - dir /xhangi kısa adın (varsa) ne kadar uzun adla gideceğini görmek için yazın .)
  • Dosya sistemi aslında bir Windows dosya sistemi ise (örneğin, Windows çalıştıran bir NFS sunucusundan bir exFAT veya NTFS dosya sisteminden monte edilmişse), iki adın (muhtemelen) bir arada bulunmasına izin verilmez. Örneğin, yaparsanız ve çıktıyı içeren tek bir dosya ile bitebilirsiniz .cmd1 > foocmd2 > Foocmd2
  • Benzer şekilde, dosyaları bir Windows sistemine aktarırsanız , iki adın (muhtemelen) bir arada bulunmasına izin verilmez. Örneğin, iki dosyayı içeren bir arşiv (örneğin, zip) oluşturup Windows sisteminde çıkardıysanız, ikinci dosya muhtemelen ilk dosyanın üzerine yazar. Aynı şey, onları FTP içeren bir Windows kutusuna ya da benzer bir şeye aktardıysanız.

Sadece Windows değil, diğer bazı işletim sistemleri (VMS, bence, CP / M kesinlikle, diğerleri ...)
Toby Speight

3

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.


snake_case gözleri kolaydır - storageNycDcPrimaryve StorageNycDcPrimaryher ikisi de okumak için garip.
go2null

1

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.


1
Son şey, kullanıcının şifre ile gelmesi değil, kimlik doğrulama sistemi tarafından ele alınması gereken bir şeydir. Sistem şifrelerdeki izin verilen karakter kümesini sınırlarsa, kötü bir sistemdir.
Blacklight Shining

Eh, şifre karakterleri sınırlamak tartışma için bir konudur: li1, o0, ... düşkün, iletişim kurmak zor bağlı. Bazıları parolanın iletilmemesi gerektiğini, ancak bir WiFi Anahtarının, arkadaşlarım ile bulundukları
yerdeyken iletişim kurduğum

Bu , sistemde yerleşik bir sınırlama yerine bazı karakterleri kullanmaktan kaçınmak için bilinçli bir seçimdir (bu örnekte, Wi-Fi standartları, AP ve müşteri uygulamaları vb.). Parola olarak rastgele seçilen bir karakter dizisi kullanıyorsanız, bir monospace yazı tipini kullanarak (veya alıcıları kullanmaya teşvik ederek) veya el yazısıyla yazılmışsa daha belirgin glifleri kullanarak (kolayca küçük harflerle yazılmış) okunabilirliği artırabilirsiniz. L, büyük harf I ve sayı 1; daha küçük küçük harf O, yuvarlak büyük harf O, kesik veya noktalı 0; vb.) Alternatif olarak, bir parola kullanabilirsiniz.
Blacklight Shining
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.