Zusammenfassung:
- Windows: alles außer ASCII-Steuerzeichen und
\/:*?"<>|
- Linux, OS-X: alles außer null oder
/
Auf allen Plattformen ist es am besten, nicht druckbare Zeichen wie die ASCII-Steuerzeichen zu vermeiden.
Windows
In Windows erlaubt der Windows Explorer keine Steuerzeichen oder \/:*?"<>|
Sie können Leerzeichen verwenden. Wenn Sie Leerzeichen verwenden, müssen Sie den Dateinamen häufig in Anführungszeichen setzen, wenn Sie ihn über die Befehlszeile eingeben (GUI-Apps sind meines Wissens jedoch nicht betroffen). Windows-Dateisysteme wie NTFS speichern anscheinend die Kodierung mit dem Dateinamen, aber UTF-16 ist Standard.
Bei einigen Teilen von Windows wird zwischen Groß- und Kleinschreibung unterschieden, bei anderen Teilen wird zwischen Groß- und Kleinschreibung nicht unterschieden. Es ist einfach, unterschiedliche Dateinamen wie "Ab" und "ab" in einem Windows NTFS-Dateisystem zu erstellen. Diese Namen beziehen sich auf separate Dateien, die unterschiedliche Inhalte enthalten. Obwohl die Windows-Eingabeaufforderung beide Dateien mit glücklich auflistet dir
, können Sie mit Befehlen wie nicht einfach auf eine von ihnen zugreifen oder sie bearbeiten type
. Siehe unten.
Linux, OS-X
Unter Linux und OS-X /
ist meines Erachtens nur der druckbare ASCII-Satz verboten. Einige Zeichen (z. B. Shell-Metazeichen *?!
) verursachen Probleme in der Befehlszeile und erfordern, dass der Dateiname in Anführungszeichen gesetzt oder mit Escapezeichen versehen wird.
Linux-Dateisysteme wie ext2, ext3 sind zeichenunabhängig (ich denke, sie behandeln es nur mehr oder weniger als Byte-Stream - nur Nullen und /
sind verboten). Dies bedeutet, dass Sie Dateinamen in UTF-8-Codierung speichern können. Ich glaube, es liegt an der Shell oder einer anderen Anwendung, zu wissen, welche Codierung verwendet werden muss, um den Dateinamen ordnungsgemäß für die Anzeige oder Verarbeitung zu konvertieren.
Fazit
Sie könnten also sicher so etwas verwenden ✣
(wenn es nicht so schwer zu tippen wäre)
Groß- / Kleinschreibung in Windows
C> dir /B
Ab
aB
аB
C> type Ab
b
b
C> type aB
b
b
C> type аB
unicode homograph
Beachten Sie, dass wir den Inhalt der zweiten Datei nicht eingeben können. Der Windows- type
Befehl gibt stattdessen nur den Inhalt von Ab zurück. Die dritte Datei würde sich auch unter Linux von aB unterscheiden.
(Windows 10 NTFS).