Czy wiersz polecenia i MS-DOS to to samo?

12

Kłóciłem się z przyjacielem, że Wiersz polecenia jest tylko wersją GUI MS-DOS, która działa w środowisku formularzy Windows. Całkowicie się ze mną nie zgadza.

Kto ma rację?

użytkownik978733
źródło
2
Co powiedzieli ci dotychczasowe badania?
slhck
4
cmd.exejest zupełnie inną bestią niż MS-DOS.
Sathyajith Bhat
7
MS-DOS to system operacyjny. Wiersz polecenia systemu Windows to interfejs wyglądający jak MS-DOS.
Der Hochstapler

Odpowiedzi:

20

To kiedyś było prawdą, ale już nie jest.

Z MS-DOS # Interfejs wiersza polecenia systemu Windows - Wikipedia :

Wszystkie wersje systemu Microsoft Windows mają interfejs MS-DOS podobny do interfejsu wiersza polecenia (CLI). Może to uruchamiać wiele programów DOS, a w różny sposób narzędzi wiersza polecenia Win32, OS / 2 1.x i Posix w tej samej sesji wiersza poleceń, umożliwiając przesyłanie potoków między poleceniami. Interfejs użytkownika i ikona do systemu Windows 2000 były zgodne z natywnym interfejsem MS-DOS.

System operacyjny Windows (do 3.11, Win9x, WinME) działał jako graficzny interfejs użytkownika (GUI) działający na MS-DOS. W systemach Windows 95, 98 i ME część MS-DOS została zintegrowana, traktując oba systemy operacyjne jako kompletny pakiet. Wiersz poleceń uzyskał dostęp do wiersza poleceń DOS (zwykle command.com), poprzez moduł Windows (winoldap.mod).

Nowa linia systemu Windows (Windows NT) uruchamia się przez jądro, którego jedynym celem jest ładowanie systemu Windows. W systemie modułu ładującego nie można uruchamiać aplikacji Win32 w sposób, w jaki OS / 2, UNIX lub Consumer Windows mogą uruchamiać sesje w trybie znakowym.

Więc nie, w każdym systemie Windows z rodziny NT (np. XP, Vista, 7, 8) wiersz polecenia i MS-DOS są wizualnie podobne, ale całkiem inne.

Dennis
źródło
Właściwie powiedziałbym, że to nigdy nie była prawda. Odpowiednikiem cmd.exebyłaby command.comraczej niewielka część MSDOS.
9

Są to różne rzeczy - wiersz polecenia nie jest MS-DOS - ale jeśli chodzi o użytkownika, mogą być tym samym, co robią te same rzeczy.

To zależy od twojego punktu widzenia. Z technicznego punktu widzenia twój przyjaciel jest poprawny, ale z perspektywy użytkownika masz rację (coś w rodzaju różnic, które dostrzegłby ekspert).

ChrisF
źródło
Myślę, że masz na myśli odwrotnie, prawda? To on jest technicznie poprawny, ponieważ nie są dosłownie tym samym, przyjaciel jest tym, który praktycznie poprawia, ponieważ są tym samym dla użytkownika.
Brad
@Brad - sposób, w jaki czytałem pytanie, był taki, że OP powiedział, że są tacy sami, ale jego przyjaciel powiedział, że nie.
ChrisF,
8

Nie.

(O ile twoja definicja równości nie wykracza poza przeszłość » Jest to interfejs tekstowy i mogę z niego uruchamiać programy. « )

To, co jest uruchamiane po kliknięciu Wiersza polecenia w menu Start, to Windows Command Processor, alias cmd.exe. Wbudowane polecenia i składnia skryptów (w tym wiele dziwactw) oparte są na starożytnych command.comz CP / M i późniejszych MS-DOS, ale poza tym są to zupełnie osobne rzeczy. Ponadto command.comjest to program 16-bitowy, podczas gdy cmd.exejest rodzimą aplikacją konsoli Windows.

W Windows 95, 98 i ME sprawy wyglądały inaczej, gdzie command.com działałyby na maszynie wirtualnej MS-DOS z Windows działającym jako hypervisor (tak, mieli już takie rzeczy w tym czasie). Tam miałeś całą maszynę wirtualną z systemem DOS. Ale w Windows NT, 2000, XP, Vista i 7 - nie. DOS żyje tylko tam, ntvdm.exegdzie jest NT Virtual DOS Machine, która jest tylko cienką warstwą emulacji przechwytującą połączenia, których CPU nie może wykonać bezpośrednio (dlatego działa szybciej, ale gorzej niż DOSBox).

W każdym razie nawet command.combył tylko powłoką dla DOS. To nie był system operacyjny.

W środku kulę się za każdym razem, gdy widzę ludzi odnoszących się do okna z szarym tekstem jako MS-DOS. W zdecydowanej większości przypadków tak naprawdę nie wiedzą, do czego się odnoszą.

