it-swarm-tr.com

Unix dosya adlandırma kuralı

Unix'teki dosyalar için adlandırma kuralının ne olduğunu merak ediyordum? Bundan emin değilim, ama belki de takip etmesi gereken evrensel bir adlandırma kuralı var mı?

Örneğin, bir dosya adını söylemek istiyorum: backup ile part 2 ve random

Bunu böyle yapmalı mıyım:

backup_part2_random

OR

backup-part2-random

OR

backup.part2.random

Umarım soru açıktır. Temel olarak, Unix felsefesine uygun bir format seçmek istiyorum.

67
user4740

. Bir dosya türü uzantısını ayırmak için kullanılır; ör. foo.txt.

- Veya _ Mantıksal kelimeleri ayırmak için kullanılır, ör. my-big-file.txt Veya bazen my_big_file.txt. - Daha iyi çünkü Shift tuşuna basmanız gerekmiyor (en azından standart ABD İngilizcesi PC klavyesi ile), diğerleri daha çok boşluk gibi göründüğü için _ Tercih ediyor.

Örneğinizi anlarsam, backup-part2-random Veya backup_part2_random Normal Unix kuralına en yakın olur.


CamelCase normalde Linux/Unix sistemlerinde kullanılmaz. /bin Ve /usr/bin Dosya adlarına bakın. CamelCase, Unix ve Linux sistemlerinde kural olmaktan çok istisnadır.

