Dateiname

Screenshot von a Fenster Befehlsschale, die Dateinamen in einem Verzeichnis anzeigen
Dateiname -Liste mit langen Dateinamen, die Komma und Space -Zeichen enthalten, wie sie in einer Softwareanzeige angezeigt werden.

A Dateiname oder Dateiname ist ein Name, der verwendet wird, um ein einzigartiger Identifizieren zu identifizieren Computerdatei in einem Verzeichnisaufbau. Verschiedene Dateisysteme stellen unterschiedliche Einschränkungen der Dateinamenlängen auf.

Ein Dateiname kann (abhängig vom Dateisystem) enthalten:

  • Name - Grundname der Datei
  • Verlängerung (Format oder Verlängerung) - Zeigt den Inhalt der Datei an (z. .txt, .exe, .html, .Com, .C ~ etc.)

Die Komponenten, die zur Identifizierung einer Datei durch Dienstprogramme und Anwendungen erforderlich sind, variieren in den Betriebssystemen sowie die Syntax und das Format für einen gültigen Dateinamen.

Dateinamen können beliebige Bytes enthalten, die der Benutzer auswählt. Dies kann Dinge wie eine Revision oder Generation der Datei wie z. B. umfassen Computercode, eine numerische Sequenzzahl (weit verbreitet von Digitalkameras durch die DCF Standard), ein Datum und Uhrzeit (weit verbreitet von Smartphone -Kamera Software und für Screenshots), und/oder ein Kommentar wie den Namen eines Themas oder eines Ortes oder eines anderen Textes, um die Durchsuchung der Dateien zu erleichtern. Tatsächlich können selbst unprintbare Charaktere, einschließlich Bell, 0x00, Rückkehr und Linefeed Teil eines Dateinamens sein, obwohl die meisten Dienstprogramme sie nicht gut behandeln.

Einige Personen verwenden den Begriff Dateinamen, wenn sie sich auf eine vollständige Spezifikation von Geräten, Unterverzeichnissen und Dateinamen wie die Windows beziehen C: \ Programmdateien \ Microsoft Games \ Schach \ chess.exe. Der Dateiname in diesem Fall ist Chess.exe. Einige Dienstprogramme verfügen über Einstellungen, um die Erweiterung wie bei MS Windows Explorer zu unterdrücken.

Geschichte

Früh persönliche Computer Verwendung der CP/m Betriebssystem mit dem Dateizuordnungstabelle (Fett) Dateisystem, Dateinamen waren immer 11 Zeichen. Dies wurde als die bezeichnet 8.3 Dateiname mit maximal 8 Byte -Namen und maximal eine 3 -Byte -Erweiterung. Dienstprogramme und Anwendungen ermöglichten es den Benutzern, Dateinamen ohne Ablaufräume anzugeben und einen Punkt vor der Erweiterung einzuschließen. Der Punkt wurde im Verzeichnis nicht tatsächlich gespeichert. Mit nur 7 Bitzeichen erlaubten mehrere Dateiattribute [1]in den tatsächlichen Dateinamen unter Verwendung des hohen Ordnung-Bits aufgenommen werden. Diese Attribute enthalten readonly, archiv, versteckt und sys. Schließlich war dies zu restriktiv und die Anzahl der Charaktere erhöhte sich. Die Attributbits wurden in einen speziellen Block der Datei mit zusätzlichen Informationen verschoben. Dies führte zu Kompatibilitätsproblemen beim Verschieben von Dateien zwischen verschiedenen Dateisystemen.[2]

In den 1970er Jahren einige Mainframe und Minicomputer wobei Dateien auf dem System durch einen Benutzernamen oder eine Kontonummer identifiziert wurden.

Zum Beispiel auf Digital Equipment Corporation RSTS/E. und Tops-10 Betriebssysteme, Dateien wurden von identifiziert von

  • Optionaler Gerätename (ein oder zwei Zeichen), gefolgt von einer optionalen Einheitsnummer und einem Dickdarm ":". Wenn nicht anwesend, wurde angenommen, dass es SY ist:
  • Die Kontonummer, bestehend aus einer Klammer "[", zwei Zahlen, die durch ein Komma getrennt sind, und gefolgt von einer engen Klammer "]"]. Wenn es weggelassen wurde, wurde angenommen, dass es Ihnen gehört.
  • obligatorischer Dateiname, bestehend aus 1 bis 6 Zeichen (obere Fälle von Buchstaben oder Ziffern)
  • Optionale 3-Charakter-Erweiterung.

Auf der IBM OS/VS1, OS/390 und MVS Betriebssysteme, ein Dateiname bis zu 44 Zeichen, bestehend aus den oberen Fallbuchstaben, Ziffern und der Periode. Ein Dateiname muss mit einem Buchstaben oder einer Nummer beginnen, ein Zeitraum muss mindestens einmal jeweils 8 Zeichen erfolgen, zwei aufeinanderfolgende Perioden konnten nicht im Namen angezeigt werden und muss mit einem Buchstaben oder einer Ziffer enden. Nach der Konvention waren die Briefe und Zahlen vor der ersten Periode die Kontonummer des Eigentümers oder des Projekts, zu dem er gehörte, aber es bestand nicht verpflichtet, diese Konvention zu verwenden.

