Я поспорил со своим другом, что командная строка - это просто версия MS-DOS с графическим интерфейсом, которая работает в среде форм Windows. Он полностью не согласен со мной.
Кто прав?
cmd.exe
это совершенно другой зверь из MS-DOS.
Я поспорил со своим другом, что командная строка - это просто версия 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 работала бы под управлением Windows в качестве гипервизора (да, у них уже было такое). Там у вас была целая виртуальная машина с DOS. Но на Windows NT, 2000, XP, Vista и 7 - нет. DOS живет только там, ntvdm.exe
где находится NT Virtual DOS Machine, представляющая собой тонкий слой эмуляции, фиксирующий вызовы, которые ЦП не может выполнять напрямую (поэтому он работает быстрее, но хуже, чем DOSBox).
В любом случае даже command.com
была просто оболочка для DOS. Это была не операционная система.
Внутри я на самом деле съеживаюсь каждый раз, когда вижу людей, обращающихся к окну с серо-черным текстом как MS-DOS. В подавляющем большинстве случаев они на самом деле не знают, что имеют в виду.
Насколько я понимаю, MS-DOS - это дисковая операционная система, выпущенная Microsoft. Командная строка - это неграфический интерфейс, который позволяет вам взаимодействовать с вашей операционной системой.
Командная строка - это приложение интерпретатора командной строки, доступное в большинстве операционных систем 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 называется ( ) командной строки.
Первые несколько версий Windows работали поверх DOS (что делало их технически работающими средами, хотя я не уверен, что кто-то больше делает это различие), но более поздние ОС, начиная с ядра NT, этого не сделали - DOS исчезла.
Тем не менее, люди все еще нуждались в функциональности, предоставляемой командной строкой, и вместо command.com мы получили command.exe (и в наши дни cmd.exe), который при запуске выдает нам командную строку.
Но это не единственная (и нигде рядом с первой) командная строка, которую использовали люди. Командные строки также называются оболочками, и в Unix их много, а команды разные и часто очень мощные. Говоря о Power, 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 много полезных внешних команд, таких как where, sort, more (в некоторых версиях DOS), choice ... также отсутствуют в DOS
И это то, что сказал 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 ?В заключение, по функциональности они могут быть немного похожи, но в остальном сильно отличаются