Welche technischen Gründe sprechen dafür, in Dateinamen keine Leerzeichen zu verwenden?

Welche technischen Gründe sprechen dafür, in Dateinamen keine Leerzeichen zu verwenden?

Jemand, den ich kenne, hat heute seine Verärgerung über diejenigen von uns zum Ausdruck gebracht, die dazu neigen, keine Leerzeichen in unseren Dateinamen zu verwenden, NamingThingsLikeThis.txtobwohl die meisten modernen Betriebssysteme Leerzeichen in Dateinamen unterstützen.

Gibt estechnische Gründedass es immer noch üblich ist, Dateinamen ohne (passende) Leerzeichen zu sehen? Wenn ja, was sind die technischen Gründe dafür, dass Leerzeichen in Dateinamen vermieden oder nicht empfohlen werden, und unter welchen Umständen sind sie relevant?

Der offensichtlichste Grund, der mir einfällt und warum ich es normalerweise vermeide, sind die zusätzlichen Anführungszeichen, die bei der Verarbeitung solcher Dateien in der Befehlszeile erforderlich sind. Gibt es noch andere wichtige technische Gründe?

Antwort1

Leerzeichen in Dateinamen können in vielen Kontexten auf der Befehlszeile und in Skripten ein regelrechtes Ärgernis sein, da Sie darauf achten müssen, dass sie ordnungsgemäß maskiert werden, damit sie nicht wie Trennzeichen für die von Ihnen ausgeführten Befehle aussehen.

Es ist einfach sicherer, sie dort nicht zu haben, selbst wenn Sie sicher sind, dass die Datei/das Verzeichnis/was auch immer niemals in einem solchen Kontext verwendet wird.

Das und alte Gewohnheiten lassen sich nur schwer ablegen.

Antwort2

Zusätzlich zu den anderen Antworten zur Befehlszeile und alten Gewohnheiten gibt es auch viele Netzwerkprotokolle, die beim Umgang mit Dateinamen, die Leerzeichen enthalten, besondere Sorgfalt erfordern.

(Wenn Sie schon einmal versucht haben, „Product List.pdf“ von einer Website herunterzuladen und am Ende eine Datei mit dem bloßen Namen „Product“ erhalten haben, dann sind Sie in die Falle getappt, weil der Programmierer am anderen Ende die Anführungszeichenregeln für den HTTP-Content-Disposition-Header nicht kannte oder nicht herausfinden konnte.)

Antwort3

Viele der Gründe sind historisch. Das heißt aber nicht, dass sie heute keinen Sinn mehr ergeben.

Probleme bei der Portabilität

Beim Benennen einer Datei müssen Sie möglicherweise auch berücksichtigen, wie andere (Datei-)Systeme diesen Dateinamen behandeln. Ein Zeichen in einem Dateinamen kann für Ihr System in Ordnung sein, für ein anderes System jedoch ein Problem darstellen.

Wenn also auch nur die geringste Möglichkeit besteht, dass Sie die Datei problemlos von einem älteren System aus aufrufen möchten, wählen Sie nursicherCharakter. Dazu kann das Booten in ein altes Wiederherstellungssystem gehören, das Sie noch haben, oder die Angst, dass neuere Windows-Versionen immer noch irgendwie auf MS-DOS basieren.

Länge

Ein Dateisystem kann die Länge einer Datei begrenzen. Dies war noch schwerwiegender, als MS-DOS auf8.3 DateinamenDurch das Weglassen von Leerzeichen konnten Sie also aussagekräftigere Zeichen in den Namen einfügen.

Auch einige andere Dateisysteme haben strenge Beschränkungen für die Länge ihrer Dateinamen definiert. Wikipedia hat eine Tabelle imArtikel über Dateisystemvergleichfür diejenigen, die die Einzelheiten erfahren möchten.

Reservierte Zeichen

MS-DOS definierte das Leerzeichen auch als reserviertes Zeichen. Dies liegt daran, dass das Leerzeichen verwendet wurde fürPolsterung im FATDarüber hinaus verfügte MS-DOS nicht über ein Escape-System in der Shell.

Kommandozeileninterpretation

