GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux/Windows/Unix/... Dateinamen:Welche Zeichen sind erlaubt? Welche sind nicht entkommen?

Lösung 1:

Die einzigen Zeichen, die in einem Dateinamen in *nix nicht erlaubt sind, sind NUL und / . Unter Windows nur NUL , : , und \ sind wirklich nicht erlaubt, aber viele Apps schränken das weiter ein und verhindern auch ? , * , + , und % .

Zu keinem Zeitpunkt brauchen irgendwelche Zeichen in einem Dateinamen außer wie erforderlich maskiert werden, damit sie nicht von der Shell interpretiert werden.

Lösung 2:

Es gibt eine Diskussion über Zeichen in Dateinamen im Wikipedia-Artikel über Dateinamen.

Vielleicht finden Sie diesen Essay informativ:Fixing Unix/Linux/POSIX Filenames.

Dieser Artikel vergleicht OS X und Windows XP:X vs. XP:Forbidden Characters in Filenames (PDF, siehe S. ca. 64-66).

Dinge, die nicht in Dateinamen stehen sollten für 1.000 $ Alex

Ich weiß nicht, welche Zeichen un sein müssen -escaped, aber unter Linux ist es wahrscheinlich keine gute Idee, die Zeichen zu maskieren, die eine besondere Bedeutung haben können, wie "n" (newline), "t" (tab) und andere, aber das ist im Allgemeinen kein Problem bei Dateioperationen. Vielleicht meinst du eher "entkommen" als "nicht entkommen". Die gebräuchlichsten sind diejenigen, die die Shell interpretiert, wie Leerzeichen, ">", "<" usw. Siehe einige der Artikel, die ich verlinkt habe, um diese zu diskutieren.

Lösung 3:

Wenn Sie eine Datei unter Windows mit Explorer erstellen und dabei eines der folgenden Zeichen verwenden, wird es beschweren, dass die Zeichen nicht erlaubt sind:

\ / : * ? " < > |

Eine gute Referenz ist hier:

Dateien, Pfade und Namespaces benennen
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

Microsoft sagt weiter:

"... auf Windows-basierten Desktop-Plattformen können ungültige Pfadzeichen ASCII/Unicode-Zeichen 1 bis 31 sowie Anführungszeichen ("), kleiner als (<), größer als (>), Pipe (|), Rücktaste enthalten (\b), Null (\0) und Tabulator (\t)."

http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx

Lösung 4:

Auf Linux und anderen POSIX-kompatiblen Systemen ist "/" als Verzeichnistrennzeichen reserviert, und "\0" (das NULL-Zeichen) bezeichnet das Ende der Zeichenfolge. Alles andere ist erlaubt.


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Wie portabel sind /dev/stdin, /dev/stdout und /dev/stderr?

  3. Warum sind harte Links zu Verzeichnissen in Unix/Linux nicht erlaubt?

  4. Linux – Zusammenführen von /usr/bin und /usr/sbin in /bin (gnu/linux)?

  5. Was sind /dev/zero- und /dev/null-Dateien in Linux

So konvertieren Sie eine Windows-Datei in eine UNIX-Datei

AWK-Befehl unter Linux/Unix

/dev/null unter Linux

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Zulässige Zeichen in Namen von Linux-Umgebungsvariablen

Wie erstelle ich in meiner Datei /etc/hosts/ unter Linux/OSX eine Wildcard-Subdomain?