Jakie są techniczne powody, aby nie używać znaków spacji w nazwach plików?

75

Ktoś, kogo znam, wyraził dzisiaj irytację wobec tych z nas, którzy zwykle nie używają spacji w naszych nazwach plików, np. NamingThingsLikeThis.txt- pomimo większości współczesnych systemów operacyjnych obsługujących spacje w nazwach plików.

Czy istnieją techniczne powody , dla których nadal często obserwuje się nazwy plików bez (odpowiednich) spacji? Jeśli tak, to jakie są te techniczne przyczyny, dla których spacje w nazwach plików są omijane lub odradzane, i w jakich okolicznościach są one istotne?

Najbardziej oczywistym powodem, dla którego mogłem wymyślić i dlaczego zwykle tego unikam, są dodatkowe cudzysłowy wymagane w wierszu poleceń podczas obsługi takich plików. Czy są jakieś inne ważne przyczyny techniczne?

Chris W. Rea
źródło
Jak powiedziałeś, łatwiej jest sobie z nimi poradzić w linii poleceń. A jeśli chodzi o programowanie, to nie jestem pewien, czy można w ogóle używać spacji w nazwach plików.
Alvin Row

Odpowiedzi:

65

Znaki białych znaków w nazwach plików mogą być prawdziwym królewskim bólem w przysłowiowym w wielu kontekstach wiersza poleceń oraz w skryptach, w których należy uważać, aby upewnić się, że są one odpowiednio chronione, więc nie wyglądaj jak separatory od poleceń, którymi jesteś bieganie.

Bezpieczniej jest ich nie mieć, nawet jeśli masz pewność, że plik / dir / what-ever nigdy nie będzie używany w takim kontekście.

To i stare nawyki umierają ciężko.

David Spillett
źródło
Są również właściwym królewskim bólem, z którym trzeba sobie poradzić, wtedy musisz komponować ścieżki i modyfikować je. Upewnienie się, że komponenty nie są cytowane i nie można ich modyfikować przed ponownym ucieczką / ponownym cytowaniem, szczególnie jeśli elementy są wysyłane do innych bitów kodu, które mają zostać zmienione.
afrazier 16.03.11
2
Jeśli uważasz, że spacje są złe, spróbuj poradzić sobie z plikami z newline ( '\n') w ich nazwach. (Systemy uniksowe faktycznie na to pozwalają; ogólnie Windows, a przynajmniej utrudnia.)
Keith Thompson
30

Oprócz innych odpowiedzi na temat wiersza poleceń i starych nawyków istnieje również wiele protokołów sieciowych, które wymagają szczególnej uwagi w przypadku nazw plików zawierających spacje.

(Jeśli kiedykolwiek próbowałeś pobrać „Product List.pdf” ze strony internetowej, a skończył się plikiem o nazwie „Produkt”, ugryzł cię to, ponieważ programista na drugim końcu nie wiedział lub nie mógł wymyślić reguły cytowania dla nagłówka http Content-Disposition.)

Stobor
źródło
11
+1. HTTP na początek. Spacje w adresach URL (dla dowolnego protokołu, nie tylko HTTP) powinny być oznaczone jako% 20 lub +. Zamieszanie może powstać, gdy nie są one zakodowane tak, jak powinny. W przypadku stron internetowych istnieje wizualny powód, aby unikać zarówno spacji, jak i znaku podkreślenia („_”) powszechnie używanego do ich zastępowania - oba mogą wyglądać tak samo w podkreślonym linku, więc ktoś kopiujący link ręcznie lub czytając go komuś, może uzyskać To błędne.
David Spillett,
5
Jedną z najbardziej irytujących rzeczy dotyczących spacji, które muszą być zakodowane w adresach URL, jest tendencja niektórych programów do utrzymywania zakodowanych spacji ...
SamB
Czy to jest prawdziwe? W 2018 roku tak się dzieje?
Chris Calo
@ChrisCalo Możesz zauważyć, że ta odpowiedź została udzielona w 2009 r., A nie w 2018 r. Ale tak, dzieje się tak jeszcze w 2018 r. Być może rzadziej, teraz, gdy większość początkujących programistów używa ram do tworzenia witryn internetowych, a nie robi wszystkiego od zera, ale nadal jest problem.
Stobor
28

Wiele powodów jest historycznych. To nie znaczy, że nie mają dziś sensu.

Problemy z przenośnością

Podczas nazywania pliku konieczne może być również rozważenie, w jaki sposób inne systemy (plikowe) będą traktować tę nazwę pliku. Znak w nazwie pliku może być odpowiedni dla twojego systemu, ale może być problemem dla innego systemu.

Tak długo, jak istnieje najmniejsza możliwość, że możesz chcieć mieć łatwy dostęp do pliku ze starszego systemu, wybierasz tylko bezpieczny znak. Może to obejmować rozruch ze starego systemu przywracania systemu lub obawy, że najnowsze wersje systemu Windows nadal są w jakiś sposób oparte na systemie MS-DOS.