An der McGill University Musik/sp System, Dateinamen bestanden aus

  • Optionale Kontonummer, die ein bis vier Zeichen, gefolgt von einem Dickdarm. Wenn die Kontonummer fehlte, wurde angenommen, dass sie in Ihrem Konto befindet. Wenn dies jedoch nicht der Fall war, wurde angenommen, dass es sich um *com: pseudo-account befindet. Hier wurden alle als öffentlichen Dateien gekennzeichneten Dateien katalogisiert.
  • 1-17 Charakter-Dateiname, der obere Fallbuchstaben oder Ziffern sein kann, und der Zeitraum mit der Anforderung, die nicht mit einem Zeitraum beginnt oder endet oder zwei aufeinanderfolgende Perioden aufweist.

Der Univac Vs/9 Das Betriebssystem hatte Dateinamen, die aus bestand aus

  • Kontoname, bestehend aus einem Dollarzeichen "$", einem 1-7-Charakter (Buchstaben oder Ziffern) Benutzername und einer Periode ("."). Wenn es nicht vorhanden ist, wurde angenommen, dass es in Ihrem Konto ist, aber wenn dies nicht der Fall wäre, würde das Betriebssystem auf dem Konto des Systemmanagers $ $ TSOS suchen. Wenn Sie ein Dollar -Zeichen nur als Konto eingeben würden, würde dies angeben, dass sich die Datei auf dem $ tSOS -Konto befand wenn nicht Das erste 1-7-Zeichen des Dateinamens vor der ersten Periode entsprach einem tatsächlichen Kontonamen, dann wurde dieses Konto verwendet, z. Leer.baker ist eine Datei in Ihrem Konto, aber wenn nicht da ist, würde das System nach $ tsos.able.baker suchen. Wenn $ fung.baker angegeben wäre, würde die Datei $ tsos.able.baker verwendet wenn nicht $ Fähig war ein gültiges Konto, dann würde es nach einer Datei namens Baker in diesem Konto suchen.
  • Dateiname, 1-56 Zeichen (Buchstaben und Ziffern), die durch Perioden getrennt sind. Dateinamen können nicht mit einem Zeitraum beginnen oder enden, noch können zwei aufeinanderfolgende Perioden erscheinen.

1985,, RFC 959 offiziell definiert a Pfadname Um die Zeichenzeichenfolge zu sein, die von einem Benutzer in ein Dateisystem eingegeben werden muss, um eine Datei zu identifizieren.[3]

Um 1995,, VfatEine Erweiterung des MS-DOS-Fett-Dateisystemsystems wurde eingeführt in Windows 95 und Windows NT. Es erlaubte Mixed Case Unicode Lange Dateinamen (LFNS), zusätzlich zu klassischen "8.3" -Namen.

Referenzen: Absolutes gegen Relativ

Eine absolute Referenz enthält alle Verzeichnisse. In einigen Systemen wird eine Dateiname -Referenz, die nicht den vollständigen Verzeichnispfad enthält Aktuelles Arbeitsverzeichnis. Dies ist eine relative Referenz. Ein Vorteil der Verwendung einer relativen Referenz in Programmkonfigurationsdateien oder Skripten besteht darin, dass verschiedene Instanzen des Skripts oder Programms unterschiedliche Dateien verwenden können.

Dies macht einen absoluten oder relativen Weg aus einer Abfolge von Dateinamen.

Anzahl der Namen pro Datei

UNIX-ähnliche Dateisysteme ermöglichen es einer Datei, mehr als einen Namen zu haben. In herkömmlichen Dateisystemen im Unix-Stil sind die Namen harte Links zur Datei der Datei Inode oder gleichwertig. Windows unterstützt harte Links auf NTFS Dateisysteme und liefert den Befehl fsutil in Windows XP und MKLink in späteren Versionen zum Erstellen.[4][5] Harte Links unterscheiden sich von Windows Verknüpfungen, Klassischer Mac OS/Mac OS Aliase, oder Symbolische Links. Die Einführung von Lfns mit Vfat erlaubte Dateiname -Aliase. Zum Beispiel, longfi ~ 1. ??? Mit maximal acht plus drei Zeichen war ein Dateiname -Alias ​​von "langer Dateiname. ???"Um 8,3 Einschränkungen für ältere Programme zu entsprechen.

Diese Eigenschaft wurde vom Move Command Algorithmus verwendet, der zuerst einen zweiten Dateinamen erstellt und dann nur den ersten Dateinamen entfernt.

Andere Dateisysteme geben nach Entwurf nur einen Dateinamen pro Datei an, wodurch die Änderung der Datei eines Datei eines Dateinamens nicht die Datei des anderen Dateinamens verändert.

Längenbeschränkungen

Einige Dateisysteme beschränken die Länge der Dateinamen. In einigen Fällen gelten diese Längen für den gesamten Dateinamen, wie in 44 Zeichen auf IBM S/370.[6] In anderen Fällen können die Längengrenzen für bestimmte Teile des Dateinamens gelten, z. B. für den Namen einer Datei in einem Verzeichnis oder einen Verzeichnisnamen. Zum Beispiel 9 (z. B.,, 8-Bit-Fett in Eigenständige Festplatte Basic), 11 (z. FAT12, FAT16, FAT32 in dos), 14 (z. B. frühe Unix), 21 (Human68K), 31, 30 (z. Apfeldos 3.2 und 3.3), 15 (z. Apple Prodos), 44 (z. B. IBM S/370),[6] oder 255 (z. B. frühe Berkeley Unix) Zeichen oder Bytes. Längengrenzen ergeben sich häufig aus der Zuweisung fester Speicherplatz in einem Dateisystem zum Speichern von Komponenten von Namen. Daher erfordert die Erhöhung der Grenzwerte häufig eine inkompatible Änderung sowie die Reservierung mehr Platz.

