Odpowiedz
Zadzwoniłbym tylko do .sh
czegoś, jest przeznaczony do przenoszenia (i mam nadzieję, że jest przenośny).
W przeciwnym razie myślę, że lepiej jest ukryć język. Uważny czytelnik i tak znajdź go w linii shebang. (W praktyce .bash
lub .zsh
, itd.… przyrostki są rzadko używane).
Komentarze
Odpowiedź
Powiedziałbym, że nie istnieją żadne „dobre praktyki” dotyczące rozszerzeń plików, ściśle ze względów technicznych: systemy plików Unix / Linux / * BSD nie „t obsługują rozszerzenia jako takie. To, co nazywasz rozszerzeniem, jest po prostu przyrostkiem pojedynczej nazwy pliku. Różni się to od systemów plików VM / CMS, VMS, MS-DOS i Windows, gdzie specjalne miejsce w i-węzłach ekwiwalent moralny jest zarezerwowany dla rozszerzenia.
Ten mały rant już się skończył, myślę, że „trochę głupio jest umieszczać sufiks” .sh „,” .ksh „lub” .bash „na powłoce nazwa pliku skryptu. Program jest programem: nie ma żadnej korzyści z rozróżniania tego, co jest wykonywane. Żaden unix, linux czy jakiekolwiek inne jądro nie zdecydowało się wywołać interpretera na jakimś pliku tylko z powodu przyrostka nazwy pliku. Wszystko to jest wykonywane przez wiersz #!
lub inna sekwencja bajtów „magicznej liczby” w początek pliku. W rzeczywistości decydowanie o tym, co należy wykonać na podstawie „rozszerzenia” nazwy pliku, jest jednym z czynników, które sprawiają, że system Windows jest magnesem dla złośliwego oprogramowania. Zobacz, ile oszustw związanych ze złośliwym oprogramowaniem dla systemu Windows dotyczy pliku o nazwie „coś.jpg.exe” – domyślnie nowszy system Windows nie wyświetla rozszerzenia „.exe” i zachęca użytkownika do dwukrotnego kliknięcia „obrazu”. Zamiast gdy uruchomiony jest widok obrazu, złośliwe oprogramowanie działa.
To, co można by pomyśleć jako bezpośrednie polecenie, i tak często jest skryptem powłoki. Czasami cc
był sh-script, firefox
to sh-script, startx
to sh-script. Nie wierzę, że istnieją funkcje poznawcze lub korzyści organizacyjne z oznaczania skryptu sufiksem „.sh”.
Komentarze
Odpowiedź
Jako osoba, która pracowała w wielu różnych środowiskach, musiałem pisać w wielu różnych muszle. Wierz lub nie, ale na różnych platformach powłoki nie są takie same. Jeśli więc utrzymujesz swoją osobistą bibliotekę w wielu powłokach (gdy jest to konieczne), bardzo pomocne jest używanie rozszerzeń do identyfikowania powłok. W ten sposób, gdy przechodzisz na inną platformę, a powłoka jest nieco inna, wiesz, jakie skrypty należy kierować na modyfikacje. .sh .ksh .bsh .csh …
Komentarze
Odpowiedź
Nie należy używać rozszerzeń plików wykonywalnych, ponieważ nie są one zamienne. Wyobraź sobie, że masz skrypt powłoki a.sh
, a następnie ponownie napisz w pythonie a.py
, teraz musisz zmienić każdy program, który wywołuje Twój skrypt , ujawniłeś szczegóły implementacji.
Cały problem z rozszerzeniem nazwy pliku w systemie Mircosoft to bałagan: na przykład to, co mogło być a.audio, b.audio, c.audio
, to a.mp3, b.wav, c.ogg
, a d.picture, e.picture, f.picture
to d.jpeg, e.png, f.gif
. W większości przypadków nie obchodzi nas, jaki format dźwięk lub obraz jest w środku. Musimy też spędzić dużo czasu ucząc nowych użytkowników wszystkich rozszerzeń plików.
Komentarze
Odpowiedź
Jak już powiedziałeś, rozszerzenia plików w systemie Unix to czysta informacja. Potrzebujesz tylko swojego skryptu, aby miał poprawny shebang i był wykonywalny.
Możesz albo nie mieć rozszerzenia, albo użyć .sh
.
I osobiście używaj następujących konwencji, niezależnie od używanej powłoki (csh, tcsh, bash, sh, …):
- brak rozszerzenia dla skryptów systemowych lub wysokiej jakości (niezwykle rzadkie).
- the
.sh
dla klasycznych skryptów, ocena od niskiej do wysokiej.
Komentarze
- Co rozumiesz przez " klasyczne skrypty, od niskiej do wysokiej jakości "?
- Myślę Miałem na myśli poziom abstrakcji lub organizacji. To znaczy, że nie ' nie obchodzi cię, jaki język / skrypt jest używany w niektórych poleceniach: więc nie ' nie używasz żadnego rozszerzenia. Dla innych dobrze jest wiedzieć, że jest to bash lub jakiś egzotyczny skrypt powłoki ksh (z odpowiednim rozszerzeniem). … ale to było 2 lata temu;)
Odpowiedź
Rozszerzenia skryptów powłoki są całkiem przydatne. Na przykład często piszę skrypty, które mają wiele plików w wielu językach (np.bash, awk i lua) w tym samym katalogu. Jeśli muszę wyszukać ciąg tylko w plikach bash, rozszerzenie sprawia, że jest to bardzo przydatne, aby zmniejszyć liczbę fałszywych alarmów. Lub jeśli chcę policzyć wiersze całego mojego kodu bash dla tego projektu.
Uciążliwe jest wpisywanie rozszerzenia podczas uruchamiania programu, więc tworzę również dowiązanie symboliczne bez rozszerzenia do główny plik wykonywalny, aby go edytować / uruchamiać bez konieczności każdorazowego wpisywania rozszerzenia. Linki symboliczne są tanie i łatwe.
Komentarze
Answer
Jak powiedzieli inni, powłoka nie dba o rozszerzenia. Pozwala jednak na szybką identyfikację plików przez człowieka. Widzę pliki kończące się na .py
lub .sh
i szybko wiem, jakie one (przynajmniej) powinny być. Jak mówi Steve, wyszukiwanie według rozszerzenia pliku lub liczenie wierszy to również kwestie praktyczne.