it-swarm-eu.dev

Konvence pojmenování unixových souborů

Zajímalo by mě, jaká je konvence pojmenování souborů v Unixu? Nejsem si tím jistý, ale myslím, že existuje snad univerzální pojmenovací konvence, kterou by se člověk měl řídit?

Například chci pojmenovat soubor říkat: backup with part 2 a random

Měl bych to udělat takto:

backup_part2_random

OR

backup-part2-random

OR

backup.part2.random

Doufám, že otázka je jasná. V podstatě chci zvolit formát, který odpovídá filozofii Unixu.

67
user4740

. se používá k oddělení přípony typu souboru, např. foo.txt.

- nebo _ se používá k oddělení logických slov, např. my-big-file.txt nebo někdy my_big_file.txt. - je lepší, protože nemusíte stisknout klávesu Shift (alespoň u standardní americké anglické PC klávesnice), jiní dávají přednost _ protože to vypadá spíš jako mezera.

Pokud tedy rozumím vašemu příkladu, backup-part2-random nebo backup_part2_random by byl nejblíže běžné unixové konvenci.


CamelCase se běžně v systémech Linux/Unix nepoužívá. Podívejte se na názvy souborů v /bin a /usr/bin. CamelCase je spíše výjimkou než pravidlem v systémech Unix a Linux.

(NetworkManager je jediný příklad, který si mohu pomyslet, že používá CamelCase, a byl napsán vývojářem Mac. Mnoho si stěžovalo na tuto volbu jména. Na Ubuntu skutečně skript přejmenovali na network-manager.)

Například na /usr/bin v mém systému:

$ 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

a dokonce ani žádný ze souborů začínajících kapitálem nepoužívá CamelCase:

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

Daleko důležitější, aby konkrétní konvence byla konzistentní. Vyberte si styl a držte se ho.

38
David Oneill

Moje konvence o názvech souborů Unix/Linux:

  • Souborové systémy Unix/Linux nepodporují pojem rozšíření. Koncept přípony souboru zcela existuje jako něco, co podporují obslužné programy jako cp, ls nebo Shell, které používáte. Věřím, že je to tak i na NTFS, ale mohl bych se mýlit.

  • Spustitelné soubory, včetně skriptů Shell, obvykle nikdy nemají žádný typ rozšíření. Skripty budou mít řádek hashbang (tj. #!/bin/bash), která určuje, jaký program by jej měl interpretovat.

  • Jakýkoli spustitelný soubor, který má dvě písmena, je velmi důležitý. Takže nepojmenujte své spustitelné soubory se dvěma písmeny. Jakýkoli soubor v /etc končící na tab je také velmi důležité, například fstab, mtab, inittab.
  • Někdy .d je připojeno k názvům adresářů, zejména v /etc, ale toto není rozšířené (UPDATE: https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux )
  • rc je široce používán pro konfigurační skripty nebo soubory, buď předběžně (např. rc.local) nebo přípony (.vimrc)
  • Komunita Unix/Linux nikdy neměla omezení tří znaků na rozšíření a mračila se při zkracování dobře známých rozšíření, aby se vešly. Nepoužívejte například .htm na konci HTML souborů v Unixu/Linuxu použijte .html.
  • V sadě souborů je název souboru někdy velkým písmenem nebo ve všech velkých písmenech, takže se objeví v záhlaví seznamu adresářů. Klasickým příkladem je Makefile ve zdrojových balíčcích. Udělejte to pouze pro věci jako README.
  • ~ se používá k identifikaci záložního souboru nebo adresáře, jako v important_stuff~ nebo /etc~. Mnoho granátů rozšíří osamělý ~ to $HOME.
  • Soubory knihovny téměř vždy začínají lib. Výjimkou je zlib a pravděpodobně několik dalších.
  • Skripty, které jsou vyvolány inetd, jsou někdy označeny úvodní in., jako in.tftpd.
  • Konec z v vmlinuz znamená zip, ale nikdy jsem neviděl žádný jiný soubor pojmenovaný tímto způsobem.
19
LawrenceC

V unixu název_souboru je pouze řetězec, na rozdíl od DOSu, kde název souboru byl složen z názvu a přípony. Takže kterékoli z uvedených názvů souborů je zcela přijatelné.

Mnoho programů však stále používá přípony souborů začínající tečkou k rozlišení různých typů souborů, tj. Webový server Apache používá přípony k nastavení správného typu MIME v záhlaví odpovědí.

7
gelraen

Dva myšlenky:

  1. V Naming Variables, Functions, and Files část GNU Coding Standards najdete:

    Pro oddělení slov v názvu použijte podtržítka, aby v nich mohly být užitečné příkazy Emacs Word. Držte se malých písmen;

    Zatímco IMO říká: „Měli byste použít _ protože emacs “se zdá být trochu datovaný, přesto je to v jejich„ standardních “dokumentech.

  2. Předpokládejme na chvíli, že se všichni shodneme na tom, že linuxové jádro je univerzálními projekty linuxu a že zde použité konvence jsou to, co lze považovat za „standardní“ konvence.

    grep- ing zdroj pro linuxové jádro najdete následující:

    • 44,6% času se používá pouze pomlčka
    • 54,1% času pouze podtržítko
    • 1,2% času, který soubor používá oba.

Zajímavé je, že zdroj pro git váží při 85% pro pomlčky, 3,8% pro podtržítka a 11,1% pro obě.

Volba je jasná, debata o ní. ;)