Ein bestimmtes Problem mit Dateisystemen, die Informationen in verschachtelten Verzeichnissen speichern, besteht darin, dass es möglich sein kann, eine Datei mit einem vollständigen Pfadnamen zu erstellen, der die Implementierungsgrenzen überschreitet, da die Längenprüfung möglicherweise nur für einzelne Teile des Namens und nicht für den gesamten Namen gelten. Viele Windows -Anwendungen sind auf a beschränkt Max_path Wert von 260, aber Windows -Dateinamen können diese Grenze leicht überschreiten [1]. Aus Windows 10, Version 1607, Max_path -Einschränkungen wurden entfernt.[7]

Dateiname -Erweiterungen

Viele Dateisysteme, einschließlich FETT, NTFS, und VMs Systeme, betrachten Sie als Dateiname -Erweiterung den Teil des Dateinamennamens, der aus einem oder mehreren Zeichen nach der letzten Periode im Dateinamen besteht, und teilen Sie den Dateinamen in zwei Teile ein: a Grundname oder Stengel und ein Verlängerung oder Suffix verwendet von einigen Anwendungen, um die anzuzeigen Dateityp. Mehrere Ausgabedateien, die von einer Anwendung erstellt wurden, verwenden denselben Grundnamen und verschiedene Erweiterungen. Zum Beispiel kann ein Compiler die Erweiterung verwenden ZUM Für Quelleingabedatei (für FORTRAN -Code), Obj für die Objektausgabe und Lst Für die Auflistung. Obwohl es einige gemeinsame Erweiterungen gibt, sind sie willkürlich und eine andere Anwendung könnte verwendet werden Rel und Rpt. Die Erweiterungen wurden zumindest historisch auf einigen Systemen auf eine Länge von 3 Zeichen eingeschränkt, aber im Allgemeinen können jedoch jede Länge, z. B., haben. html.

Codierung der Interoperabilität

Es gibt keinen allgemeinen Codierungsstandard für Dateinamen.

Dateinamen müssen zwischen Softwareumgebungen für Netzwerkdateiübertragung, Dateisystemspeicher, Sicherungs- und Datei -Synchronisierungssoftware, Konfigurationsverwaltung, Datenkomprimierung und Archivierung usw. ausgetauscht werden. Es ist daher sehr wichtig, keine Informationen zwischen den Dateien zwischen Anwendungen zu verlieren. Dies führte zu einer breiten Einführung von Unicode als Standard für die Codierungsdateinamen, obwohl Legacy-Software möglicherweise nicht unicode-serviert ist.

Interoperabilität der Kodierung von Indikationen

Traditionell erlaubten Dateinamen jeden Charakter in ihren Dateinamen, solange sie Dateisystem sicher waren.[2] Obwohl dies die Verwendung jeglicher Codierung erlaubte und somit die Darstellung eines lokalen Textes auf einem lokalen System erlaubte, verursachte dies viele Interoperabilitätsprobleme.

Ein Dateiname kann mit verschiedenen Byte -Saiten in verschiedenen Systemen in einem einzigen Land gespeichert werden, z. B. wenn man Japanisch verwendet Schicht jis Codierung und ein anderer Japaner EUC Codierung. Die Konvertierung war nicht möglich, da die meisten Systeme keine Beschreibung der für einen Dateinamen als Teil der erweiterten Dateiinformationen verwendeten Codierung enthüllten. Dies erzwang kostspielige Dateiname -Codierungs -Vermutungen mit jedem Dateizugriff.[2]

Eine Lösung bestand darin, Unicode als Codierung für Dateinamen zu übernehmen.

Im klassischen Mac OS wurde jedoch die Codierung des Dateinamens mit den Dateinamenattributen gespeichert.[2]

Unicode -Interoperabilität

Der Unicode -Standard löst das Problem der Codierungsbestimmung.

Trotzdem bleiben einige begrenzte Interoperabilitätsprobleme wie Normalisierung (Äquivalenz) oder die verwendete Unicode -Version bestehen. Zum Beispiel ist UDF auf Unicode 2.0 beschränkt; macos HFS+ Das Dateisystem wendet die NFD-Unicode-Normalisierung an und ist optional eine Fallempfindlichkeit (standardmäßig unempfindlich). Die maximale Länge des Dateinamens ist nicht Standard und kann von der Größe der Codeeinheit abhängen. Obwohl es sich um ein ernstes Problem handelt, ist dies in den meisten Fällen begrenzt.[2]

Auf Linux bedeutet dies, dass der Dateiname nicht ausreicht, um eine Datei zu öffnen: Zusätzlich ist die genaue Byte -Darstellung des Dateinamens auf dem Speichergerät erforderlich. Dies kann auf Anwendungsebene mit einigen schwierigen Normalisierungsaufrufen gelöst werden.[8]

Die Frage der Unicode-Äquivalenz wird als "normalisierte Kollision" bezeichnet. Eine Lösung ist die Nichtnormalisierung der Unicode-Zusammensetzungsbewusstsein Wird in den technischen Gemeinschaften von Subversion und Apache verwendet.[9] Diese Lösung normalisiert keine Pfade im Repository. Die Pfade werden nur zum Zweck von Vergleiche normalisiert. Dennoch haben einige Gemeinden diese Strategie patentiert und ihre Verwendung durch andere Gemeinden verbieten.[Klarstellung erforderlich]

