Închis . Această întrebare este
bazată pe opinie . În prezent, nu acceptă răspunsuri.
Comentarii
Răspuns
Aș numi doar .sh
ceva care este menit să fie portabil (și sperăm că este portabil).
În caz contrar, cred că este mai bine să ascundem limba. Cititorul atent va găsiți-l în linia shebang oricum. (În practică, .bash
sau .zsh
, etc … sufixele sunt rareori folosite.)
Comentarii
Răspuns
Aș spune că nu există „bune practici” pentru extensiile de fișiere, strict pe un punct de vedere tehnic: sistemele de fișiere Unix / Linux / * BSD nu „t acceptă extensii în sine. Ceea ce numiți extensie este doar un sufix al unui singur nume de fișier. Acest lucru este diferit de sistemele de fișiere și sistemele de operare VM / CMS, VMS, MS-DOS și Windows, unde există un loc special în inode- moral-echivalent este rezervat pentru o extensie.
Acea mică descumpănire de acum, cred că este „puțin cam prost să pui un sufix„ .sh ”sau„ .ksh ”sau„ .bash ”pe o coajă numele fișierului script. Un program este un program: nu există niciun beneficiu în a distinge ceea ce se execută. Niciun unix sau linux sau orice kernel nu a decis să apeleze un interpret într-un fișier doar din cauza unui sufix de nume de fișier. Totul este făcut de #!
sau o altă secvență de octeți „număr magic” la începutul fișierului. De fapt, a decide ce să execute pe baza unui nume de fișier „extensie” este unul dintre factorii care fac din Windows un magnet malware. Uită-te la câte escrocherii malware Windows implică un fișier numit „ceva.jpg.exe” – în mod implicit, Windows mai nou nu afișează extensia „.exe” și încurajează un utilizator să facă doar dublu clic pe „imagine”. În loc de o vizualizare a imaginii rulează, programul malware rulează.
Ceea ce ați putea crede că este o comandă directă este oricum un script shell oricum. Uneori cc
a fost un sh-script, firefox
este un sh-script, startx
este un sh-script. Nu cred că există un cognitiv sau avantaj organizațional pentru marcarea unui script cu un sufix „.sh”.
Comentarii
Răspuns
Ca unul care a lucrat într-o multitudine de medii? nix, a trebuit să scriu într-o mare varietate de scoici. Credeți sau nu, pe platforme, cochiliile nu sunt la fel. Deci, dacă vă mențineți biblioteca personală în mai multe shell-uri (atunci când este necesar), este foarte util să utilizați extensii pentru a identifica shell-urile. În acest fel, când vă mutați pe o altă platformă și shell-ul este ușor diferit, știți ce scripturi să vizați modificările. .sh .ksh .bsh .csh …
Comentarii
Răspuns
Nu ar trebui să utilizați o extensie pentru executabile, deoarece acestea nu sunt interschimbabile. Imaginați-vă că aveți un script shell a.sh
, apoi rescrieți în python a.py
, acum trebuie să schimbați fiecare program care vă apelează script , ați scurs detalii despre implementare.
Întregul lucru cu extensia numelui de fișier din Windows-ul Mircosoft este o mizerie: de exemplu ceea ce ar fi putut fi a.audio, b.audio, c.audio
, este a.mp3, b.wav, c.ogg
și d.picture, e.picture, f.picture
este d.jpeg, e.png, f.gif
. De cele mai multe ori nu ne interesează ce format sunetul sau imaginea este inclusă. De asemenea, trebuie să petrecem mult timp învățând utilizatorilor noi toate extensiile de fișiere.
Comentarii
Răspuns
După cum ați spus-o, extensiile de fișiere Unix sunt doar informații. Trebuie doar ca scriptul dvs. să aibă un shebang corect și să fie executabil.
Nu puteți avea nici o extensie sau folosiți .sh
.
I utilizați în mod personal următoarele convenții, indiferent de shell-ul folosit (csh, tcsh, bash, sh, …):
- fără extensie pentru sistem sau scripturi de înaltă calitate (extrem de rare).
-
.sh
pentru scripturile clasice, de la nivel scăzut la înalt.
Comentarii
Răspuns
Extensiile scriptului Shell sunt destul de utile. De exemplu, scriu adesea scripturi care au mai multe fișiere în mai multe limbi (de ex.bash, awk și lua) în același director. Dacă trebuie să caut un șir doar în fișierele bash, extensia face acest lucru foarte la îndemână, pentru a reduce pozitivele false. Sau dacă vreau să fac un număr de linii din tot codul meu bash pentru proiectul respectiv.
Este dificil să trebuiască să tastați extensia atunci când rulați programul, așa că fac și un link simbolic fără extensia la executabilul principal, pentru al edita / rula fără a fi nevoie să tastați extensia de fiecare dată. Linkurile simulare sunt ieftine și ușoare.
Comentarii
Răspuns
După cum au spus alții, shell-ului nu îi pasă de extensii. Cu toate acestea, permite identificarea rapidă a fișierelor de către oameni. Văd fișiere care se termină cu .py
sau .sh
și știu rapid ce ar trebui să fie (cel puțin). După cum spune Steve, căutarea după extensia de fișier sau efectuarea numărării de linii sunt, de asemenea, considerente practice.