Dateiname: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:


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).
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 ==


{| class=wiki
{| class=wiki
! colspan=4 | Dateisysteme
|-
! Dateisystem !! Typische Anwendung !! Max. Anzahl Zeichen eines Dateinamens !! [[Zeichensatz]]
! Dateisystem !! Typische Anwendung !! Max. Anzahl Zeichen eines Dateinamens !! [[Zeichensatz]]
|-
|-
Zeile 18: Zeile 18:
| [[NTFS]] || Festplatte || 256 (255 bei Verwendung langer Unicodepfade) || [[Unicode]] (UTF-16)
| [[NTFS]] || Festplatte || 256 (255 bei Verwendung langer Unicodepfade) || [[Unicode]] (UTF-16)
|-
|-
| [[EXT3]] || Festplatte || 255 || [[Unicode]]
| [[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)
| HFS plus || Festplatte || 255 || [[Unicode]] (UTF-16)
Zeile 34: Zeile 34:
| [[UDF]] || CD, DVD || 255 || [[Unicode]]
| [[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.
$ <b>rename "s/ /_/g" *</b>


== Weblinks ==
== Weblinks ==

Aktuelle Version vom 8. Dezember 2019, 19:18 Uhr

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