Komentáře
Odpověď
Nazval bych jen .sh
něco, co je určen jako přenosný (a doufejme, že je přenosný).
Jinak si myslím, že je lepší jazyk skrýt. Pečlivý čtenář najděte ji v linii shebangu. (V praxi se .bash
nebo .zsh
atd.… používají jen zřídka.)
Komentáře
- Jen z této stránky již vidíme docela netriviální množství lidí, kteří ji používají. Proč říkáte, že jsou " zřídka používané "? Citace? Nebo je to pouze na základě vašich zkušeností?
- Použil bych
.bash
pokud to ' mělo být získáváno jiným skriptem a je kompatibilní pouze s bash atd. Pokud jej může získat jakýkoli bourne kompatibilní shell, napříkladsh
,dash
, nebobash
, dal bych mu.sh
příponu. Pokud by to mělo být ' spuštěno, ' bych příponu nepostavil.
Odpověď
Řekl bych, že neexistují žádné „dobré postupy“ pro přípony souborů, přísně z technického hlediska: unixové / linuxové / * BSD souborové systémy nejsou podpora přípon sama o sobě. To, co nazýváte příponou, je pouze přípona jediného názvu souboru. To se liší od souborových systémů a operačních systémů VM / CMS, VMS, MS-DOS a Windows, kde je zvláštní místo v inode- morální ekvivalent je vyhrazen pro příponu.
Ten malý chvástání, který je teď u konce, si myslím, že je trochu hloupé vložit příponu „.sh“ nebo „.ksh“ nebo „.bash“ název souboru skriptu. Program je program: neexistuje žádná výhoda v rozlišování toho, co se provede. Žádný unix ani linux ani žádné jádro se nerozhodlo zavolat tlumočníka na nějaký soubor jen kvůli příponě názvu souboru. Všechno to dělá #!
řádek nebo nějaká jiná sekvence bajtů „magického čísla“ na začátek 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 magnetem malwaru. Podívejte se, kolik podvodů s malwarem v systému Windows zahrnuje soubor s názvem „something.jpg.exe“ – ve výchozím nastavení novější systém Windows neukazuje příponu „.exe“ a vyzve uživatele, aby dvakrát klikl na „obrázek“. Místo běží obrázek, běží malware.
To, co si můžete představit jako přímý příkaz, je i tak často skript prostředí. Někdy cc
byl sh-script, firefox
je sh-script, startx
je sh-script. Nevěřím, že je kognitivní nebo přínos pro organizaci pro označení skriptu příponou „.sh“.
Komentáře
- Nesouhlasím! Moje práce spočívá v zabalení aplikace zahrnující tisíce soubory od binárních spustitelných souborů po skripty prostředí (ksh, bash a některé starší csh). Věřte mi, že to dělá , aby bylo možné hned na první pohled (nebo v regexu) vědět, co druh souboru, o kterém diskutujeme a hledáme. Jde mi o to, že by mohl b Výhodou v rozlišování toho, co se vylučuje, a osvědčený postup by mělo být výslovné uvedení typu souboru.
- @rahmu: napište to jako odpověď. Uveďte několik podrobností o tom, jak vám názvy rozlišitelné podle regulárního výrazu pomáhají s balením (a možná i údržbou) dané aplikace. Všimněte si konkrétně interakce mezi tím, co soubor interpretuje, a příponou názvu souboru ' a tím, jak vám pomáhá při provádění úkolů. ' zajímám se o vážné argumenty proti mému pohledu a jsem ' ochoten se změnit, pokud ' jsem přesvědčen. Hlasoval jsem pro váš komentář, abych to dokázal.
- Rád bych, bohužel, mohu mluvit pouze o mých současných zkušenostech v mé současné práci.' Nevím mnoho o osvědčených postupech a normách obecně ; Cítím, že bych měl udělat nějaký průzkum, než sem zveřejním odpověď. ' se do toho dnes večer po práci podívám 🙂
- @rahmu " soubor " existuje příkaz pro určení typu souboru. Je schopen rozlišovat skripty napsané pro různé skořápky.
- Pokud dáte shell skriptu
.sh
rozšíření, ' při spuštění musím toto.sh
zadat jako součást názvu příkazu. To ' to je hlavní důvod, proč se mi ' nelíbí uvedení tohoto rozšíření (stejně jako u čehokoli, co má linii shebang). BTW, problém v systému Windows není.exe
předpona sama o sobě (' je triviální vytvořit spustitelný soubor s názvemimage.jpg
v Linuxu), ale skutečnost, že Windows obvykle toto rozšíření skrývá, v kombinaci se skutečností, že akce potřebovala ke spuštění spustitelného souboru a otevření dokumentu, je úplně stejná.
Odpověď
Jako člověk, který pracoval v mnoha prostředích? nix, jsem musel psát v široké škále mušle. Věřte tomu nebo ne, na různých platformách nejsou granáty stejné. Pokud tedy udržujete svoji 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ž přejdete na jinou platformu a prostředí se mírně liší, víte, na jaké skripty je třeba cílit na úpravy. .sh .ksh .bsh .csh …
Komentáře
- Zdá se, že to souhlasí s unix.stackexchange.com/questions/31760/ …
- Nemáte
#!
na začátku skriptu (např.#!/bin/bash
)? - Gnu / Linux, BSD a UNIX jsou všechny Unix. Není třeba? Linux je jádro, systém Android používá Linux, ale nejde o Unix (pokud nepřidáte další software, v tom případě máte unixovou aplikaci).
- @ ctrl-alt-delor: " Unix " je ochranná známka . Lidé často používají "? Nix " k tomu, aby se vyhnuli problému s ochrannou známkou (a pedantům).
- @JS ` UNIX ' je ochranná známka společnosti The Open Group. Unix a unix nejsou greens.org/about/unix.html
odpověď
Neměli byste používat příponu pro spustitelné soubory, protože nejsou zaměnitelné. Představte si, že máte shell skript a.sh
a poté jej znovu zapíšete v pythonu a.py
, nyní musíte změnit každý program, který vás volá skript , unikly vám podrobnosti implementace.
Celá věc s příponou názvu souboru v systému 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šinou nám nezáleží na tom, jaký formát audio nebo obrázek je uvnitř. Musíme také strávit dlouhou dobu výukou nových uživatelů všech přípon souborů.
Komentáře
- Další důvod není použít
*.sh
Právě jsem narazil na to, že Debian ' srun-parts
vyhrál ' spouštět skripty s příponami, například v/etc/cron.*/
: archive.oreilly.com/pub /post/runparts_scripts_a_note_about.html
Odpověď
Jak jste řekl, přípony souborů Unix jsou čistě informační. Potřebujete, aby váš skript měl správný shebang a byl spustitelný.
Můžete mít buď žádné rozšíření, nebo použít .sh
.
I osobně použijte následující konvence, bez ohledu na použitý shell (csh, tcsh, bash, sh, …):
- žádné rozšíření pro systém nebo vysoce kvalitní skripty (extrémně vzácné).
- the
.sh
pro klasické skripty, nízké až vysoké kvality.
Komentáře
- Co máte na mysli pod " klasickými skripty, od nízkého po nejvyšší stupeň "?
- myslím Myslel jsem tím abstrakci nebo organizační úroveň. To znamená, že ' se nestaráte o to, jaký jazyk / skriptový nástroj je za některými příkazy použit: takže ' nepoužíváte žádné rozšíření. Pro ostatní je dobré vědět, že se jedná o bash nebo nějaký exotický skript shellu ksh (se správnou příponou). … ale to bylo před 2 lety;)
Odpověď
Rozšíření skriptů Shell jsou docela užitečná. Například často píšu skripty, které obsahují více souborů ve více jazycích (např.bash, awk a lua) ve stejném adresáři. Pokud potřebuji vyhledat řetězec pouze v souborech bash, rozšíření je velmi užitečné, aby se snížily falešné pozitivy. Nebo pokud chci udělat počet řádků celého mého bash kódu pro tento projekt.
Je bolestné, když musím při spuštění programu psát příponu, takže také vytvořím symbolický odkaz bez rozšíření na hlavní spustitelný soubor, chcete-li jej upravit / spustit, aniž byste museli pokaždé zadávat příponu. Symlinky jsou levné a snadné.
Komentáře
- Zdá se, že to souhlasí s unix.stackexchange. com / questions / 31760 / …
odpověď
Jak již řekli ostatní, prostředí se nestará o přípony. Umožňuje však rychlou identifikaci souborů člověkem. Vidím soubory končící na .py
nebo .sh
a rychle vím, co by (alespoň) mělo být. Jak říká Steve, vyhledávání podle přípony souboru nebo počet řádků jsou také praktické úvahy.
bash script.sh
(nebosh
, samozřejmě ).