it-swarm-eu.dev

Přípony souborů pro unixové skripty Shell

Na wikipedii článek pro . Sh říká:

Typ přípony souboru .sh viz Bourne Shell .

A co další unixové skořápky?

Vím, že Shebang se používá uvnitř souboru k označení tlumočníka pro provedení, ale zajímalo by mě:

  • Jaké jsou výhody a nevýhody přípony souborů vs. žádné přípony souborů?
46

Já bych jen volal .sh něco, co je míněno být přenosné (a doufejme, je přenosné).

Jinak si myslím, že je lepší skrýt jazyk. Pečlivý čtenář ji přesto najde v linii Shebang. (V praxi, .bash nebo .zsh atd.… přípony se používají zřídka.)

35

Řekl bych, že neexistují žádné „osvědčené postupy“ pro přípony souborů, striktně z technického hlediska: Systémy souborů Unix/Linux/* BSD nepodporují přípony samy o sobě. Voláte příponu, je pouze přípona jednoho názvu souboru. To je jiné než souborové systémy VM/CMS, VMS, MS-DOS a Windows a OS, kde je pro rozšíření vyhrazeno zvláštní místo v ekvivalentu inode-moral.

Ten malý chvástání teď, myslím, že je trochu hloupé dát příponu ".sh" nebo ".ksh" nebo ".bash" do názvu souboru skriptu Shell. Program je program: neexistuje žádný přínos pro rozlišení toho, co bude provedeno. Žádný unix, linux nebo cokoli jádro se rozhodlo zavolat tlumočníka na nějaký soubor jen kvůli příponě názvu souboru. Všechno to provádí #! řádek nebo nějaká jiná sekvence "magických čísel" bajtů na začátku souboru. Ve skutečnosti je rozhodování o tom, co provést na základě přípony názvu souboru, jedním z faktorů, díky nimž je Windows malwarovým magnetem. Podívejte se, kolik podvodů se škodlivým softwarem Windows zahrnuje soubor s názvem „něco.jpg.exe“ - ve výchozím nastavení novější systém Windows nezobrazuje příponu „.exe“ a vybízí uživatele, aby na obrázek dvakrát klikl. Namísto spuštění zobrazení obrázku se malware spustí.

To, co byste mohli považovat za přímý příkaz, je často skript Shell. Někdy cc byl sh-script, firefox je sh-script, startx je sh-script. Nevěřím, že existuje značný nebo kognitivní přínos pro označení skriptu příponou „.sh“.

25
Bruce Ediger

Jako člověk, který pracoval v mnoha prostředích, jsem musel psát v celé řadě ulic. Věřte tomu nebo ne, na různých platformách nejsou náboje stejné. Pokud tedy udržujete svou osobní knihovnu ve více skořápkách (je-li to nutné), je velmi užitečné použít rozšíření k identifikaci skořápek. Tímto způsobem, když se přesunete na jinou platformu a prostředí Shell se mírně liší, víte, na jaké skripty se mají upravit. .sh .ksh .bsh .csh ...

13
Jumpylodo

Rozšíření byste neměli používat pro spustitelné soubory, protože nejsou zaměnitelné. Představte si, že máte skript Shell a.sh, pak znovu zapište python a.py, nyní musíte změnit každý program, který volá skript, vynechali jste podrobnosti implementace.

Celá věc s příponou názvu souboru v systému Windows Mircosoft je nepořádek: například to, co mohlo být a.audio, b.audio, c.audio, je a.mp3, b.wav, c.ogg, a d.picture, e.picture, f.picture je d.jpeg, e.png, f.gif. Většinu času nám nezáleží na tom, v jakém formátu je zvuk nebo obrázek. Také musíme strávit dlouhou dobu učením nových uživatelů všech přípon souborů.

8
ctrl-alt-delor

Jak jste řekli, přípony souborů Unix jsou čistě informativní. Stačí, aby váš skript měl správný Shebang a byl spustitelný.

Můžete buď bez přípony, nebo pomocí .sh.

Osobně používám následující konvence, bez ohledu na použité Shell (csh, tcsh, bash, sh, ...):

  • žádné rozšíření pro systémové nebo vysoce kvalitní skripty (velmi vzácné).
  • .sh pro klasické skripty, od nízké po vysokou.
5
Ouki

Rozšíření skriptů Shell jsou docela užitečná. Například často píšu skripty, které mají více souborů ve více jazycích (např. Bash, awk a lua) ve stejném adresáři. Pokud potřebuji hledat řetězec pouze v bashových souborech, rozšíření to činí velmi užitečným, aby se snížilo falešné poplachy. Nebo pokud chci pro tento projekt udělat počet řádků celého mého bash kódu.

Je bolestí, když musíte při spuštění programu psát příponu, takže také udělám symbolický odkaz bez přípony k hlavnímu spustitelnému souboru, upravím/spouštím, aniž by bylo nutné pokaždé psát příponu. Symlinks jsou levné a snadné.

4
Steve

Jak říkali ostatní, Shell se nezajímá o rozšíření. Umožňuje však rychlou lidskou identifikaci souborů. Vidím soubory končící na .py nebo .sh a já rychle vím, co by měli být (alespoň). Jak říká Steve, vyhledávání podle přípony souboru nebo provádění počtu řádků jsou také praktické úvahy.

2
qwr