Perspektiven

Um Interoperabilitätsprobleme zu begrenzen, sind einige von Sun beschriebene Ideen zu:

  • Verwenden Sie eine Unicode-Codierung (z. B. UTF-8)
  • Führen Sie transparente Codekonvertierungen auf Dateinamen durch
  • Speichern Sie keine normalisierten Dateinamen
  • Überprüfen Sie die kanonischen Äquivalenz zwischen Dateinamen, um zwei kanonisch äquivalente Dateinamen in demselben Verzeichnis zu vermeiden.[2]

Diese Überlegungen ermöglichen eine Einschränkung, die nicht zu einer zukünftigen Codierung von UTF-8 zulässt.

Unicode -Migration

Ein Problem war die Migration nach Unicode. Zu diesem Zweck stellten mehrere Softwareunternehmen Software zur Migration von Dateinamen auf die neue Unicode -Codierung zur Verfügung.

  • Microsoft hat dem Benutzer während der gesamten VFAT -Technologie Migration transparent zur Verfügung gestellt
  • Apple stellte "Dateiname Coding Repair Utility v1.0" bereit.[10]
  • Die Linux -Community bereitgestellt “convmv”.[11]

Mac OS X 10.3 Markierte Apple -Einführung von Unicode 3.2 Charakter -Zersetzung, die die zuvor verwendete Unicode 2.1 -Zersetzung ersetzte. Diese Änderung verursachte Probleme für Entwickler, die Software für Mac OS X schrieben.[12]

Einzigartigkeit

In einem einzigen Verzeichnis müssen Dateinamen eindeutig sein. Da die Dateiname -Syntax auch für Verzeichnisse gilt, ist es nicht möglich, in einem einzigen Verzeichnis eine Datei- und Verzeichniseinträge mit demselben Namen zu erstellen. Mehrere Dateien in verschiedenen Verzeichnissen haben möglicherweise denselben Namen.

Der Eindeutigkeitsansatz kann sich sowohl in der Fallempfindlichkeit als auch in der Fall unterscheiden Unicode -Normalisierungsform wie NFC, NFD. Dies bedeutet, dass zwei separate Dateien mit demselben Text-Dateinamen und einer anderen Byte-Implementierung des Dateinamens erstellt werden können, wie z. \ x0300.txt "(UTF-16, NFD) (lateinisches Kapital A, Grabkombination).[13]

Schreiben Fall Erhaltung

Einige Dateisysteme, wie z. FETT, lagern Sie Dateinamen als obere Fälle unabhängig von der Brieffall verwendet, um sie zu erstellen. Beispielsweise würde eine Datei, die mit dem Namen "myName.txt" oder "myName.txt" erstellt wurde, mit dem Dateinamen "myName.txt" gespeichert. Jede Variation des oberen und unteren Falls kann verwendet werden, um auf dieselbe Datei zu verweisen. Diese Art von Dateisystemen werden aufgerufen Fall-unempfindlich und sind nicht Case-Boning. Einige Dateisysteme verbieten die Verwendung von niedrigeren Fallbuchstaben in Dateinamen insgesamt.

Einige Dateisysteme speichern Dateinamen in dem Formular, das sie ursprünglich erstellt wurden. Diese werden als bezeichnet als Case-Retentive oder Case-Boning. Ein solches Dateisystem kann sein Fallempfindlichkeit oder Fall-unempfindlich. Wenn Fallsensitive, können "myName.txt" und "myName.txt" auf zwei verschiedene Dateien im selben Verzeichnis verweisen, und jede Datei muss durch die genaue Kapitalisierung verwiesen werden, mit der sie benannt ist. Auf einem von Fall unempfindlichen, Fall-Präparation-Dateisystem hingegen kann nur eines von "myName.txt", "myName.txt" und "myName.txt" der Name einer Datei in einem bestimmten Verzeichnis bei a sein Mit der Zeit und einer Datei mit einem dieser Namen kann durch jede Kapitalisierung des Namens verwiesen werden.

