Dateiname
Der Dateiname identifiziert eine Datei auf einem Datenträger oder bei einer Datenübertragung. Meist wird eine Datei zusätzlich durch einen Verzeichnisnamen charakterisiert. Erst diese Kombination zu einem vollständigen Pfadnamen ist normalerweise eindeutig.
Der Dateiname kann - abhängig vom jeweiligen Betriebssystem - aus mehreren Teilen bestehen. Die einzelnen Teile sind durch bestimmte Zeichen getrennt, die normalerweise nicht Teil des Dateinamens sein können. Einige Betriebssysteme machen die Behandlung einer Datei von einer bestimmten Dateinamenserweiterung abhängig, andere erkennen das Dateiformat anhand des Inhalts (beispielsweise anhand einer sogenannten magischen Zahl). Auch auf diesen Systemen werden die Dateien aber oft mit Dateinamenserweiterungen versehen, da dies den Datenaustausch vereinfacht.
Die maximale Länge eines Dateinamens wird sowohl durch das Betriebssystem als auch durch das Dateisystem des Datenträgers bestimmt. So können etwa auf einer CD-ROM bei Verwendung des Joliet-Dateisystems höchstens 64 Zeichen genutzt werden. Eine indirekte Begrenzung kann zudem durch eine maximale Länge von Pfadnamen im Betriebssystem entstehen.
Ein wichtiger Unterschied zwischen Microsoft Windows und Linux besteht darin, dass Microsoft Windows bei Dateinamen nicht zwischen Gross- und Kleinschreibung unterscheiden kann, während Unix dies tut (beispielsweise kann es dort im selben Verzeichnis unterschiedliche Dateien mit den Namen "AAA.txt", "Aaa.txt", "aaa.txt" usw. geben).
Dateisysteme
Dateisystem | Typische Anwendung | Max. Anzahl Zeichen eines Dateinamens | Zeichensatz |
---|---|---|---|
FAT mit VFAT (Windows) | Festplatte, USB-Stick | 255 | Unicode |
FAT ohne VFAT (DOS) | Festplatte, Speicherkarte (Foto) | 8+3 | OEM (meist Codepage 437) |
NTFS | Festplatte | 256 (255 bei Verwendung langer Unicodepfade) | Unicode (UTF-16) |
EXT3 | Festplatte | 255 (bei Verwendung von UTF-8-Codierung und Benutzung von Nicht-ASCII-Zeichen stehen 255 Byte, dementsprechend aber weniger als 255 Zeichen zur Verfügung) | Unicode (nicht genormt, meist UTF-8) |
HFS plus | Festplatte | 255 | Unicode (UTF-16) |
Amiga Fast File System | Festplatte | 31 | ISO 8859 |
ISO 9660-Level 1 | CD, DVD | 8+3 | |
ISO 9660-Level 1 (Joliet) | CD, DVD | 64 | Unicode |
ISO 9660-Level 2 | CD, DVD | 31 | ASCII |
ISO 9660:1999 | CD, DVD | 179-221 je nach sonstigen Attributen | ASCII, unspezifiziert |
UDF | CD, DVD | 255 | Unicode |
Betriebssysteme
Unix
Unix und Unix-ähnliche Betriebssysteme (z. B. Linux, Solaris) betrachten Dateinamen als Ganzes. Eine Datei kann mehrere Namen haben und sich in mehreren Verzeichnissen befinden ("hard links" oder "bind mounts"). Für den Namen sind alle Zeichen ausser dem Schrägstrich "/" und dem Nullzeichen erlaubt. Frühe Versionen hatten 1 bis 14 Zeichen lange Dateinamen. Die BSD-Varianten führten bis zu 255 Zeichen lange Namen ein.
Ein relativer Dateipfad kann aus mehreren Segmenten bestehen und beginnt mit einem Segment. Jedes Segment unterliegt den Regeln des Dateinamens, kann also 14 bzw. 255 Zeichen lang sein. Die Segmente der Dateipfade werden durch das Zeichen "/" getrennt. Das letzte Segment kennzeichnet die eigentliche Datei. Die vorhergehenden Segmente sind entweder Verzeichnisnamen oder Dateiverknüpfungen (englisch "symbolic link") auf Verzeichnisnamen. Ein relativer Dateipfad geht vom aktuellen Arbeitsverzeichnis aus, das jeder Prozess individuell setzen kann. Ein absoluter Dateipfad beginnt hingegen geht vom Wurzelverzeichnis aus, beginnt also bereits mit "/" und ist unabhängig vom aktuellen Arbeitsverzeichnis.
Beim Zugriff wird zwischen Gross- und Kleinschreibung unterschieden. Beispiele:
/home/User/dokumente/Dokument.TXT /home/user/Dokumente/brief.txt /home/user/Dokumente/Brief.txt /usr/bin/texteditor
Der Dateiname "." (Punkt) bezeichnet das aktuelle Arbeitsverzeichnis, der Name ".." verweist auf das übergeordnete Verzeichnis.
Auch das Leerzeichen, der Zeilentrenner oder die sogenannten Wildcards "*" und "?" können Teil eines Pfadnamens sein. Solche Zeichen bringen allerdings manchmal später Probleme mit sich, da zum Beispiel schlecht programmierte Skripte damit nicht umgehen können. Ausserdem kann es Probleme mit Dateinamen geben, die Zeichen enthalten, welche im aktuell verwendeten Zeichensatz eines Programms nicht vorkommen (etwa japanische Zeichen auf einem amerikanisch eingerichteten System). Die nicht darstellbaren Zeichen werden dann oft als Fragezeichen oder kleine Kästchen angezeigt, was den Zugriff auf die Daten sehr schwierig macht. Diese Dateien können oft nur bearbeitet werden, nachdem sie auf einer niedrigen Dateisystem-Abstraktionsebene umbenannt wurden (zum Beispiel durch Angabe der sogenannten inode statt des Dateinamens mit den Shell-Befehlen "ls -i" und "find . -inum [...] -exec mv {} [...] \;").
Ein Unix-System benötigt keine besonderen Dateinamenserweiterungen wie ".EXE" oder ".CMD". Es hat sich allerdings eingebürgert, Dateien eines bestimmten Types, wie in anderen Betriebssystemen, ebenfalls mit einem Punkt und einer entsprechenden Erweiterung zu versehen, um die Übersichtlichkeit zu erhöhen. So wird etwa die Endung ".c" für C-Quellprogramme verwendet. Ausführbare Dateien, also Programme und Skripte, erhalten üblicherweise keine Endung. Dateitypen können ansonsten mit dem einfachen Shell-Befehl file, unabhängig von einer allfällig vorhandenen Dateinamenserweiterung, ermittelt werden.
Dateien oder Verzeichnisse, deren Namen mit einem Punkt beginnen, werden üblicherweise als "versteckte" Dateien behandelt und nur angezeigt, wenn der Benutzer dies explizit angibt (zum Beispiel mit "ls -a"). Ähnliches gilt für Verzeichnispfade.
Ersetzen von leerzeichen durch Unterstriche
Im aktuellen Verzeichnis werden bei allen Dateinamen vorkommende Leerzeichen durch Unterstriche ersetzt.
$ rename "s/ /_/g" *
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | Dateinamewbm | Enzyklopädischer Artikel |