Warum haben "ls" unter UNIX und "dir" unter DOS unterschiedliche Namen?

2096
siamii

Warum haben sie unterschiedliche Namen für denselben Befehl, ein Verzeichnis aufzulisten? Sicher hätten sie miteinander reden und sich auf einen gemeinsamen Namen einigen können, wie zum Beispiel cdder, der sowohl für Unix als auch für DOS gleich ist.

Diese Entscheidung, unterschiedliche Namen zu haben, hat viele Probleme für Entwickler und Benutzer verursacht und die Inkompatibilität zwischen den beiden Systemen erhöht. Haben sie es mit Absicht gemacht? Wie kommt es dann, dass "cd" gleich ist?

6
Beachten Sie, dass PowerShell - die neue und bevorzugte Befehlszeile für Windows - "ls" und "dir" als Aliasnamen für das zugrunde liegende "Get-ChildItem" (das die Registry und andere (möglicherweise vom Benutzer installierte Anbieter betreiben kann) zusätzlich definieren kann zum Dateisystem). Richard vor 12 Jahren 0

2 Antworten auf die Frage

17
Gilles

Note that Unix came first (the wording of your question makes it look like it was the other way round).

DOS inherited the dir command from CP/M, which got it from VMS. The / character to introduce options (which forced DOS to adopt a different character as the directory separator, when directories were introduced) had the same origin.

Why didn't the VMS designers follow Unix? Because when VMS was designed, Unix was still young, and hadn't become the de facto standard that it would later become (in part thanks to the POSIX standardization effort). VMS and Unix had different designs in many respects; I doubt there was a deliberate effort to make them incompatible. CP/M and DOS, and early versions of Windows followed VMS because there was no compelling reason to pick Unix over VMS at that time; the lead designer of Windows NT had previously worked on VMS, which further influenced Windows towards VMS rather than Unix. Later, when Unix came out as the standard operating system on servers, Windows was too firmly entrenched as different to change. Nonetheless, Windows did acquire some limited amount of POSIX compatibility (sometimes through third-party software); for example internal APIs do accept / as a path separator.

Nebenbei: [Anscheinend] (http://bytes.com/topic/python/answers/23123-when-did-windows-start-accepting-forward-slash-path-separator) akzeptieren alle MS-DOS-Systemcalls `/` Es ist nur so, dass * -Befehle * nicht als Pfadtrennzeichen verwendet wurden. (MS-DOS Version 2 hatte eine Option zum Ändern des Befehlszeilen-Pfadtrennzeichens in `/` und des Optionspräfixes in `-`, da viele seiner Entwickler an Xenix verwendet wurden.) grawity vor 12 Jahren 0
Unix geht auf das Jahr 1969 zurück, und die erste veröffentlichte Dokumentation wurde 1971 veröffentlicht. MSDOS begann als QDOS (Quick and Dirty OS) von Seattle Computer Product, das 1980 mit der Entwicklung begann. Bis dahin hatten die meisten neuen Programmierer Unix im College kennen gelernt andere wussten davon. Es gab mehrere Möglichkeiten für SCP, MS und IBM (die natürlich MSDOS beauftragten), auf Unix-Standards umzusteigen (was wahrscheinlich etwa zwei Tage gedauert hätte), aber dies geschah leider nicht. Ich vermute, es war eine Kombination aus Ignoranz und Arroganz. Daniel R Hicks vor 12 Jahren 1
@DanH Nicht so sehr: Damals waren VMS und andere Betriebssysteme, die außerhalb von IBM völlig vergessen wurden, immer noch ernsthafte Konkurrenten. Gilles vor 12 Jahren 0
In den späten 70er Jahren war UNIX "wo es war", obwohl die anderen noch immer da waren. Wenn DOS bereits ein Jahr später erstellt worden wäre, wäre UNIX zweifellos der De-facto-Standard gewesen. (Irritierender ist vielleicht, dass viele der später hinzugefügten Interna aus "ganzen Stoffen" erstellt wurden, anstatt UNIX-Paradigmen zu kopieren.) Daniel R Hicks vor 12 Jahren 0
VMS war erst 77 verfügbar, CP / M wurde 73/74 entwickelt. Es gibt jedoch Quellen für DEC-Einflüsse: CP / M wurde auf TOPS-10 und PDP-10 entwickelt (ebenso wie frühe MS-Produkte). TOPS-10 hat einen DIRECT-Befehl. TOPS-20 (ein anderes PDP-10-Betriebssystem) verfügt über einen DIRECTORY-Befehl, der als DIR abgekürzt werden kann. ISTR, das DEC für das PDP-11 (einschließlich des VMS-Inspirators RSX-11 von Cutter) verwendet wird, verwendet ebenfalls dieselbe Nomenklatur (und daher wahrscheinlich auch Befehlsnamen, die auf DIRECTORY basieren). Über Unix, ISTR, das Unix nicht vor 1974/1975 aus Bell verbreitet hat, wahrscheinlich zu spät, um Einfluss auf CP / M zu nehmen. AProgrammer vor 12 Jahren 1
4
Tim Kennedy

Die Befehle unterscheiden sich, da sie ziemlich parallel und ohne Interaktion entwickelt wurden. DOS-Befehle sind im Allgemeinen von QDOS abgeleitet, das wiederum von CP / M, Gary Kildalls Steuerungsprogramm für Mikrocomputer, abgeleitet war, das so ziemlich das erste Betriebssystem für Intel-Mikroprozessoren war, das ursprünglich für die 8080-CPU von Intel gedacht war und in großem Umfang geschrieben wurde PL / M zur Steuerung eines Diskettenlaufwerks. Dies alles geschah in den frühen 70er Jahren.

Linux ist weitgehend von Unix abgeleitet, wobei viele Befehle identische Namen haben (oder sehr, sehr ähnliche Funktionen). Unix wurde ab 1969 entwickelt, und ein Großteil der ursprünglichen Befehlsbenennung erfolgte parallel zu CP / M.

CP / M richtete sich an Personal Computer, während Unix sich an Minicomputer richtete, im Allgemeinen in Labors von Unternehmen oder an Universitätsforschungszentren, und es gab wirklich keine Zusammenarbeit zwischen den beiden Bemühungen.

Jetzt wird die Differenzierung weitgehend beibehalten, ohne dass die andere Seite zugeben will, dass die Namenskonvention der anderen Partei überlegen ist.

Beide Systeme erlauben jedoch Befehls-Aliase.