Joey
źródło
4

Z tego, co rozumiem, MS-DOS jest dyskowym systemem operacyjnym wydanym przez Microsoft. Wiersz polecenia to nie graficzny interfejs umożliwiający interakcję z systemem operacyjnym.

Wiersz polecenia jest aplikacją interpretera wiersza poleceń dostępną w większości systemów operacyjnych Windows, oficjalnie zwaną Windows Command Processor, ale czasami nazywaną powłoką poleceń. Wiersz polecenia to program systemu Windows, który emuluje wiele zdolności wiersza polecenia dostępnych w MS-DOS, ale tak naprawdę nie jest MS-DOS.

Wiersz polecenia to wersja GUI Command.com w MS-DOS. cmd.exe to natywna aplikacja Windows, zwykle działająca w konsoli Win32. Pozwala to na korzystanie z funkcji dostępnych dla rodzimych programów na platformie, które w innym przypadku byłyby niedostępne dla programów DOS.

Na przykład, ponieważ cmd.exe jest natywną aplikacją w trybie tekstowym w systemie OS / 2, może używać rzeczywistych potoków w potokach poleceń, umożliwiając jednoczesne działanie obu stron potoku. W rezultacie możliwe jest przekierowanie standardowego błędu w cmd.exe, w przeciwieństwie do COMMAND.COM. (COMMAND.COM używa plików tymczasowych i uruchamia obie strony szeregowo, jedna po drugiej).

W rzeczywistości cmd.exe to program systemu Windows, który działa jak interpreter wiersza poleceń podobny do DOS. Jest ogólnie kompatybilny, ale zawiera rozszerzenia, które rozwiązują niektóre ograniczenia COMMAND.COM (powyższe objaśnienia są powoływane przez Wikipedię).

Czw Yein Tun
źródło
2

Twój przyjaciel ma rację. MS-DOS jest / był system operacyjny (Microsoft Disk Operating System, co oznacza skrót). UI dla DOS jest nazywany ( szybka) poleceń.

Pierwsze kilka wersji systemu Windows działało na DOS (co czyni je technicznie działającymi środowiskami, chociaż nie jestem pewien, czy ktoś już to robi), ale późniejsze systemy operacyjne, zaczynając od jądra NT, nie zrobiły tego - DOS zniknął.

Jednak ludzie nadal potrzebowali funkcjonalności zapewnianej przez wiersz polecenia, a zamiast Command.com otrzymaliśmy polecenie.exe (a obecnie cmd.exe), które po uruchomieniu daje nam wiersz polecenia.

Ale to nie jedyny (ani nigdzie w pobliżu pierwszego) wiersz polecenia, z którego korzystali ludzie. Wiersze poleceń są również nazywane Powłokami, a Unix ma wiele, a polecenia są różne i często bardzo potężne. Mówiąc o Power, Microsoft stworzył nowy wiersz poleceń dla systemu Windows o nazwie PowerShell, który jest niezwykle potężny i interesujący. Zobacz Wikipedia po więcej: http://en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces

Mark Allen
źródło
> Interfejs użytkownika dla DOS nazywa się wierszem poleceń (). Również „wiersz poleceń”.
Synetech,
oraz CLI lub interfejs wiersza poleceń.
Mark Allen,
Technicznie CLI jest rodzajem interfejsu, a nie jego konkretnym wystąpieniem. To byłoby jak nazywanie Windows GUI (np. Użyłem GUI Windows ). Można to powiedzieć i jest to technicznie prawdziwe / dokładne, ale byłoby po prostu dziwne.
Synetech,
Po prostu nazywam to wierszem polecenia. :)
Mark Allen,
Po prostu nazywam to DOS (przynajmniej kiedyś, niechętnie nazywam to czystym DOS ).
Synetech,
1

Nie są takie same!

Najwyraźniej wiele osób nie zdaje sobie sprawy, że wiersz DOS i wiersz polecenia systemu Windows to nie to samo. W rzeczywistości są to dwa różne programy - odpowiednio COMMAND.COM i CMD.EXE.

Poznaj swoje polecenia

Po pierwsze ze względu na różnice w platformie (DOS vs Windows) i interpreter (Command.com vs cmd.exe), będą oczywiste różnice, takie jak

  • DOS działa na pełnym ekranie bez trybu okienkowego, więc nie ma mode con:cols=COL lines=ROWpolecenia zmiany rozmiaru konsoli ani żadnego titlepolecenia
  • DOS nie obsługuje wielozadaniowości, wielu użytkowników, rejestru, uprawnień, długich nazw plików, dowiązań symbolicznych / dowiązań twardych, sieci, Unicode, dysków dynamicznych i zaawansowanych woluminów ... więc nie ma narzędzi do zarządzania nimi

