Warum verwendet Windows Backslashes für Pfade und Unix Forward Slashes?
85
Es ärgert mich, dass ich Unix im College verwendet habe und jetzt auf der Windows-Seite arbeite. Welche Geschichte steckt hinter dieser Entscheidung? Weiß jemand, warum es so geklappt hat?
Unix wurde /um 1970 als Verzeichnis-Trennzeichen eingeführt . Ich weiß nicht, warum genau dieses Zeichen ausgewählt wurde. das Vorfahrensystem Multics verwendet >, aber die Designer von Unix hatten bereits >zusammen mit <für die Umleitung in der Shell (siehe Warum ist das Stammverzeichnis mit einem /Zeichen gekennzeichnet? ).
MS-DOS 2.0 wurde \in den frühen 1980er Jahren als Verzeichnisseparator eingeführt . Der Grund /wurde nicht verwendet, da MS-DOS 1.0 (das Verzeichnisse überhaupt nicht unterstützte) bereits verwendet wurde /, um Befehlszeilenoptionen einzuführen. Es hat diese Verwendung /von CP / M übernommen , die es von VMS übernommen hat . Eine ausführlichere Erklärung, warum diese Auswahl getroffen wurde, finden Sie in Larry Ostermans Blog (MS-DOS hatte sogar kurz die Option, das Optionszeichen in -und das Verzeichnis-Trennzeichen in zu ändern /, aber es blieb nicht erhalten).
/Es wird von den meisten APIs auf Programmiererebene (in allen Versionen von DOS und Windows) erkannt. So kann man sich /unter Windows oft, aber nicht immer mit der Verwendung als Verzeichnisseparator abfinden. Eine bemerkenswerte Ausnahme ist, dass Sie /nach dem \\?Präfix kein Trennzeichen verwenden können. Dies ist (auch in Windows 7) die einzige Möglichkeit, einen Pfad mit Unicode oder mit mehr als 260 Zeichen anzugeben.
Einige Elemente der Benutzeroberfläche unterstützen /unter Windows das Trennen von Verzeichnissen, jedoch nicht alle. Einige Programme übergeben Dateinamen nur an die zugrunde liegende API, unterstützen sie also /und \gleichgültig. Im Befehlsinterpreter (in command.comoder cmd) können Sie /in vielen Fällen, aber nicht immer, verwenden. Dies hängt teilweise von der Windows-Version ab ( cd /windowsfunktioniert beispielsweise unter XP und 7, jedoch nicht unter Windows 9x). Das Pfad-Eingabefeld des Explorers akzeptiert /(zumindest ab XP; wahrscheinlich, weil es auch URLs akzeptiert). Der Standarddialog zum Öffnen von Dateien weist Schrägstriche zurück .
/wird von der MS-DOS- oder Windows-Befehlszeile als Verzeichnisseparator erkannt.
Tamara Wijsman
1
"C: \ Windows \ System32> cd / windows / system" funktioniert.
Andrew J. Brehm
@TomWij: Hast du einen Hinweis, wo genau /in der Kommandozeile akzeptiert wird? Was macht zum Beispiel dir /p? und dir c:/p? und c:/windows/notepad.exe? und start /windows/notepad.exe? usw. (Ich habe hier keine Windows-Maschine zum Testen.)
Gilles
2
/wurde wahrscheinlich als Verzeichnis-Trennzeichen in UNIX verwendet, da es sich um eine einfache (nicht verschobene) Taste handelte, mit der ein Teletyp angestoßen werden konnte. Die nicht verschobenen Sonderzeichen waren : - ; , . /.
Daniel R Hicks
2
Interessanterweise habe ich kürzlich die DOS 1 und 2 Quellen und Handbücher durchgesehen und herausgefunden, dass Microsoft /(und -Switches) wie Xenix verwendet und von Xenix inspiriert, aber IBM veröffentlicht hat, bevor Microsoft an OEMs ausgeliefert wurde, und IBM ` (and / `für Switches verwendet). und änderten die Eingabeaufforderung von A:in, A>so dass sie die Standarddokumentation änderten und Buggy- Dokumentation (immer noch angenommen // -) sowie den Hinweis, dass sie geändert wurde und warum, auslieferten.
Mirabilos
9
Die zugrunde liegende Windows-API kann entweder den umgekehrten Schrägstrich oder den Schrägstrich akzeptieren, um Verzeichnis- und Dateikomponenten eines Pfads zu trennen. Microsoft verwendet jedoch einen umgekehrten Schrägstrich und APIs, die Pfade zurückgeben, die einen umgekehrten Schrägstrich enthalten.
MS-DOS 2.0 kopierte das hierarchische Dateisystem von Unix und verwendete daher den Schrägstrich, fügte jedoch (möglicherweise auf Drängen von IBM ) den umgekehrten Schrägstrich hinzu, damit Pfade in die Befehlsshell eingegeben werden können, während die Kompatibilität mit MS-DOS 1.0 und CP erhalten bleibt / M, wobei der Schrägstrich der Befehlszeilenoptionsindikator war.
Vergleichen Sie
dir/w
das zeigt das aktuelle verzeichnis im wide format dagegen an
Antworten:
Unix wurde
/
um 1970 als Verzeichnis-Trennzeichen eingeführt . Ich weiß nicht, warum genau dieses Zeichen ausgewählt wurde. das Vorfahrensystem Multics verwendet>
, aber die Designer von Unix hatten bereits>
zusammen mit<
für die Umleitung in der Shell (siehe Warum ist das Stammverzeichnis mit einem/
Zeichen gekennzeichnet? ).MS-DOS 2.0 wurde
\
in den frühen 1980er Jahren als Verzeichnisseparator eingeführt . Der Grund/
wurde nicht verwendet, da MS-DOS 1.0 (das Verzeichnisse überhaupt nicht unterstützte) bereits verwendet wurde/
, um Befehlszeilenoptionen einzuführen. Es hat diese Verwendung/
von CP / M übernommen , die es von VMS übernommen hat . Eine ausführlichere Erklärung, warum diese Auswahl getroffen wurde, finden Sie in Larry Ostermans Blog (MS-DOS hatte sogar kurz die Option, das Optionszeichen in-
und das Verzeichnis-Trennzeichen in zu ändern/
, aber es blieb nicht erhalten)./
Es wird von den meisten APIs auf Programmiererebene (in allen Versionen von DOS und Windows) erkannt. So kann man sich/
unter Windows oft, aber nicht immer mit der Verwendung als Verzeichnisseparator abfinden. Eine bemerkenswerte Ausnahme ist, dass Sie/
nach dem\\?
Präfix kein Trennzeichen verwenden können. Dies ist (auch in Windows 7) die einzige Möglichkeit, einen Pfad mit Unicode oder mit mehr als 260 Zeichen anzugeben.Einige Elemente der Benutzeroberfläche unterstützen
/
unter Windows das Trennen von Verzeichnissen, jedoch nicht alle. Einige Programme übergeben Dateinamen nur an die zugrunde liegende API, unterstützen sie also/
und\
gleichgültig. Im Befehlsinterpreter (incommand.com
odercmd
) können Sie/
in vielen Fällen, aber nicht immer, verwenden. Dies hängt teilweise von der Windows-Version ab (cd /windows
funktioniert beispielsweise unter XP und 7, jedoch nicht unter Windows 9x). Das Pfad-Eingabefeld des Explorers akzeptiert/
(zumindest ab XP; wahrscheinlich, weil es auch URLs akzeptiert). Der Standarddialog zum Öffnen von Dateien weist Schrägstriche zurück .quelle
/
wird von der MS-DOS- oder Windows-Befehlszeile als Verzeichnisseparator erkannt./
in der Kommandozeile akzeptiert wird? Was macht zum Beispieldir /p
? unddir c:/p
? undc:/windows/notepad.exe
? undstart /windows/notepad.exe
? usw. (Ich habe hier keine Windows-Maschine zum Testen.)/
wurde wahrscheinlich als Verzeichnis-Trennzeichen in UNIX verwendet, da es sich um eine einfache (nicht verschobene) Taste handelte, mit der ein Teletyp angestoßen werden konnte. Die nicht verschobenen Sonderzeichen waren: - ; , . /
./
(und-
Switches) wie Xenix verwendet und von Xenix inspiriert, aber IBM veröffentlicht hat, bevor Microsoft an OEMs ausgeliefert wurde, und IBM` (and
/ `für Switches verwendet). und änderten die Eingabeaufforderung vonA:
in,A>
so dass sie die Standarddokumentation änderten und Buggy- Dokumentation (immer noch angenommen/
/-
) sowie den Hinweis, dass sie geändert wurde und warum, auslieferten.Die zugrunde liegende Windows-API kann entweder den umgekehrten Schrägstrich oder den Schrägstrich akzeptieren, um Verzeichnis- und Dateikomponenten eines Pfads zu trennen. Microsoft verwendet jedoch einen umgekehrten Schrägstrich und APIs, die Pfade zurückgeben, die einen umgekehrten Schrägstrich enthalten.
MS-DOS 2.0 kopierte das hierarchische Dateisystem von Unix und verwendete daher den Schrägstrich, fügte jedoch (möglicherweise auf Drängen von IBM ) den umgekehrten Schrägstrich hinzu, damit Pfade in die Befehlsshell eingegeben werden können, während die Kompatibilität mit MS-DOS 1.0 und CP erhalten bleibt / M, wobei der Schrägstrich der Befehlszeilenoptionsindikator war.
Vergleichen Sie
das zeigt das aktuelle verzeichnis im wide format dagegen an
welches die
w
datei im director ausführtdir
.Verweise:
quelle