Die meisten mir bekannten Kommandozeilen verwenden dasLeerzeichen als Parametertrennzeichen. Wenn Sie es versäumen, einen Dateinamen richtig zu maskieren, kann dies schwerwiegende Folgen haben, da Teile des Dateinamens als Parameter für die Anwendung interpretiert werden können, die Sie aufrufen möchten.

Betrachten Sie den Unterschied zwischen

rm foo bar

Und

rm "foo bar"

Der oben verlinkte WikiPedia-Artikel weist sogar auf Mehrdeutigkeiten hin, die dadurch entstehen, dass einem Befehl nicht richtig entkommen wird:

Mehrdeutigkeiten können entweder dadurch vermieden werden, dass eingebettete Leerzeichen in Datei- und Verzeichnisnamen von vornherein verboten werden (zum Beispiel indem sie durch Unterstriche '_' ersetzt werden), oder, falls vom Kommandozeileninterpreter und den Programmen, die diese Parameter als Argumente verwenden, unterstützt, indem ein Name mit eingebetteten Leerzeichen in Anführungszeichen gesetzt wird oder indem vor dem Leerzeichen ein Escape-Zeichen verwendet wird, normalerweise ein Backslash ('\'). Zum Beispiel

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

ist mehrdeutig (ist "Programmname" Teil des Programmnamens oder zwei Parameter?); jedoch

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

und Langer\ Pfad/Langer\ Programm\ Name Parameter\ ein Parameter\ zwei ...

sind nicht mehrdeutig.

Uniform Resource Locators (URL)

Wenn Sie versuchen, den Speicherort einer Datei mithilfe einer URL zu beschreiben, müssen Leerzeichen maskiert werden.

Zeichen können aus verschiedenen Gründen unsicher sein. Das Leerzeichen ist unsicher, weil beim Transkribieren oder Setzen von URLs oder bei der Bearbeitung in Textverarbeitungsprogrammen wichtige Leerzeichen verloren gehen und wichtige Leerzeichen eingefügt werden können.

Quelle:RFC1738

Daher muss ein Leerzeichen durch ein ersetzt werden %20. Dies macht den Dateinamenteil der URL weniger lesbar und führt daher dazu, dass die Leute ihn von vornherein vermeiden.

Antwort4

Manchmal können Leerzeichen ein Problem darstellen, wenn Sie in der Befehlszeile arbeiten, oder wenn Sie ältere Betriebssysteme verwenden, oder wenn Sie Programme schreiben, die auf anderen Betriebssystemen kompiliert werden, oder wenn ... Es gibt viele Gründe, die problematisch sein können, und ich denke nicht, dass es wirklich so ein Problem ist, die Datei so zu schreiben:Datei ohne Leerzeichen.txtoderDatei_ohne_Leerzeichen.txt. Ich bevorzuge den Bindestrich, da der Unterstrich beispielsweise bei unterstrichener Schrift manchmal unsichtbar werden kann.

Aber meistens ist es eine Frage der Gewohnheit aus dem Alter. Und ich glaube nicht, dass es genug gibtProfiGründe zum Aufgeben.


Eine zusätzliche Anmerkung, die vielleicht nicht damit zusammenhängt, die ich aber trotzdem hier einfügen werde. Leute, die ihre Dateien mit Leerzeichen benennen, denken normalerweise nicht viel darüber nach; diejenigen, die es nicht tun, wissen oft ein wenig darüber, warum es gut ist, sie in Dateinamen zu vermeiden.
Und wir sind uns alle einig, dass es nichts Schlimmeres gibt als eine Datei mit dem Namen „Sehr geehrte Damen und Herren, ich schreibe Ihnen diesen Brief, um Sie über yo.doc zu informieren“.

Nicht nur Leerzeichen – auch die Dateilänge zählt, und meiner Meinung nach sollte sie nicht länger als, sagen wir, 30 Zeichen sein. Denn lange Dateinamen mit Leerzeichen darin sind auch ein Segen beim Brennen von CDs, DVDs und dergleichen, die unter älteren Betriebssystemen und zwischen Win- und *nix-Plattformen gelesen werden müssen.

verwandte Informationen