Osobní názor: Pomlčky používám z estetických důvodů a z klíčových důvodů. Pokud pracujete v týmu, hlasujte. Ale abych zopakoval to, co bylo řečeno, být konzistentní .

* nebo "be_all and end_all", pokud se vám líbí

6
Roy Truelove

Znaky, které byste v názvech souborů neměli používat:

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

Oddělovače znaků, které byste měli používat ke snadnějšímu čtení jmen:

_ -. :

(V některých případech má výraz „:“ zvláštní význam)

4
Istvan

K tomu, co ostatní řekli, bych jen řekl, že zatímco písmena s diakritikou a mnoho speciálních znaků jsou v názvech souborů legální, mohou způsobovat problémy v kterémkoli z následujících scénářů:

  • Sdílíte svůj souborový systém s jinými počítači, zejména s různými operačními systémy;
  • Sdílíte soubory s ostatními (a ačkoli e-mail bývá u konverzí docela dobrý, někdy to prostě nefunguje);
  • Skripty Shell používáte k automatizaci některých úkolů (mezery jsou obzvláště problematické, i když existuje mnoho způsobů, jak s nimi zacházet);
  • Používáte sdílení souborů z jiného počítače.

...

4
asoundmove

Držte se alfanumerických názvů souborů. Vyhněte se mezerám nebo je vyměňte za podtržítka (_). Omezte interpunkci v názvech souborů na období (.), Podtržítka (_) a pomlčky (-). Obecně jsou názvy souborů malými písmeny, ale pokud mám v názvu souboru více slov, používám CamelCase.

Použijte přípony, které označují typ souboru. Programy nepotřebují rozšíření, protože spouštěcí bit se používá k označení programů, a shelly vědí, jak spouštět programy různých typů. Je běžné, ale není nutné (.sh) pro skripty Shell a (.pl) pro skripty Perl. Spustitelné přípony Windows .bat, .com, .scr a .exe označují spustitelné soubory systému Windows v systému Unix.

Vyberte si standard a držte se ho. Pokud se tomu však vyhnete, nezlomí to.

Skryté (nebo tečkové) soubory mají jména začínající tečkou. Obvykle se nezobrazují v seznamech adresářů. Použijte 'ls -a' pro zahrnutí tečkových souborů do seznamu.

3
BillThor

použijte - nebo _ pro pojmenovávání souborů
_ pro funkce
. pro rozšíření

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

Jednou z konvencí je použití "_" k nahrazení mezer jako oddělovačů mezi slovy. Jiné znaky by mohly být použity k nahrazení mezer, ale tam jsou mírně silnější konvenční použití pro "-" a "." v názvech cest, takže je obvykle preferováno "_".

Mezery jsou legální v názvech cest, ale obvykle se jim vyhýbají, protože vyžadují citaci názvu cesty ("foo bar") nebo úniku z mezer (foo\bar). Správně napsaný skript Shell bude citovat proměnné, které mohou zahrnovat mezery, zejména názvy cest, ale pokud tak neučiníte, je to běžný dohled a při provádění jednorázového příkazu zadaného na příkazovém řádku je to spousta zvláštního psaní.

Použití „-“ k oddělení skupin čísel, jako v časových razítcích nebo sériových číslech, je běžně používáno mimo kontext souborových systémů. Použitím "." oddělit "přípony souborů", které označují typ souboru, je velmi běžné a některé důležité nástroje na něm závisejí. Například systém správy balíků v Red Hat Enterprise Linux a jeho deriváty RPM očekává, že soubory balíčků skončí „.rpm“. Tradiční tarball je soubor dehtu (".tar"), který byl gzipped (".gz"), a tak končí ".tar.gz".

Když je tedy dáte dohromady, často skončíte s názvy souborů, které vypadají jako „home_backup_2017-07-01.tar.gz“

2
bgvaughan

Souhlasím s Davidem Oneillem, že byste měli jen něco jít.

Ale je hezké, pokud jsou soubory ve stejném adresáři, takže číslo dont 0 .. 10, ale číslo 00 .. 10.

Pokud používáte data v názvech, použijte standardní formát data jako ISO8601 .

A nebojte se použít více znaků k oddělení logických částí v názvu. Pokud použijete _ (to bylo 3 _), můžete později regexpy na názvech souborů zjednodušit.

Váš příklad by tedy mohl být něco takového:

backup_2011-06-19T114012___part002___random

Snadno čitelné a snadno analyzovatelné skripty.

0
Johan

Slova v názvu souboru lze oddělit pomocí _ nebo - podle úmluvy Unix.

Pokud používáte -, je snazší psát, ušetří vám stisknutí SHIFT. Ale od - zabírá tak málo místa, je trochu obtížné číst separace slov ve srovnání s _. Použitím _ k samostatným slovům to vypadá mnohem čistěji, protože _ zabírá více místa.

V skriptování prostředí Shell a dalším programování počítače _ se používají pro proměnné více slov, například MY_ENVIRONMENT_FILE. Používání názvů souborů _ také udržuje konzistentní: MY_ENVIRONMENT_FILE=~/my_environment_file.

Ve vývoji webu - je preferován pro pojmenování souborů. Jedním z důvodů je pravděpodobně to, že podtržení webových odkazů může skrýt podtržítka a může to ztěžovat, pokud zadáte webový odkaz ručně.

Ve většině editorů a na webových stránkách this_long_Word lze plně vybrat dvojitým kliknutím, ale ne this-long-Word.

0
GMaster