Sind die Eingabeaufforderung und MS-DOS dasselbe?

12

Ich habe mit meinem Freund argumentiert, dass die Eingabeaufforderung nur eine GUI-Version von MS-DOS ist, die in der Windows Forms-Umgebung funktioniert. Er ist völlig anderer Meinung als ich.

Wer hat Recht?

user978733
quelle
2
Was hat Ihnen Ihre Forschung bisher gesagt?
Slhck
4
cmd.exeist ein ganz anderes Tier als MS-DOS.
Sathyajith Bhat
7
MS-DOS ist ein Betriebssystem. Die Windows-Eingabeaufforderung ist eine Schnittstelle, die wie MS-DOS aussieht .
Der Hochstapler

Antworten:

20

Dies war einmal wahr, aber es ist nicht mehr.

Über die MS-DOS # Windows-Befehlszeilenschnittstelle - Wikipedia :

Alle Versionen von Microsoft Windows verfügen über eine MS-DOS-ähnliche Befehlszeilenschnittstelle (CLI). Dies könnte viele DOS- und verschiedene Win32-, OS / 2 1.x- und Posix-Befehlszeilendienstprogramme in derselben Befehlszeilensitzung ausführen und das Weiterleiten zwischen Befehlen ermöglichen. Die Benutzeroberfläche und das Symbol bis Windows 2000 folgten der nativen MS-DOS-Oberfläche.

Consumer Windows (bis 3.11, Win9x, WinME) wurde als grafische Benutzeroberfläche (GUI) ausgeführt, die auf MS-DOS ausgeführt wurde. Mit Windows 95, 98 und ME wurde der MS-DOS-Teil integriert, wobei beide Betriebssysteme als Komplettpaket behandelt wurden. Die Befehlszeile hat über ein Windows-Modul (winoldap.mod) auf die DOS-Befehlszeile (normalerweise command.com) zugegriffen.

Eine neue Windows-Zeile (Windows NT) startet über einen Kernel, dessen einziger Zweck darin besteht, Windows zu laden. Win32-Anwendungen können im Loader-System nicht so ausgeführt werden, wie OS / 2, UNIX oder Consumer Windows Sitzungen im Zeichenmodus starten können.

Nein, in jedem Windows der NT-Familie (z. B. XP, Vista, 7, 8) sind die Eingabeaufforderung und MS-DOS optisch ähnlich, aber sehr unterschiedlich.

Dennis
quelle
Eigentlich würde ich sagen, dass es nie wahr war. Das Äquivalent zu cmd.exewäre command.comein eher kleiner Teil von MSDOS gewesen.
9

Sie sind verschiedene Dinge - Die Eingabeaufforderung ist nicht MS-DOS - aber soweit der Benutzer betrifft sie könnte dasselbe sein , wie sie die gleichen Dinge tun.

Es kommt also auf Ihren Standpunkt an. Aus technischer Sicht ist Ihr Freund richtig, aber aus Anwendersicht sind Sie richtig (sozusagen, da es Unterschiede gibt, die ein Experte erkennen würde).

ChrisF
quelle
Ich denke du meinst das Gegenteil, oder? Er ist derjenige, der technisch korrekt ist, weil sie nicht buchstäblich dasselbe sind, der Freund ist derjenige, der praktisch korrigiert, weil sie für den Benutzer dasselbe sind.
Brad
@Brad - die Art und Weise, wie ich die Frage las, war, dass das OP sagte, dass sie gleich waren, aber sein Freund sagte, dass sie es nicht waren.
ChrisF
8

Nein.

(Es sei denn, Ihre Definition von Gleichheit geht nicht über » Es ist eine Textschnittstelle und ich kann Programme daraus ausführen. « )

