Я посперечався зі своїм другом, що командний рядок - це лише версія GUI MS-DOS, яка працює в середовищі форм Windows. Він повністю не погоджується зі мною.
Хто правий?
cmd.exe
- це зовсім інший звір від MS-DOS.
Я посперечався зі своїм другом, що командний рядок - це лише версія GUI MS-DOS, яка працює в середовищі форм Windows. Він повністю не погоджується зі мною.
Хто правий?
cmd.exe
- це зовсім інший звір від MS-DOS.
Відповіді:
Це колись було правдою, але вже не.
З інтерфейсу командного рядка MS-DOS # Windows - Вікіпедія :
Усі версії Microsoft Windows мали інтерфейс командного рядка (CLI) типу MS-DOS. Це може запускати багато DOS та різного роду утиліти командного рядка Win32, OS / 2 1.x та Posix в одному сеансі командного рядка, дозволяючи проводити прокладку між командами. Користувацький інтерфейс та піктограма до Windows 2000 супроводжувались рідним інтерфейсом MS-DOS.
Споживчі Windows (до 3,11, Win9x, WinME) працювали як графічний інтерфейс користувача (GUI), що працює над MS-DOS. З Windows 95, 98 і ME частина MS-DOS була інтегрована, і обидві операційні системи розглядалися як повний пакет. Командний рядок отримав доступ до командного рядка DOS (зазвичай command.com) через модуль Windows (winoldap.mod).
Новий рядок Windows (Windows NT) завантажується через ядро, єдиною метою якого є завантаження Windows. Не можна запускати програми Win32 в системі завантажувача таким чином, що OS / 2, UNIX або Consumer Windows можуть запускати сеанси символьного режиму.
Так ні, у всіх Windows із сімейства NT (наприклад, XP, Vista, 7, 8) командний рядок та MS-DOS візуально схожі, але зовсім різні.
Це різні речі - командний рядок - це не MS-DOS - але, що стосується користувача, вони можуть бути тією ж справою, що й ті самі речі.
Тож це залежить від вашої точки зору. З технічної точки зору ваш друг це виправдає, але з точки зору користувача ви правильно (начебто існують відмінності, які помітить експерт).
(Якщо ваше визначення рівності не поширюється на минуле » Це текстовий інтерфейс, і я можу запускати програми з нього. « )
Що запускається, коли ви натискаєте командний рядок у меню "Пуск", це командний процесор Windows, ака cmd.exe
. Його вбудовані команди та синтаксис сценаріїв (включаючи багато химерностей) базуються на стародавніх command.com
з CP / M та пізніших MS-DOS, але крім цього вони є абсолютно окремими речами. Крім того, command.com
це 16-бітна програма, в той час cmd.exe
як це рідна програма консолі Windows.
У Windows 95, 98 і ME command.com
все було інакше, де вони запускалися в MS-DOS VM, причому Windows виступала як гіпервізор (так, такі речі вже були на той час). Там у вас була ціла віртуальна машина під управлінням DOS. Але на Windows NT, 2000, XP, Vista та 7 - ні. DOS живе лише там, у ntvdm.exe
якому знаходиться віртуальна машина DT NT, яка є лише тонким емуляційним шаром, що фіксує дзвінки, які ЦП не може виконувати безпосередньо (саме тому він працює швидше, але гірше, ніж DOSBox).
У будь-якому випадку, навіть command.com
був просто оболонкою для DOS. Це була не операційна система.
Всередині я насправді притискаю кожного разу, коли бачу людей, що посилаються на вікно із сіро-чорним текстом як MS-DOS. У переважній більшості випадків вони насправді не знають, про що йдеться.
Як я розумію, MS-DOS - це дискова операційна система, яку випустила Microsoft. Командний рядок - це не графічний інтерфейс, який дозволяє взаємодіяти з вашою операційною системою.
Command Prompt - програма для інтерпретації командного рядка, доступна в більшості операційних систем Windows, офіційно називається Windows Command Processor, але іноді називається командною оболонкою. Командний рядок - це програма Windows, яка імітує багато можливостей командного рядка, наявних у MS-DOS, але насправді це не MS-DOS.
Командний рядок - це версія графічного інтерфейсу command.com в MS-DOS. cmd.exe - це вбудована програма Windows, яка зазвичай працює в консолі Win32. Це дозволяє їй скористатися функціями, доступними для рідних програм на платформі, які в іншому випадку недоступні для програм DOS.
Наприклад, оскільки cmd.exe - це вбудована програма в текстовому режимі для OS / 2, вона може використовувати справжні труби в командних конвеєрах, дозволяючи обом сторонам конвеєра одночасно працювати. Як результат, можна перенаправити стандартну помилку в cmd.exe, на відміну від COMMAND.COM. (COMMAND.COM використовує тимчасові файли і запускає дві сторони послідовно, одна за одною.)
Насправді cmd.exe - це програма Windows, яка діє як інтерпретатор командного рядка, схожий на DOS. Він, як правило, сумісний, але пропонує розширення, які стосуються деяких обмежень COMMAND.COM (вище пояснення посилаються у Вікіпедії).
Ваш друг правий. MS-DOS є / була операційною системою (Microsoft Disk Operating System - це те, що означає абревіатура.) Користувацький інтерфейс для DOS називається командним рядком ( the ).
Перші кілька версій Windows працювали на вершині DOS (роблячи їх технічно операційними середовищами, хоча я не впевнений, що ніхто не робить цього розрізнення), але пізніші ОС, починаючи з ядра NT, не стали - DOS не було.
Однак людям все ще потрібна функціональність, що надається командним рядком, і замість command.com ми отримали command.exe (і в наші дні cmd.exe), який під час запуску дає нам командний рядок.
Але це не єдина (ані десь поблизу першої) командного рядка, яку люди використовували. Командні рядки також називаються оболонками, а Unix має багато, а команди різні та часто дуже потужні. Говорячи про владу, Microsoft створила новий командний рядок для Windows під назвою PowerShell, який неймовірно потужний і цікавий. Докладнішу інформацію див. У Вікіпедії: http://en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces
Мабуть, багато людей не усвідомлюють, що підказка DOS і командний рядок Windows - це не одне і те ж. Насправді це дві різні програми - COMMAND.COM та CMD.EXE відповідно.
По-перше, через відмінності платформи (DOS проти Windows) та інтерпретатора (command.com проти cmd.exe), будуть очевидні відмінності, наприклад
mode con:cols=COL lines=ROW
команди зміни розміру консолі та жодної title
командиАле також існують великі відмінності у можливостях та синтаксисі внутрішніх команд між command.com та cmd.exe, а також деякі зовнішні інструменти у двох середовищах. У MS-DOS є
Немає функцій, кодових блоків ()
та локальних областей, що означає
for
, if
... повинно дотримуватися одна команда в одному рядкуexit /b
абоgoto :eof
setlocal
іendlocal
goto
може лише перейти до мітки, call
може запустити лише інший пакетний файлкоманди не можуть бути згруповані як би
(
command1
command2
) >output.txt
Немає характеру втечі ^
. Друк спеціальних символів було б болем, а неможливістю виконання багаторядкових команд
if
if cmdextversion
іif defined
if [/i] string1 compare-op string2
call set %%var%suffix%=string
) змінних і не затримується розширення (наприклад echo !var%suffix%!
)~xxxV
підтримки змінної%variable:~num1,num2%
або заміни рядків%variable:str=newstr%
set
і
set /a
тому ви не можете займатися арифметикоюset /p
що означає читання вводу користувача - це більset "var=value"
синтаксису%*
для всього командного рядкаfor /d
, for /r
або for /l
. Не for /f
так важко читати вхід з файлів. Єдина форма for
DOS - цеFOR %variable IN (set) DO command [command-parameters]
findstr
, і find
не підтримує Unicode%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
pushd/popd
cd /d
. Також ні cd path with spaces
і cd "path with spaces"
через відсутність довгої підтримки імен файлівcolor
forfiles
assoc
(оскільки немає графічного інтерфейсу, і файли потрібно відкривати вручну з командного рядка, тому асоціація файлів не потрібна)Дуже багато корисних зовнішніх команд у Windows, як, де, сортування, більше (у деяких версіях DOS), вибір ... також відсутні у DOS
І саме це сказав MS MS Rich Turner
Також Cmd! = MS-DOS!
Я також хочу вказати на поширене оману, сприйняте такими статтями: Cmd <> MS-DOS!
Фактично:
- Microsoft востаннє поставила "нову" версію MS-DOS (v8.0 в Windows ME) 16 вересня 2000 - 16 років тому (станом на цей текст) !!
- MS-DOS була операційною системою (хоч і відносно простою ОС за сучасними мірками), основним інтерфейсом користувача якого була оболонка командного рядка, поки Windows 3.x і 9.x не прибули і не працювали на / навколо MS-DOS
- Мова сценаріїв оболонки командного рядка MS-DOS була порівняно короткою та помірно потужною, але їй бракувало багатьох більш багатих та вдосконалених функцій, якими ми користуємось у сучасних PowerShell, Bash тощо.
- Хоча пізніші версії MS-DOS зростали вдосконалено і додавали / замінювали деякі старіші збірки новим кодом, написаним на "C", значна частина MS-DOS залишалася написана в збірці x86 для підвищення ефективності, і тому, що це був єдиний спосіб на той час отримати доступ до багатьох апаратних пристроїв та периферійних пристроїв. Це зробило MS-DOS не портативним для процесорів, що не мають x86. Якщо ви настільки схильні, ви можете фактично завантажити вихідний код для MS-DOS v1.1 та v2.0, щоб побачити, скільки саме попередніх версій MS-DOS було написано в складі x86 (підказка: досить багато всього це)!
https://devblogs.microsoft.com/commandline/rumors-of-cmds-death-have-been-greatly-exaggerated/
.bat
файли відрізняються від старих .bat
файлів MS DOS ?На закінчення, функціонально вони можуть бути трохи схожими, але в іншому випадку сильно відрізняються