Zastanawiałem się, jaka jest konwencja nazewnictwa plików w Uniksie? Nie jestem tego pewien, ale myślę, że może istnieje uniwersalna konwencja nazewnictwa, której należy przestrzegać?
Na przykład chcę nazwać plik powiedz: za backup
pomocą part 2
irandom
Czy powinienem to zrobić w ten sposób:
backup_part2_random
LUB
backup-part2-random
LUB
backup.part2.random
Mam nadzieję, że pytanie jest jasne. Zasadniczo chcę wybrać format zgodny z filozofią uniksową.
Odpowiedzi:
.
służy do oddzielenia rozszerzenia typu pliku, npfoo.txt
.-
lub_
służy do oddzielania logicznych słów, np.my-big-file.txt
lub czasamimy_big_file.txt
.-
jest lepszy, ponieważ nie trzeba naciskać klawisza Shift (przynajmniej ze standardową klawiaturą PC w języku angielskim), inni wolą,_
ponieważ bardziej przypomina spację.Więc jeśli rozumiem twój przykład
backup-part2-random
lubbackup_part2_random
byłby najbliższy normalnej konwencji uniksowej.CamelCase zwykle nie jest używany w systemach Linux / Unix. Spójrz na nazwy plików w
/bin
i/usr/bin
. CamelCase jest wyjątkiem, a nie regułą w systemach Unix i Linux.(
NetworkManager
jest to jedyny przykład, w którym myślę o tym, że używa CamelCase i został napisany przez programistę Mac. Wielu narzekało na ten wybór nazwy. W Ubuntu zmienili nazwę skryptu nanetwork-manager
.)Na przykład
/usr/bin
w moim systemie:i nawet wtedy żaden plik zaczynający się od kapitału nie używa CamelCase:
źródło
.
może być również używany do obracania rzeczy, a nie tylko do określania rozszerzenia. Na przykładmy.log my.log.1 my.log.2.gz
.ls
wyjściowy/usr/bin
jest . Odniesienie To jest pytanie o konwencje. )O wiele ważniejsze jest to, aby konkretna konwencja była spójna. Wybierz styl i trzymaj się go.
źródło
Moje podejście do konwencji nazw plików w systemach Unix / Linux:
Systemy plików Unix / Linux z natury nie obsługują pojęcia rozszerzenia. Koncepcja rozszerzenia pliku istnieje jako coś całkowicie wspierany przez narzędzia takie jak
cp
,ls
lub powłoki używasz. Uważam, że tak też jest w NTFS, ale mogę się mylić.Pliki wykonywalne, w tym skrypty powłoki, zwykle nigdy nie mają żadnego rodzaju rozszerzenia. Skrypty będą miały linię hashbanga (tj.
#!/bin/bash
), Która identyfikuje program, który powinien ją interpretować./etc
kończącym się wtab
to również bardzo ważne, takie jakfstab
,mtab
,inittab
..d
jest dołączany do nazw katalogów, szczególnie w/etc
, ale nie jest to powszechne (AKTUALIZACJA: https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux )rc
jest szeroko stosowany w skryptach konfiguracyjnych lub plikach, poprzedzających (np.rc.local
) lub sufiksach (.vimrc
).htm
na końcu plików HTML w systemach Unix / Linux, użyj.html
.Makefile
w pakietach źródłowych. Zrób to tylko dla takich rzeczyREADME
.~
służy do identyfikacji pliku kopii zapasowej lub katalogu, jak wimportant_stuff~
, lub/etc~
. Wiele muszle poszerzy lone~
do$HOME
.lib
. Wyjątkiem jestzlib
i prawdopodobnie kilka innych.in.
, takim jakin.tftpd
.vmlinuz
oznacza zip, ale nigdy nie widziałem żadnego innego pliku o takiej nazwie.źródło
.sh
„rozszerzeniem”. Osobiście uważam to za nieco irytujące, ale muszę przyznać, że mogę nie być świadomy jakiegoś dobrego powodu, aby korzystać z.sh
..sh
na skryptach, które (1) nie są przeznaczone do uruchamiania interaktywnego, ale tylko z innych skryptów / programów lub (2) są przeznaczone raczej do pozyskiwania niż wykonywania. W przypadku tych pierwszych muszą być one wykonalne; dla tego ostatniego zostawiam bit wykonywalny wyłączony i używam linii shebang tylko do dokumentacji, dla jakiej powłoki są napisane funkcje.#!/bin/zsh
. U góry) wiesz, że możesz bezpiecznie pobrać inny plik z rozszerzeniem .zsh i upewnij się, że zawiera on legalny kod zsh. Jeśli Twój skrypt wykonywalny jest ściśle zgodny z Bourne Shell (tj#!/bin/sh
. U góry), będziesz wiedział, że pozyskanie pliku .zsh będzie problematyczne.W Uniksie nazwa pliku jest po prostu łańcuchem, w przeciwieństwie do DOS, gdzie nazwa pliku składa się z nazwy i rozszerzenia. Każda z nazw plików jest więc całkowicie akceptowalna.
Jednak wiele programów nadal używa sufiksów plików zaczynających się od kropki, aby rozróżniać różne typy plików, tzn. Serwer Apache Web używa sufiksów, aby ustawić poprawny typ MIME w nagłówkach odpowiedzi.
źródło
Dwie myśli:
W
Naming Variables, Functions, and Files
sekcji Standardów kodowania GNU znajdziesz:Chociaż IMO mówi „Powinieneś używać,
_
ponieważ emacs” wydaje się nieco przestarzały, jest to jednak zawarte w ich „standardowym” dokumencie.Przypuśćmy na chwilę, że wszyscy się zgadzamy, że jądro Linuksa jest kompletnym * projektem linux i że stosowane tam konwencje są czymś, co można by uznać za „standardową” konwencję.
grep
-ing źródło dla jądra linuxa znajdziesz następujące:Co ciekawe, źródło git waży 85% dla kresek, 3,8% dla podkreślników i 11,1% dla obu.
Wybór jest jasny, debata zakończona. ;)
Osobista opinia: używam myślników ze względów estetycznych i zmiany biegów. Jeśli pracujesz w zespole, głosuj. Ale aby powtórzyć to, co zostało powiedziane, bądź konsekwentny .
* lub „be_all i end_all”, jeśli chcesz
źródło
Znaki, których nie powinieneś używać w nazwach plików:
Ograniczniki znaków, których należy używać, aby ułatwić czytanie nazw:
(W niektórych przypadkach „:” ma jednak specjalne znaczenie)
źródło
/
separator ścieżki i terminator łańcucha \ 0 (ASCII zero).Aby dodać do tego, co powiedzieli inni, powiem tylko, że chociaż litery akcentowane i wiele znaków specjalnych jest legalnych w nazwach plików, mogą powodować problemy w jednym z następujących scenariuszy:
...
źródło
Trzymaj się alfanumerycznych nazw plików. Unikaj spacji lub zamień spacje na podkreślniki (_). Ogranicz znaki interpunkcyjne w nazwach plików do kropek (.), Znaków podkreślenia (_) i łączników (-). Ogólnie nazwy plików są pisane małymi literami, ale używam CamelCase, gdy mam wiele słów w nazwie pliku.
Używaj rozszerzeń wskazujących typ pliku. Programy nie potrzebują rozszerzeń, ponieważ bit wykonania służy do wskazywania programów, a powłoki wiedzą, jak uruchamiać programy różnych typów. Jest to powszechne, ale nie wymagane (.sh) dla skryptów powłoki i (.pl) dla skryptów perla. Rozszerzenia plików wykonywalnych Windows .bat, .com, .scr i .exe wskazują pliki wykonywalne Windows w systemie Unix.
Wybierz standard i trzymaj się go. Ale to niczego nie zepsuje, jeśli tego unikniesz.
Pliki ukryte (lub kropkowe) mają nazwy zaczynające się od kropki. Te zwykle nie pojawiają się na listach katalogów. Użyj „ls -a”, aby dołączyć pliki kropek do listy.
źródło
Jedną konwencją jest użycie „_” do zamiany spacji jako separatorów między słowami. Inne znaki mogą być używane do zamiany spacji, ale istnieją nieco silniejsze konwencjonalne zastosowania dla „-” i „.” w ścieżkach, więc zwykle „_” jest preferowane.
Spacje są dozwolone w nazwach ścieżek, ale umownie się ich unika, ponieważ wymagają cytowania nazwy ścieżki („pasek foo”) lub ucieczki od spacji (foo \ bar). Prawidłowo napisany skrypt powłoki będzie cytował zmienne, które mogą zawierać spacje, szczególnie ścieżki, ale ich brak jest powszechnym niedopatrzeniem i wymaga dodatkowego wpisywania przy wykonywaniu jednorazowego polecenia wpisanego w wierszu poleceń.
Użycie „-” do oddzielenia klastrów liczb, takich jak znaczniki czasu lub numery seryjne, jest konwencją powszechnie stosowaną poza kontekstem systemów plików. Za pomocą "." aby oddzielić „rozszerzenia plików” wskazujące, że typ pliku jest bardzo powszechny, a niektóre ważne narzędzia od niego zależą. Na przykład system zarządzania pakietami w Red Hat Enterprise Linux i jego pochodnych RPM oczekuje, że pliki pakietów zakończą się na „.rpm”. Tradycyjny plik tar jest plikiem tar („.tar”), który został spakowany gzip („.gz”), a więc kończy się na „.tar.gz”.
Zestawiając je razem, często kończy się na nazwach plików, które wyglądają jak „home_backup_2017-07-01.tar.gz”
źródło
użyj
-
lub_
do nazewnictwa plików_
funkcji.
dla rozszerzeńźródło
Zgadzam się z Davidem Oneillem, że powinieneś z czymś pójść.
Ale dobrze, jeśli pliki można sortować w tym samym katalogu, więc nie numer 0 ..10, ale numer 00 ..10.
Używając dat w nazwach, korzystaj ze standardowego formatu daty, takiego jak ISO8601 .
I nie bój się używać wielu znaków do oddzielania logicznych części w nazwie. Jeśli użyjesz _ (to było 3 _), możesz później uprościć wyrażenia regularne nazw plików.
Twój przykład może więc wyglądać mniej więcej tak:
Łatwy do odczytania i łatwy do przeanalizowania za pomocą skryptów.
źródło
Słowa w nazwie pliku można rozdzielić za pomocą
_
lub-
zgodnie z konwencją uniksową.Jeśli używasz
-
, łatwiej jest pisać, nie musisz naciskać SHIFT. Ale ponieważ-
zajmuje tak mało miejsca, trudno jest odczytać separacje słów w porównaniu do_
. Używanie_
do oddzielania słów sprawia, że wygląda znacznie czystiej, ponieważ_
zajmuje więcej miejsca.W skryptach powłoki i innych programach komputerowych
_
używane są zmienne wielosłówowe, takie jakMY_ENVIRONMENT_FILE
. Dokonywanie używać nazwy plików_
, a także sprawia, że jest konsekwentny:MY_ENVIRONMENT_FILE=~/my_environment_file
.W tworzeniu stron internetowych
-
preferowane jest nazywanie plików. Jednym z powodów jest prawdopodobnie to, że podkreślenie w linkach internetowych może ukryć podkreślenia i może utrudnić, jeśli wpisujesz link ręcznie.W większości edytorów, a także na stronach internetowych,
this_long_word
można w pełni wybrać podwójnym kliknięciem, ale niethis-long-word
.źródło
-
i_
zająć właśnie dokładnie tego samego miejsca! :)_
wygląda na czystszy, nawet jeśli zajmuje tyle samo miejsca co-
. Powinienem był użyć słowa „najwyraźniej”. Odnośnie_
i-
przy użyciu czcionek monospace, różnicę można najlepiej wyjaśnić za pomocą tego analogicznego obrazu: evsc.net/v8/wp/wp-content/uploads/2010/09//Jest zdecydowanie standard dla Linuksa. Jeśli spojrzysz na nazwy plików w dowolnym systemie Linux, są one pisane małymi literami z myślnikami: / usr / bin / ssh-keygen. Jest to określone w jednym z dokumentów Linux Standards Base, którego nie mogę teraz znaleźć. Jest to również określone przez GNU, który mówi, aby używać znaków podkreślenia dla nazw zmiennych i myślników dla nazw plików.
źródło
Aby dodać do tego, co wszyscy inni powiedzieli:
1 - Mimo że Linux nie dba o rozszerzenia, Windows tak, więc upewnij się, że każdy plik, który kiedykolwiek planujesz dać każdemu, ma odpowiednie rozszerzenie.
Wydaje się, że czapki z 2 wielbłądami są najłatwiejszymi w użyciu skryptami, bez specjalnych znaków, które mogłyby się martwić o sekwencje specjalne.
źródło