Was ausgeführt wird, wenn Sie im Startmenü auf Eingabeaufforderung klicken, ist der Windows-Befehlsprozessor, auch bekannt als cmd.exe. Die integrierten Befehle und die Skriptsyntax (einschließlich vieler Macken) basieren auf der alten command.comVersion von CP / M und später MS-DOS, sind jedoch ansonsten völlig separate Dinge. Außerdem command.comhandelt es sich um ein 16-Bit-Programm, während cmd.exees sich um eine native Windows-Konsolenanwendung handelt.

In Windows 95, 98 und ME war es anders, wo command.com es in einer MS-DOS-VM mit Windows als Hypervisor ausgeführt wurde (ja, so etwas hatten sie damals schon). Dort hatten Sie eine ganze virtuelle Maschine unter DOS. Aber unter Windows NT, 2000, XP, Vista und 7 - nein. DOS lebt nur dort weiter, ntvdm.exewo sich die NT Virtual DOS Machine befindet, die nur eine dünne Emulationsschicht ist, die Aufrufe erfasst, die die CPU nicht direkt ausführen kann (weshalb sie schneller, aber schlechter als DOSBox arbeitet).

Auf jeden Fall war sogar command.comnur eine Shell für DOS. Es war nicht das Betriebssystem.

Im Inneren erschrecke ich jedes Mal, wenn ich Leute sehe, die sich auf ein Fenster mit grau-schwarzem Text als MS-DOS beziehen. In den allermeisten Fällen wissen sie nicht wirklich, worauf sie sich beziehen.

Joey
quelle
4

Soweit ich weiß, ist MS-DOS das von Microsoft veröffentlichte Festplattenbetriebssystem. Die Eingabeaufforderung ist eine nicht grafische Oberfläche, über die Sie mit Ihrem Betriebssystem interagieren können.

Die Eingabeaufforderung ist eine Befehlszeileninterpreter-Anwendung, die in den meisten Windows-Betriebssystemen verfügbar ist. Sie wird offiziell als Windows-Befehlsprozessor bezeichnet, manchmal aber auch als Befehlsshell. Die Eingabeaufforderung ist ein Windows-Programm, das viele der in MS-DOS verfügbaren Befehlszeilenfunktionen emuliert, jedoch nicht MS-DOS ist.

Die Eingabeaufforderung ist eine GUI-Version von command.com unter MS-DOS. cmd.exe ist eine native Windows-Anwendung, die normalerweise in einer Win32-Konsole ausgeführt wird. Auf diese Weise können Funktionen genutzt werden, die nativen Programmen auf der Plattform zur Verfügung stehen und für DOS-Programme ansonsten nicht verfügbar sind.

Da cmd.exe beispielsweise eine native Textmodusanwendung unter OS / 2 ist, kann es echte Pipes in Befehlspipelines verwenden, sodass beide Seiten der Pipeline gleichzeitig ausgeführt werden können. Infolgedessen ist es im Gegensatz zu COMMAND.COM möglich, den Standardfehler in cmd.exe umzuleiten. (COMMAND.COM verwendet temporäre Dateien und führt die beiden Seiten nacheinander nacheinander aus.)

In Wirklichkeit ist cmd.exe ein Windows-Programm, das als DOS-ähnlicher Befehlszeileninterpreter fungiert. Es ist im Allgemeinen kompatibel, bietet jedoch Erweiterungen, die einige der Einschränkungen von COMMAND.COM beheben (die obigen Erklärungen werden von Wikipedia verwendet).

Do Yein Tun
quelle
2

Dein Freund hat recht. MS-DOS ist / war ein Betriebssystem (Microsoft Disk Operating System ist das, was das Akronym steht.) Die Benutzeroberfläche für DOS ist eine (genannt die ) Eingabeaufforderung.

Die ersten Windows-Versionen liefen auf DOS (was sie zu technisch betriebsbereiten Umgebungen macht, obwohl ich nicht sicher bin, ob jemand diese Unterscheidung mehr trifft), aber spätere Betriebssysteme, beginnend mit dem NT-Kernel, taten dies nicht - DOS war weg.

