Die kurze Antwort
- Windows lässt die folgenden Zeichen nicht zu:
<>:"/\|?*
( Quelle )
- Weitere Zeichen, von denen abgeraten wird, sind: Leerzeichen
und Punkt .
( Quelle )
- Befehlszeilentools sind schwieriger zu verwenden, wenn Sie Leerzeichen in Namen haben (schwieriger, nicht unmöglich)
- Punkte werden in RegEx verwendet (z. B. wenn Sie verwenden möchten
grep
). Ein führender Punkt verbirgt eine Datei unter Linux. In Windows werden Punkte in der Dateierweiterung verwendet, die für die Dateityperkennung verwendet wird.
- Windows wird auch nicht zulassen , dass Dateinamen
CON
, PRN
, AUX
, CLOCK$
, NUL
COM1
, COM2
, COM3
, COM4
, COM5
, COM6
, COM7
, COM8
, COM9
LPT1
, LPT2
, LPT3
, LPT4
, LPT5
, LPT6
, LPT7
, LPT8
, und LPT9
. ( Quelle )
- Die einzigen Zeichen, die in Unix-Dateisystemen, die ich kenne, nicht zulässig sind, sind
/
und null (das Null-Byte \0
).
- Siehe auch: Dateisystembeschränkungen (Ich weiß nicht, mit welchem Windows Sie kompatibel sein möchten).
Die lange Antwort
Technischer Hintergrund: Dateisystem
Ubuntu nutzt das ext4
Dateisystem. Ein Dateisystem verfolgt, wo Dateien auf dem zugrunde liegenden Speicher (Festplatte oder SSD oder was auch immer) gespeichert sind, Berechtigungen in Form von Eigentümer / Gruppe / Andere können lesen / schreiben / ausführen, Zeitstempel, Name.
Das Dateisystem strukturiert den verfügbaren Speicher. Der erste Block heißt "Superblock". Dieser Block wird zum Mounten eines Dateisystems verwendet. Soweit ich weiß, teilt jedes moderne Dateisystem seinen Speicherplatz in Blöcke. Ich denke (und ich bin mir nicht sicher), dass die meisten Dateisysteme auch eine feste Blockgröße haben, obwohl die Blockgröße konfiguriert werden kann, wenn das Dateisystem erstellt wird. ext4 (und auch ext2 und ext3) verwenden sogenannte "Inodes" für Dateien und Verzeichnisse. Diese Inodes enthalten Zeiger auf andere Blöcke (dies können auch Inodes oder "Datenblöcke" sein). Und der "erste" Inode einer Datei enthält alle Informationen, die ich oben erwähnt habe.
Eine andere Information ist der "Typ" der Datei. "Typ" kann sein:
- reguläre Datei
- Verzeichnis
- Gerätedatei (Block- oder Zeichengerät)
- ...
Tatsächlich können Sie Verzeichnisse auch mit einem Editor öffnen:
vim /home
Da das Verzeichnis nicht den vollständigen Pfad enthält, sondern nur die Namen des Inhalts, sehe ich keinen Grund, warum Dateien keine enthalten können /
. Ich denke, es könnte praktisch sein. (Weiß jemand warum /
das nicht erlaubt ist?)
Bei anderen Dateisystemen ist das jedoch anders. Die FAT16 und FAT32 verwendeten eine sogenannte "Dateizuordnungstabelle". Dies bedeutet, dass es eine Tabelle gibt, die alle Dateien enthält, die in Ihrer Datei gespeichert sind, bei welchem "Cluster" sie beginnen und bei welchem Cluster sie als einfach verknüpfte Liste enden.
Das Wichtige, was ich Ihnen sagen wollte, ist, dass nicht zugelassene Zeichen auch vom Dateisystem abhängen können.
Technischer Hintergrund: Dateitypen
- Windows verwendet Dateierweiterungen, um Dateitypen zu erkennen
- Linux verwendet "Magic Bytes", um Dateitypen zu erkennen. Magic Bytes sind Teil des Inhalts der Datei und daher völlig unabhängig vom Namen. Diese Bytes sind Teil der Spezifikation des Dateityps (siehe png-Spezifikation als Beispiel). Es werden auch die Dateinamenerweiterungen für Dateien mit denselben magischen Bytes wie
.txt
oder .html
(beide sind Textdateien) verwendet.
verbunden