Czy jest to prawidłowe stosowanie pewnych znaków specjalnych, jak +
, &
, '
, .
(kropka) i ,
(przecinek), w zasadzie, w nazwach plików.
Rozumiem, że możesz używać -
i _
bez problemu, ale podczas niektórych badań nie udało mi się znaleźć czegoś konkretnego w innych symbolach; niektórzy twierdzą, że możesz, niektórzy twierdzą, że nie, a niektórzy twierdzą, że „nie zachęca się” ich do korzystania (cokolwiek to oznacza).
filenames
unix-philosophy
Chris Klein
źródło
źródło
Odpowiedzi:
Tak.
Prawidłowe, ale niekoniecznie wskazane lub wygodne.
W nowoczesnych systemach plików Unix i Linux można używać dowolnych znaków oprócz null i
/
nazwy pliku.Możesz użyć interpunkcji ASCII . Niektóre narzędzia używają znaków stop ( kropek ) i przecinków w nazwach plików, które tworzą.
Możesz używać znaków kontrolnych ASCII , jednak jest to niewskazane, ponieważ jest mało prawdopodobne, aby były wyświetlane w sposób akceptowalny i są trudne w użyciu.
Możesz używać metaznaków powłoki, takich jak ampersand ASCII i apostrof ASCII. Jest to jednak niewygodne i wymaga, aby podczas konstruowania poleceń zwracać szczególną uwagę na cytowanie lub unikanie takich znaków.
Możesz używać znaków wielobajtowych, używając różnych kodowań. Do powłoki i / lub narzędzi należy poprawna interpretacja i wyświetlanie znaków spoza ASCII. Wskazane jest ograniczenie się do popularnego kodowania, takiego jak UTF-8 i odpowiednie ustawienie regionalne.
Będziesz mieć najmniej problemów z używaniem znaków drukowalnych ASCII, ograniczając zestaw znaków interpunkcyjnych do tych, które nie są meta-znakami powłoki i nie rozpoczynając nazwy łącznikiem (lub znakiem stop - chyba że chcesz ukryć plik).
źródło
Jak stwierdzili inni, we współczesnych systemach Unix / Linux nazwy plików mogą zawierać dowolne znaki oprócz
\0
(NUL) i/
(ukośnik).Ponadto standard POSIX definiuje przenośny zestaw znaków dla nazw plików:
pathchk
Narzędziowy z GNU Coreutils kontroli na tym, kiedy wywołana z-p
opcji, a-P
opcja będzie ostrzegać o pustymi nazwami plików (które nie są ważne, ale mogą być przekazywane jako argumentpathchk
) i nazwy plików zaczynające się od myślnika (-
).źródło
Najbezpieczniejszym zakładem jest odwołanie się do wpisu w Wikipedii dotyczącego dozwolonego zestawu znaków dla dowolnego systemu operacyjnego. Można go znaleźć stąd .
Na przykład w większości systemów opartych na Uniksie dozwolony zestaw znaków to 8 bitów, a znak zarezerwowany to znak null (NUL,
'\0'
). Nie jest jednak dobrą praktyką stosowanie znaków specjalnych w nazwach plików, ponieważ stanowią one problem podczas ich usuwania.Na przykład mogę mieć nazwę pliku jako
-ramesh.txt
i próbuję go usunąć jak poniżej.Muszę usunąć plik, ponieważ
Więcej szczegółów można również znaleźć w tej odpowiedzi .
Podsumowując, problemem nie jest użycie znaków specjalnych w nazwach plików, ale sposób ich obsługi.
źródło
-
ale mówiąc precyzyjnie: 1) na pewno nie potrzebujesz cudzysłowów wokół tej nazwy pliku, 2) zamiast specjalnego--
argumentu możesz zrobić dokładnie to, corm
sugeruje: arm ./-ramesh.txt
więc nie musisz tego robić dokładnie tak, jak sugerujesz.Twoje badania są prawie prawidłowe. W nazwach plików można używać znaków specjalnych, ale nie jest to wskazane, ponieważ znaki te mają specjalne znaczenie. Konwencje nazewnictwa plików w systemie Linux opisują również inne ograniczenia nazw plików, takie jak „Nazwy plików nigdy nie powinny zaczynać się od myślnika”.
Prosty przykład wykonywania operacji w wierszu polecenia za pomocą znaków specjalnych w nazwach plików.
Jako osobistą notatkę wolę unikać znaków specjalnych w nazwach plików, ponieważ wymagają one szczególnej uwagi, gdy pliki te są wykorzystywane do dowolnego przetwarzania. W ten sposób eliminuje się obawy związane ze stosowaniem znaków specjalnych w procesie rozwoju.
źródło
-
,_
i.
(kropka) w nazwach plików?