Die Benutzer benötigten jedoch weiterhin die von der Eingabeaufforderung bereitgestellten Funktionen, und anstelle von command.com haben wir command.exe (und heutzutage cmd.exe) erhalten, die uns beim Ausführen eine Eingabeaufforderung gibt.

Dies ist jedoch nicht die einzige (und auch nicht annähernd erste) Eingabeaufforderung, die von Personen verwendet wurde. Befehlsansagen werden auch Shells genannt, und Unix hat viele, und die Befehle sind unterschiedlich und oft sehr mächtig. In Bezug auf Power hat Microsoft eine neue Eingabeaufforderung für Windows namens PowerShell erstellt, die unglaublich leistungsfähig und interessant ist. Weitere Informationen finden Sie in Wikipedia: http://en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces

Mark Allen
quelle
> Die Benutzeroberfläche für DOS wird als Eingabeaufforderung bezeichnet. Auch "Kommandozeile".
Synetech
und CLI oder Befehlszeilenschnittstelle.
Mark Allen
Technisch gesehen ist CLI eine Art Schnittstelle, keine bestimmte Instanz von einer. Es wäre, als würde man ein Windows als GUI bezeichnen (z. B. habe ich die Windows-GUI verwendet ). Man kann es sagen, und es ist technisch wahr / genau, aber es wäre einfach komisch.
Synetech
Ich nenne es einfach eine Eingabeaufforderung. :)
Mark Allen
Ich nenne es einfach DOS (zumindest habe ich es seit einiger Zeit widerstrebend als reines DOS bezeichnet ).
Synetech
1

Sie sind nicht dasselbe!

Anscheinend wissen viele Leute nicht, dass die DOS-Eingabeaufforderung und die Windows-Eingabeaufforderung nicht dasselbe sind. Es handelt sich tatsächlich um zwei verschiedene Programme - COMMAND.COM und CMD.EXE.

Kennen Sie Ihre Eingabeaufforderungen

Erstens gibt es aufgrund von Unterschieden in der Plattform (DOS vs Windows) und im Interpreter (command.com vs cmd.exe) offensichtliche Unterschiede wie

  • DOS wird im Vollbildmodus ohne Fenstermodus ausgeführt, daher kein mode con:cols=COL lines=ROWBefehl zum Ändern der Konsolengröße und kein titleBefehl
  • DOS unterstützt keine Unterstützung für Multitasking, Mehrbenutzer, Registrierung, Berechtigungen, lange Dateinamen, Symlinks / Hardlinks, Netzwerk, Unicode, dynamische Festplatten und erweiterte Volumes. Daher gibt es keine Tools, um diese zu verwalten