Von seiner ursprünglichen Inception waren Unix und seine Derivatsysteme von Fall zu ertragen. Allerdings sind nicht alle Unix-ähnlichen Dateisysteme von Fallempfindungen. standardmäßig, HFS+ in Mac OS ist Fall-unempfindlich und SMB Server liefern normalerweise ein unempfindliches Verhalten (auch wenn das zugrunde liegende Dateisystem Fallempfindlichkeit ist, z. Samba Bei den meisten Unix-ähnlichen Systemen bieten SMB-Clientdateisysteme ein unempfindliches Verhalten. Dateisystem Fallempfindlichkeit ist eine beträchtliche Herausforderung für Software wie Samba und Wein, die mit beiden Systemen, die Groß- und Kleinbuchstaben als unterschiedlich behandeln, und mit Systemen, die sie behandeln, effizient interoperieren müssen.[14]

Reservierte Zeichen und Wörter

Dateisysteme haben nicht immer denselben Zeichen für das Komponieren eines Dateinamens bereitgestellt. Vor Unicode Als De-facto-Standard verwendeten Dateisysteme hauptsächlich ein lokalschemaabhängiges Zeichensatz. Im Gegensatz dazu ermöglichen einige neue Systeme einen Dateinamen, der aus fast jedem Charakter des Unicode-Repertoires und sogar einigen nicht-nicht-Unicode-Byte-Sequenzen besteht. Einschränkungen können durch das Dateisystem, das Betriebssystem, die Anwendung oder die Anforderungen für die Interoperabilität mit anderen Systemen auferlegt werden.

Viele Dateisysteme Dienstprogramme verbieten Steuerzeichen Aus dem Erscheinen in Dateinamen. In Unix-ähnlichen Dateisystemen die Nullcharakter[15] und der Pfadabscheider / sind verboten.

In Fenstern

Dateisystem -Dienstprogramme und Benennung von Konventionen auf verschiedenen Systemen verbieten bestimmte Zeichen, in Dateinamen zu erscheinen oder sie problematisch zu machen:[16]

Charakter Name Grund für das Verbot
/ Schrägstrich Wird als Pfadname-Komponentenabscheider in Unix-ähnlichen, Windows- und Amiga-Systemen verwendet. (So ​​lange wie das Switchar Die Einstellung ist auf '/' eingestellt, die DOS Command.com Shell würde es als Switch -Zeichen konsumieren, aber DOS und Fenster selbst akzeptieren es immer als Trennzeichen auf API -Ebene.)
Der große Solidus (Unicode -Codepunkt U+29F8) ist in Windows -Dateinamen zulässig.
\ Backslash Verwendet als Standard -Pfadname -Komponenten -Separator in DOS, OS/2 und Windows (auch wenn der Switchar ist eingestellt auf '-'; in Unix -Dateinamen erlaubt, siehe Anmerkung 1).
Der große Reverse Solidus (U+29F9) ist in Windows -Dateinamen zulässig.
? Fragezeichen Verwendet als Wildcard in UNIX, Fenstern und Amigaos; markiert einen einzelnen Charakter. In Unix -Dateinamen erlaubt, siehe Anmerkung 1.
Das Knacklaut ʔ (U+0294), die Interrobang (U+203d), die Umgekehrter Fragezeichen ¿ (U+00BF) und die Doppelter Fragezeichen (U+2047) sind in allen Dateinamen zulässig.
% Prozent Verwendet als Wildcard in RT-11; markiert einen einzelnen Charakter. Nicht besonders unter Windows.
* Sternchen
oder Stern
Wird als Wildcard in UNIX, DOS, RT-11, VMS und Windows verwendet. Markiert jede Sequenz von Zeichen (UNIX, Windows, DOS) oder eine Folge von Zeichen im Grundnamen oder in der Erweiterung (also "*.*" In DOS bedeutet "alle Dateien". In UNIX -Dateinamen zulässig, siehe siehe Anmerkung 1.
Sehen Stern (Glyphe) für viele sternchenartige Charaktere, die in Dateinamen erlaubt sind.
: Doppelpunkt Wird verwendet, um den Mountspunkt / das Laufwerk an Fenstern zu bestimmen; Wird verwendet, um das virtuelle Gerät oder das physische Gerät wie ein Laufwerk auf Amigaos zu bestimmen, RT-11 und VMs; verwendet als Pfadname -Separator in Klassischer Mac OS. Verdoppelt nach einem Namen auf VMs, gibt der DECNET -Knotenname (entspricht einem NetBIOS -Hostnamen (Windows Networking) an, dem "\\" vorangegangen ist. Dickdarm wird auch in Fenstern verwendet, um eine zu trennen Alternativer Datenstrom Aus der Hauptdatei.
Das Briefdarmdarm (U+a789) und die Verhältnissymbol (U+2236) sind in Windows -Dateinamen zulässig. In dem Segoe UI Schriftart, verwendet in Windows Explorer, das Glyphen Für den Dickdarm und der Buchstaben sind dicke identisch.
| vertikale Balken
oder Rohr
Aussagt Software -Pipelining In Unix, dos und Windows; in Unix -Dateinamen erlaubt, siehe Anmerkung 1. Das Zahnklick ǀ (U+01C0) ist in Windows -Dateinamen zulässig.
" Gerade Doppelzitat Eine Vermächtnisrestriktion von DOS. Die einzelnen Zitate ' (U+0027) und (U+2019) und gekrümmte Doppelzitate (U+201c) und (U+201d) sind überall in Dateinamen zulässig. Sehen Anmerkung 1.
< weniger als Gewöhnt an Eingabe umleiten, in Unix -Dateinamen erlaubt, siehe Anmerkung 1.
> größer als Gewöhnt an Ausgabeumleitung, in Unix -Dateinamen erlaubt, siehe Anmerkung 1.
. Zeitraum
oder Punkt
Mappe Namen können nicht mit einem Zeitraum in Windows enden, obwohl der Name mit einem Zeitraum enden kann, gefolgt von a Whitespace -Charakter so wie ein Nicht bahnbrechender Raum. An anderer Stelle ist die Periode erlaubt, aber das letzte Ereignis wird als Erweiterungsabscheider in VMs, DOs und Fenstern interpretiert. In anderen OSS, die normalerweise als Teil des Dateinamens betrachtet werden, und mehr als eine Periode (Vollstation) zulässig sein kann. In Unix ist eine führende Periode bedeutet, dass die Datei oder der Ordner normalerweise versteckt sind.
, Komma Erlaubt, aber von den Befehlszeilen -Dolmetscherbefehl und cmd.exe unter DOS und Windows als Trennzeichen behandelt.
; Semikolon Erlaubt, aber von den Befehlszeilen -Dolmetscherbefehl und cmd.exe unter DOS und Windows als Trennzeichen behandelt.
= Gleiches Zeichen Erlaubt, aber von den Befehlszeilen -Dolmetscherbefehl und cmd.exe unter DOS und Windows als Trennzeichen behandelt.
Platz
Erlaubt, aber der Raum wird auch als Parameterabscheider in verwendet Befehlszeile Anwendungen. Dies kann durch Zitieren des gesamten Dateinamens gelöst werden.

Hinweis 1: Während sie in UNIX -Datei- und Ordnernamen zugelassen sind, sind die meisten Unix -Muscheln Erfordern Sie spezifische Zeichen wie Räume, <,>, |, \ und manchmal:, (,), &,;, #sowie Platzhalter wie? und *, um zitiert zu werden oder entkam:

fünf \ und \ sechs \ (Beispiel für die Flucht)
'Fünf und sechs oder "Fünf und sechs (Beispiele für das Zitieren)

Der Charakter å (0xe5) wurde nicht als erster Brief in einem Dateinamen unter erlaubt 86-dos und MS-DOS/PC DOS 1.x-2.x, können jedoch in späteren Versionen verwendet werden.

In Windows Utilities sind der Speicherplatz und der Zeitraum nicht als endgültiger Charakter eines Dateinamens zulässig.[17] Die Periode ist als erster Zeichen zulässig, aber einige Windows -Anwendungen, wie z. Windows ExplorerVerbot der Erstellung oder Umbenennung solcher Dateien (obwohl diese Konvention in Unix-ähnlichen Systemen verwendet wird, um sie zu beschreiben versteckte Dateien und Verzeichnisse). Zu den Problemumgehungen gehört das Anhängen eines Punkt DateimanagerErstellen der Datei mithilfe der Befehlszeile oder Speichern einer Datei mit dem gewünschten Dateinamen in einer Anwendung.[18]

Einige Dateisysteme in einem bestimmten Betriebssystem (insbesondere Dateisysteme, die ursprünglich auf anderen Betriebssystemen implementiert wurden) und bestimmte Anwendungen auf diesem Betriebssystem können weitere Einschränkungen und Interpretationen anwenden. Sehen Vergleich von Dateisystemen Weitere Informationen zu Beschränkungen.

In Unix-ähnlichen Systemen, DOS und Windows, den Dateinamen ". und ".." haben besondere Bedeutungen (aktuelles und übergeordnetes Verzeichnis). Windows 95/98/ich Verwendet auch Namen wie "...", "...." und so weiter, um Großeltern- oder Urgroßeltern zu bezeichnen.[19] Alle Windows -Versionen verbieten die Erstellung von Dateinamen, die nur aus Punkten bestehen, obwohl Namen aus drei Punkten ("...") oder mehr in Unix legal sind.

Darüber hinaus sind in Windows und DOS -Dienstprogrammen auch einige Wörter reserviert und können nicht als Dateinamen verwendet werden.[18] Zum Beispiel, DOS Gerätedateien:[20]

Con, PRN, Aux, Clock $, Nul Com0, Com1, Com2, Com3, Com4, Com5, Com6, Com7, Com8, Com9[21] LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9[21] LST (nur in 86-dos und dos 1.xx) keybd $, Screen $ (nur in Multitasking MS-DOS 4.0) $ Idle $ (nur in Gleichzeitige DOS 386, Multiuser dos und Dr. DOS 5.0 und höher) config $ (nur in MS-DOS 7.0-8.0)

Systeme mit diesen Einschränkungen verursachen Inkompatibilitäten mit einigen anderen Dateisystemen. Zum Beispiel kann Windows diese legalen Unix -Dateinamen nicht verarbeiten oder erhöhen: aux.c,[22] Q "UOTE" S.TXT oder NUL.TXT.

NTFS -Dateinamen, die intern verwendet werden, umfassen:

$ Mft, $ mftmirr, $ logFile, $ Volume, $ attrdef, $ bitmap, $ boot, $ badclus, $ Secure, $ oben

Vergleich der Dateinamenbeschränkungen

System Fall
empfindlich
Fall
Erhaltung
Erlaubte Zeichensatz Reservierte Zeichen Reservierte Wörter Maximale Länge (Zeichen) Kommentare
8-Bit-Fett ? ? 7-Bit ASCII (aber als Bytes gespeichert) Erstes Zeichen darf nicht 0x00 oder 0xff sein 9 Maximal 9 Zeichen -Basisname -Grenze für sequentielle Dateien (ohne Erweiterung) oder maximal 6 und 3 Zeichenerweiterung für Binärdateien; sehen 6.3 Dateiname
FAT12, FAT16, FAT32 Nein Nein irgendein SBCS/DBCs OEM -Codepage 0x00-0x1F 0x7F " * / : < > ? \ | + , . ; = [ ] (In einigen Umgebungen auch: ! @; DOS 1/2 erlaubte 0xe5 nicht als erster Zeichen) Geräten Namen einschließlich: $ Idle $ aux com1… com4 con config $ cakt $ keybd $ lpt1… lpt4 lst nul prn Bildschirm $ (es hängt davon ab Verfügbar Status überall oder nur virtuell \ Dev \ Verzeichnis) 11 Maximal 8 Charakter -Basisname -Grenze und 3 Zeichenerweiterung; sehen 8.3 Dateiname
Vfat Nein Ja Unicode, verwenden UCS-2 Codierung 0x00-0x1F 0x7F " * / : < > ? \ | 255
pext Nein Ja Unicode, verwenden UTF-16 Codierung 0x00-0x1F 0x7F " * / : < > ? \ | 255
NTFS Optional Ja Unicode, verwenden UTF-16 Codierung 0x00-0x1F 0x7F " * / : < > ? \ | Nur im Root -Verzeichnis: $ Attrdef $ badclus $ bitmap $ boot $ logfile $ mft $ mftmirr pagefile 255 Die Pfade können bis zu 32.000 Zeichen betragen.

Verbietet die Verwendung von Zeichen in Bereich 1-31 (0x01-0x1f) und Zeichen " * /: <>? \ | Es sei denn 255 Zeichen lang[zweifelhaft ].

Windows verbietet die Verwendung der MS-DOS-Geräte-Namen Aux, Clock $, Com1,…, Com9, Con, LPT1,…, LPT9, NUL und PRN sowie diese Namen mit jeder Erweiterung (z. B. aux.txt) , außer wenn lange UNC -Pfade verwendet werden (ex. \\. \ c: \ nul.txt oder \\? \ d: \ aux \ con). (Uhr $ kann verwendet werden, wenn eine Erweiterung bereitgestellt wird.) Die Win32-API-Ablaufzeit (Vollstop) sowie führende und nachverfolgende Space-Zeichen aus Dateinamen, sofern UNC-Pfade verwendet werden. Diese Einschränkungen gelten nur für Windows. In Linux -Verteilungen, die NTFs unterstützen, werden Dateinamen mit dem POSIX -Namespace von NTFS geschrieben, wodurch ein Unicode -Zeichen außer / und NUL ermöglicht wird.

OS/2 HPFS Nein Ja Jeder 8-Bit-Set | \?*<":>/ 254
Mac OS HFS Nein Ja Jeder 8-Bit-Set : 255 Alte Versionen von Finder sind auf 31 Zeichen beschränkt
Mac OS HFS+ Optional Ja Unicode, verwenden UTF-16 Codierung : auf der Festplatte, in klassischem Mac OS und am Kohlenstoff Schicht in MacOS; / an der UNIX -Ebene in MacOS 255 Mac OS 8.1 - MacOS
die meisten Unix Dateisysteme Ja Ja Jeder 8-Bit-Set / Null 255 ein führender . zeigt an, dass ls und Dateimanager werden die Datei standardmäßig nicht angezeigt
Z/OS Klassisches MVS -Dateisystem (Datensätze) Nein Nein EBCDIC -CODE -Seiten Anders als $ # @ - x'c0 '' 44 Der erste Charakter muss alphabetisch oder national sein ($, #, @)

"Qualifiziert" enthält . nach 8 Zeichen oder weniger.[23] Partitionierte Datensätze (PDS oder PDSE) werden in Mitglieder mit Namen von bis zu 8 Zeichen unterteilt; Der Mitgliedsname wird nach dem Namen des PDS in Klammern platziert, z. Payroll.dev.cbl (prog001)

CMS -Dateisystem Nein Nein EBCDIC -CODE -Seiten 8 + 8 Einstufige Verzeichnisstruktur mit Scheibenbuchstaben (A-Z). Maximal 8 Zeichen Dateiname mit maximal 8 Zeichen -Dateityp, getrennt durch Whitespace. Beispielsweise wird auf eine Textdatei mit dem Namen Memo auf der Festplatte A als "Memo -Text a" zugegriffen. (Spätere Versionen von VM haben hierarchische Dateisystemstrukturen, SFS und BFS eingeführt, aber die ursprüngliche Flachverzeichnis "Minidisk" -Struktur wird immer noch weit verbreitet.)
frühzeitig Unix (AT&T Corporation)) Ja Ja Jeder 8-Bit-Set / 14 ein führender . zeigt eine "versteckte" Datei an
Posix "Volltragbare Dateinamen"[24] Ja Ja A - Z A - Z 0–9. _-- / Null 14 Bindestrich darf nicht der erste Charakter sein. Ein Befehlszeilen -Dienstprogramm überprüft die Konformität, "Pathchk", ist Teil des IEEE 1003.1 Standards und von Die offene Gruppe Grundspezifikationen[25]
ISO 9660 Nein ? A - Z 0–9 _. "nahe 180" (Stufe 2) oder 200 (Stufe 3) Auf CDs verwendet; 8 Verzeichnisstufen max (für Stufe 1, nicht Stufe 2,3)
Amiga vonS Nein Ja Jeder 8-Bit-Set : / Null 30 Original -Dateisystem 1985
Amiga ffs Nein Ja Jeder 8-Bit-Set : / Null 30 Schnelles Dateisystem 1988
Amiga PFS Nein Ja Jeder 8-Bit-Set : / Null 107 Professionelles Dateisystem 1993
Amiga SFS Nein Ja Jeder 8-Bit-Set : / Null 107 Smart File System 1998
Amiga FFS2 Nein Ja Jeder 8-Bit-Set : / Null 107 Schnelles Dateisystem 2 2002
Beos BFS Ja Ja Unicode, verwenden UTF-8 Codierung / 255
Dez PDP-11 RT-11 Nein Nein Radix-50 6 + 3 Flates -Dateisystem ohne Unterdire. Eine vollständige "Dateispezifikation" enthält Geräte, Dateiname und Erweiterung (Dateityp) im Format: dev: filnam.ext.
Dez Vax VMs Nein Aus
v7.2
A - Z 0–9 $ - _ 32 pro Komponente; früher 9 pro Komponente; Zuletzt 255 für einen Dateinamen und 32 für eine Erweiterung. Eine vollständige "Dateispezifikation" enthält Knotenname, Diskname, Verzeichnis/IES, Dateiname, Erweiterung und Version im Format: UKNODE :: MYDISK: [thatdir.thatdir] Dateiname.Extension; 2 Verzeichnisse können nur 8 Ebenen tiefgreifend gehen.
Commodore dos Ja Ja Jeder 8-Bit-Set :, = $ 16 Die Länge hängt vom Laufwerk ab, normalerweise 16
HP 250 Ja Ja Jeder 8-Bit-Set Space ",: null chr $ (255) 6 Datenträger und Klebebandfahrten werden entweder mit einem Etikett (bis zu 8 Zeichen) oder einer Einheitsspezifikation behandelt. Das HP 250 -Dateisystem verwendet weder Verzeichnisse noch verwendet es Erweiterungen, um den Dateityp anzugeben. Stattdessen ist der Typ ein Attribut (z. B. Daten, Prog, BKUP oder SYSTEM für Datendateien, Programmdateien, Sicherungen und das Betriebssystem selbst).[26]

Siehe auch

Verweise

  1. ^ "CPM - CP/M Disk und Dateisystemformat".
  2. ^ a b c d e f David Robinson; Ienup gesungen; Nicolas Williams (März 2006). "Solaris -Präsentationen: Dateisysteme, Unicode und Normalisierung" (PDF). San Francisco: Sun.com. Archiviert von das Original (PDF) Am 4. Juli 2012.
  3. ^ RFC 959 Ietf.org RFC 959, Dateitransferprotokoll (FTP)
  4. ^ "FSUTIL -Befehlsbeschreibung Seite". Microsoft.com. Abgerufen 15. September, 2013.
  5. ^ "NTFS Harte Links, Verzeichnis Junctions und Windows -Verknüpfungen". Flex Hex. Inv Softworks. Abgerufen 12. März, 2011.
  6. ^ a b "DDNAME-Unterstützung mit FTP, Z/OS V1R11.0 Communications Server IP-Benutzerhandbuch und Befehlen z/OS V1R10.0-V1R11.0 SC31-8780-09". Ibm.com.
  7. ^ "Maximale Pfadlängenbeschränkung - Win32 Apps".
  8. ^ "Dateinamen mit Akzenten". Ned Batchelder. Juni 2011. Abgerufen 17. September, 2013.
  9. ^ "Nicht -normalisierungsunicodecompositionAwareness - Subversion Wiki". Wiki.apache.org. 21. Januar 2013. Abgerufen 17. September, 2013.
  10. ^ "Dateiname Codierung Reparatur Utility v1.0". Support.apple.com. 1. Juni 2006. Abgerufen 2. Oktober, 2018.
  11. ^ "Convmv - konvertiert Dateinamen von einer Codierung in einen anderen". J3e.de. Abgerufen 17. September, 2013.
  12. ^ "Betreff: Git auf MacOSX und Dateien mit zerlegtem UTF-8-Dateinamen". Kerneltrap. 7. Mai 2010. archiviert von das Original am 15. März 2011. Abgerufen 5. Juli, 2010.
  13. ^ "Cross Plattform Filepath -Namenskonventionen - Allgemeine Programmierung". Gameev.net. Abgerufen 17. September, 2013.
  14. ^ "CaseinemsitivfileNames - das offizielle Wein Wiki". Wiki.winehq.org. 8. November 2009. archiviert von das Original am 18. August 2010. Abgerufen 20. August, 2010.
  15. ^ "Die offenen Gruppenbasisspezifikationen Ausgabe 6". IEEE STD 1003.1-2001. Die offene Gruppe. 2001.
  16. ^ "Benennung von Dateien, Pfaden und Namespaces (Windows)" ". Msdn.microsoft.com. 26. August 2013. Abgerufen 17. September, 2013.
  17. ^ "Windows -Namenskonventionen". Msdn, Microsoft.com. Siehe Last Bulleted Item.
  18. ^ a b Benennung einer Datei msdn.microsoft.com (MSDN), Dateiname -Beschränkungen unter Windows
  19. ^ Microsoft Windows 95 Readme für Tipps und Tricks, Microsoft, abgerufen 27. August, 2015
  20. ^ MS-DOS-Geräte-Treibernamen können nicht als Dateinamen verwendet werden., Microsoft
  21. ^ a b Benennung von Dateien, Pfaden und Namespaces, Microsoft
  22. ^ Ritter, Gunnar (30. Januar 2007). "Die Geschichte von" aux.c "". Erbstückprojekt.
  23. ^ "Subparameter -Definition, Z/OS V1R11.0 MVS JCL Referenz". Ibm.com. Abgerufen 17. September, 2013.
  24. ^ Lewine, Donald. POSIX -Programmierhandbuch: Tragbare UNIX -Programme schreiben 1991 O'Reilly & Associates, Inc. Sebastopol, CA pp63-64
  25. ^ PATHCHK - PATHNAME PRÜFEN
  26. ^ Hewlett-Packard Company Roseville, CA HP 250 Syntaxreferenz Rev 1/84 Handbuch Teil Nr. 45260-90063

Externe Links