Długość

System plików może ograniczać długość pliku. Było to jeszcze poważniejsze w czasach, gdy MS-DOS był ograniczony do 8,3 nazw plików . Pominięcie spacji pozwoliło więc na umieszczenie w nazwie bardziej znaczących znaków.

Kilka innych systemów plików również zdefiniowało ścisłe ograniczenia długości ich nazw. Wikipedia zawiera tabelę w artykule na temat porównania systemów plików dla tych, którzy chcą szczegółów.

Zarezerwowane postacie

MS-DOS zdefiniował również znak spacji jako znak zastrzeżony. Wynika to z faktu, że znak spacji został użyty do wypełnienia w FAT . Ponadto MS-DOS nie zapewniał ucieczki systemu w powłoce.

Interpretacja wiersza poleceń

W większości wierszy poleceń zdaję sobie sprawę ze stosowania znaku spacji jako ogranicznika parametru . Zaniedbanie prawidłowego zmiany nazwy pliku może mieć poważne konsekwencje, ponieważ części nazwy pliku można interpretować jako parametry aplikacji, do której chcesz zadzwonić.

Rozważ różnicę między

rm foo bar

i

rm "foo bar"

Artykuł WikiPedia, do którego prowadzi link powyżej, wskazuje nawet na dwuznaczność wprowadzoną przez brak, aby poprawnie uciec od polecenia:

Dwuznaczności można zapobiec, zakazując przede wszystkim osadzania spacji w nazwach plików i katalogów (na przykład, zastępując je znakami podkreślenia „_”) lub, jeśli jest to obsługiwane przez interpreter wiersza poleceń i programy przyjmujące te parametry jako argumenty, umieszczając nazwę z osadzonymi spacjami między znakami cudzysłowu lub używając znaku zmiany znaczenia przed spacją, zwykle odwrotnym ukośnikiem („\”). Na przykład

Long path/Long program name Parameter one Parameter two ...

jest niejednoznaczny (czy „nazwa programu” jest częścią nazwy programu, czy dwa parametry?); jednak

Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...

i Long \ ścieżka / Long \ program \ name Parametr \ jeden Parametr \ dwa ...

nie są dwuznaczne.

Jednolite lokalizatory zasobów (URL)

Przy próbie opisania położenia pliku za pomocą adresu URL należy wstawić spacje.

Znaki mogą być niebezpieczne z wielu powodów. Znak spacji jest niebezpieczny, ponieważ znaczące spacje mogą zniknąć, a nieznaczne spacje mogą zostać wprowadzone, gdy adresy URL są transkrybowane, składane lub poddawane obróbce programów do edycji tekstu.

Źródło: RFC1738

Dlatego %20zamiast tego należy zastąpić spację . To sprawia, że ​​nazwa pliku jest częścią adresu URL mniej czytelna, a tym samym ludzie przede wszystkim go unikają.

Der Hochstapler
źródło
25

Miejsca są kodowane lub konwertowane na %20nazwy plików w Internecie, co może utrudnić zarządzanie zasobami witryny.

Posiadanie Image 1.pngi Image%201.pngjest mylące. Image001.pngZamiast tego jest łatwiejszy w użyciu .

To naprawdę należy do tej samej kategorii co sekwencje specjalne dla wiersza poleceń.

użytkownik7012
źródło
5

Czasami spacje mogą stanowić problem podczas pracy w wierszu polecenia, podczas korzystania ze starszych systemów operacyjnych, lub podczas pisania programów, które będą kompilowane w różnych systemach operacyjnych, lub gdy ... istnieje wiele powodów, które mogą stanowić problem, a ja nie Naprawdę wydaje mi się, że zapisanie pliku to taki problem: file-without-blanks.txt lub file_without_blanks.txt . Wolę dask, ponieważ podkreślenie może czasem stać się niewidoczne, gdy mamy do czynienia np. Z podkreśloną czcionką.

Ale przede wszystkim jest to kwestia przyzwyczajenia od starości. Których nie czuję się tam wystarczająco dużo pro powody do opamiętania.


Dodatkowa uwaga, być może niezwiązana, ale i tak ją tu zamieszczę. Ludzie, którzy nazywają swoje pliki spacjami, zwykle nie myślą o tym dużo; ci, którzy często nie wiedzą, dlaczego warto unikać ich w nazwach plików.
I wszyscy możemy się zgodzić, że nie ma nic gorszego niż plik o nazwie „Szanowny Panie lub Pani, piszę do was ten list, aby poinformować was o yo.doc”.

Nie tylko spacje - długość pliku też się liczy, a IMHO nie powinno być dłuższe niż, powiedzmy, 30 znaków. Długie nazwy plików ze spacjami są również błogosławieństwem podczas nagrywania płyt CD, DVD i takich, które należy odczytać w starszych systemach operacyjnych oraz pomiędzy plaformami Win i * nix.

Wieża
źródło
2
Użytkownicy leniwych słów ...
SamB