Es gibt jedoch auch große Unterschiede in den Funktionen und der Syntax interner Befehle zwischen command.com und cmd.exe sowie in einigen externen Tools in beiden Umgebungen. In MS-DOS gibt es

  • Keine Funktionen, Codeblöcke ()und lokalen Bereiche, die bedeuten

    • for, if... muss von einem einzelnen Befehl in derselben Zeile gefolgt werden
    • nein exit /bodergoto :eof
    • nein setlocalundendlocal
    • gotokann nur zu einem Etikett springen, callkann nur eine andere Batchdatei starten
    • Befehle können nicht wie gruppiert werden

      (
      command1
      command2
      ) >output.txt
      
  • Kein Fluchtcharakter ^. Das Drucken von Sonderzeichen wäre mühsam und keine Möglichkeit, mehrzeilige Befehle auszuführen

  • Keine speziellen Formate von if
    • nein if cmdextversionundif defined
    • Kein Vergleich von Zeichenfolgen ohne Berücksichtigung der Groß- und Kleinschreibung if [/i] string1 compare-op string2
  • Kein Befehlsverlauf und Befehlsargumentvervollständigung
  • Keine indirekte Erweiterung (z. B. call set %%var%suffix%=string) von Variablen und keine verzögerte Erweiterung (z. B. echo !var%suffix%!)
  • Keine erweiterte String-Manipulation
    • Keine ~xxxVvariable Unterstützung
    • Keine %variable:~num1,num2%Unterstützung für Teilzeichenfolgen oder String-Ersatz%variable:str=newstr%
  • Keine teilweise Übereinstimmung des Variablennamens für set, und
    • Nein set /a, du kannst also nicht rechnen
    • Nein, set /pwas bedeutet, dass das Lesen von Benutzereingaben schmerzhaft ist
    • keine set "var=value"Syntax
  • Nein %*für die gesamte Befehlszeile
  • Nein for /d, for /roder for /l. Nein for /f, das Lesen von Eingaben aus Dateien ist ebenfalls schwierig. Die einzige Form von forin DOS istFOR %variable IN (set) DO command [command-parameters]
  • Nein findstrund findunterstützt Unicode nicht
  • Keine speziellen Umgebungsvariablen wie%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
  • Eingeschränkte Fähigkeit zum Ändern von Verzeichnissen
    • Nein pushd/popd
    • Nein cd /d. Auch nein cd path with spacesund cd "path with spaces"aufgrund des Mangels an Unterstützung für lange Dateinamen
  • Nein color
  • Nein forfiles
  • Nein assoc(da keine GUI vorhanden ist und Dateien manuell über die Befehlszeile geöffnet werden müssen, ist keine Dateizuordnung erforderlich.)

Viele nützliche externe Befehle in Windows wie where, sort, more (in einigen DOS-Versionen), choice ... fehlen auch in DOS


Und das hat Rich Turner von MS gesagt

Auch Cmd! = MS-DOS!

Ich möchte auch auf ein häufiges Missverständnis hinweisen, das durch Artikel wie die oben genannten verewigt wird: Cmd <> MS-DOS!

Eigentlich:

  • Microsoft hat zuletzt am 16. September 2000 - vor 16 Jahren (zum jetzigen Zeitpunkt) eine "neue" Version von MS-DOS (v8.0 in Windows ME) ausgeliefert !!
  • MS-DOS war ein Betriebssystem (wenn auch nach heutigen Maßstäben ein relativ einfaches Betriebssystem), dessen primäre Benutzeroberfläche eine Befehlszeilen-Shell war, bis Windows 3.x und 9.x unter MS-DOS eintrafen und ausgeführt wurden
  • Die Skriptsprache der Befehlszeilen-Shell von MS-DOS war relativ knapp und mäßig leistungsfähig, es fehlten jedoch viele der umfangreicheren und fortschrittlicheren Funktionen, die wir in der heutigen PowerShell, Bash usw. genießen.
  • Während spätere Versionen von MS-DOS immer ausgefeilter wurden und einige ältere Assemblys durch neuen Code in 'C' hinzugefügt / ersetzt wurden, blieb ein Großteil von MS-DOS aus Effizienzgründen in x86-Assemblys geschrieben, und weil dies zu dieser Zeit der einzige Weg war Zugriff auf viele Hardwaregeräte und Peripheriegeräte erhalten. Dies machte MS-DOS für Nicht-x86-CPUs nicht portierbar. Wenn Sie dazu neigen, können Sie den Quellcode für MS-DOS v1.1 und v2.0 herunterladen, um zu sehen, wie viele der früheren Versionen von MS-DOS in x86-Assembly geschrieben wurden (Hinweis: so ziemlich alles es)!

https://devblogs.microsoft.com/commandline/rumors-of-cmds-death-have-been-greatly-exaggerated/


Weiterführende Literatur

Zusammenfassend lässt sich sagen, dass sie in Bezug auf die Funktionalität ein wenig ähnlich sind, sich aber ansonsten stark unterscheiden

phuclv
quelle
1
Wow, das scheint eine großartige Antwort für Was ist der Unterschied zwischen CMD und Eingabeaufforderung in Windows? auch
SamB