Istnieją jednak również znaczne różnice w możliwościach i składni wewnętrznych poleceń między Command.com i cmd.exe, a także niektórymi narzędziami zewnętrznymi w obu środowiskach. W MS-DOS są

  • Co oznacza brak funkcji, bloków kodu ()i lokalnych zasięgów

    • for, if... musi następować jedno polecenie w tym samym wierszu
    • nie exit /blubgoto :eof
    • nie setlocaliendlocal
    • gotomoże tylko przejść do etykiety, callmoże uruchomić tylko inny plik wsadowy
    • poleceń nie można grupować jak

      (
      command1
      command2
      ) >output.txt
      
  • Brak postaci ucieczki ^. Drukowanie znaków specjalnych byłoby uciążliwe i brak możliwości uruchamiania poleceń wielowierszowych

  • Brak specjalnych formatów if
    • nie if cmdextversioniif defined
    • bez porównywania ciągów liczbowych i bez rozróżniania wielkości liter if [/i] string1 compare-op string2
  • Brak historii poleceń i uzupełniania argumentów poleceń
  • Brak pośredniej ekspansji (np. call set %%var%suffix%=string) Zmiennych i brak opóźnionej ekspansji (np. echo !var%suffix%!)
  • Brak zaawansowanej manipulacji ciągiem
    • brak ~xxxVobsługi zmiennych
    • brak %variable:~num1,num2%wsparcia dla podciągów lub ciągów znaków%variable:str=newstr%
  • Brak częściowej nazwy zmiennej pasującej do seti
    • nie, set /awięc nie możesz wykonywać arytmetyki
    • nie, set /pco oznacza, że ​​czytanie danych wprowadzanych przez użytkownika jest uciążliwe
    • brak set "var=value"składni
  • Nie %*dla całej linii poleceń
  • No for /d, for /ralbo for /l. Nie ma for /fwięc trudności z odczytem danych wejściowych z plików. Jedyną formą forw DOS jestFOR %variable IN (set) DO command [command-parameters]
  • Nie findstri findnie obsługuje Unicode
  • Brak specjalnych zmiennych środowiskowych takich jak%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
  • Ograniczona możliwość zmiany katalogu
    • Nie pushd/popd
    • Nie cd /d. Również nie cd path with spacesi cd "path with spaces"ze względu na brak obsługi długich nazw plików
  • Nie color
  • Nie forfiles
  • Nie assoc(ponieważ nie ma GUI, a pliki muszą być otwierane ręcznie z wiersza poleceń, więc nie jest potrzebne powiązanie plików)

Wiele przydatnych zewnętrznych poleceń w systemie Windows, takich jak: sortowanie, więcej (w niektórych wersjach DOS), wybór ... brakuje również w DOS


I tak powiedział Rich Turner z MS

Również Cmd! = MS-DOS!

Chciałbym również wskazać na powszechne nieporozumienie utrwalane przez artykuły takie jak te powyżej: Cmd <> MS-DOS!

W rzeczywistości:

  • Microsoft ostatnio dostarczył „nową” wersję MS-DOS (wersja 8.0 w Windows ME), 16 września 2000 - 16 lat temu (od tego momentu) !!
  • MS-DOS był systemem operacyjnym (aczkolwiek względnie prostym systemem operacyjnym według dzisiejszych standardów), którego głównym interfejsem użytkownika była powłoka wiersza poleceń, dopóki nie pojawił się system Windows 3.x i 9.x i działał na MS-DOS
  • Język skryptowy powłoki wiersza poleceń MS-DOS był stosunkowo zwięzły i umiarkowanie potężny, ale brakowało mu wielu bogatszych i bardziej zaawansowanych funkcji, które lubimy we współczesnym PowerShell, Bash itp.
  • Podczas gdy późniejsze wersje MS-DOS rosły w stopniu wyrafinowania i dodawały / zastępowały niektóre starsze zestawy nowym kodem napisanym w „C”, większość MS-DOS pozostała napisana w zestawie x86 ze względu na wydajność, a ponieważ był to jedyny sposób uzyskaj dostęp do wielu urządzeń i urządzeń peryferyjnych. To spowodowało, że MS-DOS nie jest przenośny na procesory inne niż x86. Jeśli masz takie skłonności, możesz pobrać kod źródłowy dla MS-DOS v1.1 i v2.0, aby zobaczyć, ile wcześniejszych wersji MS-DOS zostało napisanych w asemblerze x86 (wskazówka: prawie wszystkie to)!

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


Dalsza lektura

Podsumowując, pod względem funkcjonalności mogą być nieco podobne, ale poza tym bardzo różne

phuclv
źródło
1
Wow, wygląda to na świetną odpowiedź na pytanie Jaka jest różnica między CMD a wierszem poleceń w systemie Windows? też
SamB