(NetworkManager, CamelCase kullanan düşünebildiğim tek örnektir ve bir Mac geliştiricisi tarafından yazılmıştır. Birçoğu bu ad seçiminden şikayetçidir. Ubuntu'da, betiği network-manager.)

Örneğin, sistemimdeki /usr/bin

$ ls -d [A-Z]* | wc -w    # files starting with a capital
6
$ ls -d *_* | wc -w       # files containing an underscore
178
$ ls -d *-* | wc -w       # files containing a minus/dash
409

ve o zaman bile, büyük harfle başlayan dosyaların hiçbiri CamelCase kullanmaz:

$ ls -d [A-Z]*
GET  HEAD  POST  X11  Xvnc  Xvnc4
61
Mikel

zak Belirli bir sözleşmenin tutarlı olması daha önemlidir. Bir stil seçin ve ona sadık kalın.

38
David Oneill

Unix/Linux dosya adı kurallarını ele almam:

  • Unix/Linux dosya sistemleri bir uzantı kavramını doğal olarak desteklemez. Bir dosya uzantısı kavramı tamamen cp, ls veya kullandığınız Shell gibi yardımcı programlar tarafından desteklenen bir şey olarak bulunur. NTFS'de de böyle olduğuna inanıyorum, ama yanılmış olabilirim.

  • Shell komut dosyaları dahil yürütülebilir dosyalar genellikle hiçbir zaman uzantıya sahip değildir. Komut dosyalarında, hangi programın onu yorumlaması gerektiğini tanımlayan bir hashbang satırı (yani #!/bin/bash) Bulunur.

  • İki harf uzunluğundaki herhangi bir yürütülebilir dosya çok önemlidir. Çalıştırılabilir iki harfli dosya adlarınızı adlandırmayın. /etc İçindeki tab ile biten tüm dosyalar da çok önemlidir, örneğin fstab, mtab, inittab.
  • Bazen .d Dizin adlarına, özellikle /etc İçine eklenir, ancak bu yaygın değildir (GÜNCELLEME: https://serverfault.com/questions/240181/what-does) -the-eki-D-ortalama-içinde-linux )
  • rc yaygın olarak (ör. rc.local) veya son ekte (.vimrc) yapılandırma komut dosyaları veya dosyaları için yaygın olarak kullanılır
  • Unix/Linux topluluğunun uzantılar konusunda üç karakterlik bir sınırı olmadı ve iyi bilinen uzantıları kısaltması üzerine kaşlarını çatmadı. Örneğin, Unix/Linux'ta HTML dosyalarının sonunda .htm Kullanmayın, .html Kullanın.
  • Bir dosya kümesinde, bir dosya adı bazen büyük harfle veya tüm büyük harflerle yazılır, bu nedenle dizin listesinin başında görünür. Klasik örnek, kaynak paketlerde Makefile şeklindedir. Bunu sadece README gibi şeyler için yapın.
  • ~, important_stuff~ Veya /etc~ Gibi bir yedekleme dosyasını veya dizini tanımlamak için kullanılır. Birçok mermi yalnız bir ~$HOME' Ya genişletecektir.
  • Kütüphane dosyaları neredeyse her zaman lib ile başlar. İstisna zlib ve muhtemelen birkaç tane daha.
  • İnetd tarafından çağrılan komut dosyaları bazen in. Gibi önde gelen in.tftpd İle etiketlenir.
  • vmlinuz ile biten z sıkıştırılmış anlamına gelir, ancak bu şekilde adlandırılmış başka bir dosya görmedim.
19
LawrenceC

Unix dosya adında DOS'un aksine, dosya adının ad ve uzantıdan oluştuğu bir dizedir. Bu nedenle, verilen dosya adlarından herhangi biri tamamen kabul edilebilir.

Ancak birçok program farklı dosya türlerini ayırt etmek için nokta ile başlayan dosya soneklerini kullanır, yani Apache Web Server yanıt başlıklarında doğru MIME türünü ayarlamak için sonekleri kullanır.

7
gelraen

İki düşünce:

  1. GNU Kodlama Standartları 'ın Naming Variables, Functions, and Files bölümünde şunları bulabilirsiniz:

    Emacs Word komutlarının içinde yararlı olabilmesi için lütfen bir addaki kelimeleri ayırmak için alt çizgi kullanın. Küçük harfe sadık kalın;

    IMO, "_ kullanmalısınız çünkü emacs" biraz tarihli gibi görünse de, yine de 'standartlar' belgesinde bulunur.

  2. Bir an için linux çekirdeğinin linux projelerinin hepsi ve hepsi * olduğunu kabul ettiğimizi ve kullanılan sözleşmelerin 'standart' konvansiyon olarak kabul edilebilecek şeyler olduğunu kabul edelim.

    grep-ing linux çekirdeği için kaynak aşağıdakileri bulacaksınız:

    • Yalnızca tire kullanılan zamanın% 44,6'sı
    • Yalnızca alt çizginin% 54,1'i
    • Bir dosyanın her ikisini de kullandığı zamanın% 1.2'si .

İlginçtir, git için kaynak tire için % 85 ağırlığındadır, % 3.8 alt çizgiler için ve her ikisi için de % 11.1 .

Seçim açık, üzerinde tartışmalar var. ;)

Kişisel görüş: Çizgileri estetik ve vardiya anahtar nedenleriyle kullanıyorum. Eğer bir ekip üzerinde çalışıyorsanız, oy kullanın. Ama söylenenleri tekrarlamak için, tutarlı olun.

* veya isterseniz "be_all ve end_all"

6
Roy Truelove

Dosya adlarında kullanmamanız gereken karakterler:

| ; ,! @ # $ () <>/\ "'` ~ {} [] = + & ^

İsimlerin okunmasını kolaylaştırmak için kullanmanız gereken karakter sınırlayıcılar:

_ -. :

(Bazı durumlarda ":" özel bir anlamı vardır)

4
Istvan

Başkalarının söylediklerine eklemek için, aksanlı harfler ve birçok özel karakter dosya adlarında yasal olsa da, aşağıdaki senaryoların herhangi birinde sorunlara neden olabileceğini söyleyebilirim:

  • Dosya sisteminizi diğer bilgisayarlarla, özellikle farklı işletim sistemleriyle paylaşıyorsunuz;
  • Dosyaları başkalarıyla paylaşırsınız (ve e-posta dönüşümlerle oldukça iyi olma eğiliminde olsa da, bazen işe yaramaz);
  • Bazı görevleri otomatikleştirmek için Shell komut dosyalarını kullanırsınız (boşluklar özellikle sorunludur, ancak bunlarla başa çıkmanın birçok yolu vardır);
  • Başka bir bilgisayardan dosya paylaşımı kullanıyorsunuz.

...

4
asoundmove

Alfasayısal dosya adlarına sadık kalın. Boşluklardan kaçının veya boşlukları alt çizgi (_) ile değiştirin. Dosya adlarındaki noktalama işaretlerini nokta (.), Alt çizgi (_) ve kısa çizgi (-) ile sınırlayın. Genellikle dosya adları küçük harflidir, ancak dosya adında birden çok kelime olduğunda CamelCase kullanıyorum.

Dosya türünü gösteren uzantılar kullanın. Programları göstermek için yürütme biti kullanıldığından programların uzantılara ihtiyacı yoktur ve kabuklar çeşitli türdeki programların nasıl çalıştırılacağını bilir. Kabuk komut dosyaları için (.sh) ve Perl komut dosyaları için (.pl) için zorunlu değildir. Windows yürütülebilir uzantıları .bat, .com, .scr ve .exe, Unix'te Windows yürütülebilir dosyalarını gösterir.

Bir standart seçin ve ona uyun. Ama kaçınırsan bir şeyleri kırmaz.

Gizli (veya nokta) dosyaların nokta ile başlayan adları vardır. Bunlar normalde dizin listelerinde görünmez. Nokta dosyalarını listeye dahil etmek için 'ls -a' kullanın.

3
BillThor

dosyaları adlandırmak için - veya _ kullanın
_ İşlevler için
Uzantılar için .

cat << EOF > foo-bar.sh  
foo_bar() {  
echo baz  
}  
EOF  
2
Akhil Jalagam

Bir kural, sözcükler arasında ayırıcılar olarak boşlukların yerine "_" kullanılmasıdır. Boşlukların yerini almak için başka karakterler de kullanılabilir, ancak "-" ve "" için biraz daha güçlü geleneksel kullanımlar vardır. yol adlarında "_" genellikle tercih edilir.

Alan adlarında boşluklar yasaldır, ancak geleneksel olarak önlenir, çünkü yol adının ("foo bar") veya boşluklardan (foo\bar) kaçınılması gerekir. Düzgün yazılmış bir Kabuk betiği boşlukları, özellikle yol adlarını içerebilecek değişkenleri alıntılayacaktır, ancak bunu yapmamak yaygın bir gözetimdir ve komut satırına girilen bir defalık komut yaparken çok fazla yazımdır.

Zaman damgalarında veya seri numaralarında olduğu gibi sayı kümelerini ayırmak için "-" kullanmak, dosya sistemleri bağlamında yaygın olarak kullanılan bir kuraldır. "." dosya türünü gösteren "dosya uzantılarını" ayırmak çok yaygındır ve bazı önemli araçlar ona bağlıdır. Örneğin, Red Hat Enterprise Linux ve türevleri RPM'deki paket yönetim sistemi, paket dosyalarının ".rpm" ile bitmesini bekliyor. Geleneksel tarball, sıkıştırılmış (".gz") bir tar dosyasıdır (".tar") ve ".tar.gz" ile biter.

Bunları bir araya getirdiğinizde, genellikle "home_backup_2017-07-01.tar.gz" gibi görünen dosya adlarıyla karşılaşırsınız.

2
bgvaughan

David Oneill ile sadece bir şey yapman gerektiğine katılıyorum.

Ancak dosyalar aynı dizinde sıralanabilirse güzel, bu yüzden numara 0 .. 10 değil sayı 00 .. 10.

Tarihleri ​​adlarda kullanırken ISO8601 gibi standart bir tarih biçimiyle devam edin.

Ve addaki mantıksal parçaları ayırmak için birden fazla karakter kullanmaktan korkmayın. _ (bu 3 _) kullanırsanız, daha sonra dosya adlarındaki normal ifadeleri basitleştirebilirsiniz.

Böylece örneğiniz böyle bir şey olabilir:

backup_2011-06-19T114012___part002___random

Okuması kolay ve komut dosyaları ile ayrıştırılması kolay.

0
Johan

Dosya adındaki kelimeler Unix kuralına göre _ Veya - İle ayrılabilir.

- Kullanırsanız, yazmak daha kolaydır, ÜST KARAKTER tuşuna basmanızı önler. Ancak - Çok az yer kapladığından, _ İle karşılaştırıldığında Word ayrımlarını okumak biraz zor. Kelimeleri ayırmak için _ Kullanılması, _ Daha fazla yer kapladığından çok daha temiz görünmesini sağlar.

Shell komut dosyalarında ve diğer bilgisayar programlarında _ Gibi çoklu Word değişkenleri için MY_ENVIRONMENT_FILE Kullanılır. Dosya adlarının _ Kullanılması da tutarlı olmasını sağlar: MY_ENVIRONMENT_FILE=~/my_environment_file.

Web geliştirmede, dosya adlandırma için - Tercih edilir. Bunun bir nedeni, muhtemelen web bağlantılarındaki alt çizginin alt çizgileri gizleyebilmesidir ve web bağlantısını elle yazıyorsanız bunu zorlaştırabilir.

Çoğu editörde ve web sayfasında this_long_Word Çift tıklamayla tamamen seçilebilir, ancak this-long-Word Seçilemez.

0
GMaster