나는 친구와 함께 명령 프롬프트 는 Windows 양식 환경에서 작동하는 MS-DOS의 GUI 버전 일 뿐이라고 주장했다 . 그는 전적으로 동의하지 않습니다.
누구가 옳습니까?
답변
이것은 한 번 사실이지만 더 이상은 아닙니다.
에서 MS-DOS # 윈도우 명령 줄 인터페이스 – 위키 백과 :
모든 버전의 Microsoft Windows에는 명령 줄 인터페이스 (CLI)와 같은 MS-DOS가 있습니다. 이것은 동일한 명령 행 세션에서 많은 DOS와 다양한 Win32, OS / 2 1.x 및 Posix 명령 행 유틸리티를 실행할 수 있으므로 명령 간 파이핑이 가능합니다. 사용자 인터페이스와 Windows 2000까지의 아이콘은 기본 MS-DOS 인터페이스를 따릅니다.
소비자 Windows (최대 3.11, Win9x, WinME)는 MS-DOS 위에서 실행되는 GUI (Graphical User Interface)로 실행되었습니다. Windows 95, 98 및 ME에서는 MS-DOS 부분이 통합되어 두 운영 체제를 완전한 패키지로 취급합니다. 명령 줄은 Windows 모듈 (winoldap.mod)을 통해 DOS 명령 줄 (일반적으로 command.com)에 액세스했습니다.
새로운 Windows 계열 (Windows NT)은 Windows를로드하는 것이 유일한 목적인 커널을 통해 부팅됩니다. OS / 2, UNIX 또는 Consumer Windows가 문자 모드 세션을 시작할 수있는 방식으로 로더 시스템에서 Win32 응용 프로그램을 실행할 수 없습니다.
따라서 NT 제품군의 모든 Windows (예 : XP, Vista, 7, 8)에서 명령 프롬프트와 MS-DOS는 시각적으로 비슷하지만 상당히 다릅니다.
답변
그들은 다른 일을하다 – 명령 프롬프트 없음 MS-DOS입니다 -하지만 지금까지 사용자에 관한 한 그들은 수 는 같은 일을하는 것과 같은 일이.
그래서 그것은 당신의 관점에 달려 있습니다. 기술적 인 관점에서는 친구가 맞지만 사용자 관점에서는 정확합니다 (전문가가 파악할 수있는 차이점이 있습니다).
답변
아니.
(평등에 대한 정의가 과거를 넘어 가지 않는 한 » 텍스트 인터페이스이며 프로그램을 실행할 수 있습니다. « )
시작 메뉴에서 명령 프롬프트 를 클릭 하면 Windows 명령 프로세서 (일명) 가 실행됩니다 cmd.exe
. 내장 명령 및 스크립팅 구문 (많은 단점 포함)은 command.com
CP / M 및 그 이후의 MS-DOS 의 고대 를 기반으로 하지만 완전히 분리 된 것입니다. 또한 command.com
16 비트 프로그램이며 cmd.exe
기본 Windows 콘솔 응용 프로그램입니다.
command.com
Windows가 하이퍼 바이저 역할을하는 MS-DOS VM에서 실행 되는 Windows 95, 98 및 ME에서는 상황이 다릅니다 (예, 이미 당시에 그런 종류의 것들이있었습니다). DOS를 실행하는 전체 가상 머신이 있습니다. 그러나 Windows NT, 2000, XP, Vista 및 7에서는 – 아니요. DOS ntvdm.exe
는 CPU에 직접 실행할 수없는 호출을 캡처하는 씬 에뮬레이션 계층 인 NT Virtual DOS Machine에만 있습니다 (이로 인해 DOSBox보다 빠르지 만 작동하지 않는 이유).
어쨌든 command.com
DOS 용 쉘일뿐입니다. 운영 체제가 아니 었습니다.
내부에서, 사람들이 회색-검정색 텍스트가있는 창을 MS-DOS로 언급 할 때마다 실제로 울었습니다. 대부분의 경우에 그들은 그들이 무엇을 말하는지 실제로 모른다.
답변
내가 이해 한 바에 따르면 MS-DOS는 Microsoft가 출시 한 디스크 운영 체제입니다. 명령 프롬프트는 비 그래픽 인터페이스로 운영 체제와 상호 작용할 수 있습니다.
명령 프롬프트는 대부분의 Windows 운영 체제에서 사용할 수있는 명령 줄 인터프리터 응용 프로그램으로, 공식적으로 Windows 명령 프로세서라고하지만 때로는 명령 셸이라고합니다. 명령 프롬프트는 MS-DOS에서 사용할 수있는 많은 명령 줄 기능을 에뮬레이트하는 Windows 프로그램이지만 실제로는 MS-DOS가 아닙니다.
명령 프롬프트는 MS-DOS에서 command.com의 GUI 버전입니다. cmd.exe는 일반적으로 Win32 콘솔에서 실행되는 기본 Windows 응용 프로그램입니다. 따라서 DOS 프로그램에서는 사용할 수없는 플랫폼의 기본 프로그램에서 사용할 수있는 기능을 활용할 수 있습니다.
예를 들어 cmd.exe는 OS / 2의 기본 텍스트 모드 응용 프로그램이므로 명령 파이프 라인에서 실제 파이프를 사용하여 파이프 라인의 양쪽을 동시에 실행할 수 있습니다. 결과적으로 COMMAND.COM과 달리 cmd.exe의 표준 오류를 리디렉션 할 수 있습니다. (COMMAND.COM은 임시 파일을 사용하고 차례로 두면을 차례로 실행합니다.)
실제로 cmd.exe는 DOS와 같은 명령 줄 인터프리터 역할을하는 Windows 프로그램입니다. 일반적으로 호환되지만 COMMAND.COM의 일부 제한 사항을 해결하는 확장 기능을 제공합니다 (위의 설명은 Wikipedia에서 참조).
답변
당신의 친구가 옳습니다. MS-DOS는 /이었다 운영 체제 DOS에 대한 UI가 (라고 (마이크로 소프트 디스크 운영 시스템의 약자가 약자 것입니다.) ) 명령 프롬프트.
Windows의 처음 몇 가지 버전은 DOS에서 실행되었습니다 (기술적으로 운영 환경을 조성하지만 아무도 더 이상 확실하지 않습니다). 그러나 NT 커널로 시작한 OS는 그렇지 않았습니다 .DOS는 사라졌습니다.
그러나 사람들은 여전히 명령 프롬프트에서 제공하는 기능이 필요했으며 command.com 대신 command.exe (이제 cmd.exe)를 얻었습니다.이 명령을 실행하면 명령 프롬프트가 나타납니다.
그러나 이것이 사람들이 사용한 유일한 명령 프롬프트는 아닙니다. 명령 프롬프트는 쉘이라고도하며 Unix에는 많은 것이 있으며 명령이 다르고 종종 매우 강력합니다. Power에 관해 말하면 Microsoft는 매우 강력하고 흥미로운 PowerShell이라는 Windows 용 새 명령 프롬프트를 만들었습니다. 자세한 내용은 Wikipedia를 참조하십시오 : http://en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces
답변
그들은 동일하지 않습니다!
분명히 많은 사람들은 DOS 프롬프트와 Windows 명령 프롬프트가 같은 것이 아니라는 것을 인식하지 못합니다. 실제로는 COMMAND.COM과 CMD.EXE의 두 가지 다른 프로그램입니다.
먼저 플랫폼 (DOS와 Windows)과 인터프리터 (command.com vs cmd.exe)의 차이로 인해 다음 과 같은 명백한 차이 가 있습니다.
- 더 있도록 DOS는 창 모드없이 전체 화면에서 실행
mode con:cols=COL lines=ROW
명령은 콘솔없이 크기를 조정하지 않으려면title
명령을 - DOS는 멀티 태스킹, 멀티 유저, 레지스트리, 권한, 긴 파일 이름, 심볼릭 링크 / 하드 링크, 네트워크, 유니 코드, 동적 디스크 및 고급 볼륨 지원 등을 지원하지 않습니다.
그러나 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%!
) - 고급 문자열 조작 없음
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
유니 코드를 지원하지 않습니다 - 어떤 특별한 환경 변수없는 같은
%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
- 제한된 디렉토리 변경 기능
- 아니
pushd/popd
- 없음
cd /d
. 또한 어떠한cd path with spaces
및cd "path with spaces"
긴 파일 이름 지원의 부족으로 인해
- 아니
- 아니
color
- 아니
forfiles
- 아니요
assoc
(GUI가없고 파일을 명령 줄에서 수동으로 열어야하므로 파일 연결이 필요하지 않습니다)
위치, 정렬, 기타 (일부 DOS 버전에서) 선택과 같은 Windows에서 유용한 외부 명령이 많이 있습니다.
그리고 이것이 MS의 Rich Turner가 말한 것입니다
또한 Cmd! = MS-DOS!
또한 위의 기사와 같은 기사로 인해 일반적인 오해를 지적하고 싶습니다. Cmd <> MS-DOS!
사실로:
- Microsoft는 2000 년 9 월 16 일부터 16 년 전 (이 글을 쓰는 시점)에 “새”MS-DOS 버전 (Windows ME의 v8.0)을 마지막으로 배송했습니다 !!
- MS-DOS는 운영 체제 (오늘날 표준에 따라 비교적 간단한 OS 임에도 불구하고) Windows 3.x 및 9.x가 도착하여 MS-DOS 주변에서 실행될 때까지 기본 사용자 인터페이스가 명령 줄 셸인 운영 체제였습니다.
- MS-DOS의 명령 줄 셸 스크립팅 언어는 비교적 간결하고 적당하지만 강력하지만 현대적인 PowerShell, Bash 등에서 더 풍부하고 고급 기능이 부족합니다.
- 최신 버전의 MS-DOS는 정교하게 발전하고 ‘C’로 작성된 새 코드로 일부 이전 어셈블리를 추가 / 대체했지만 효율성을 위해 많은 MS-DOS가 x86 어셈블리로 작성된 상태로 남아있었습니다. 많은 하드웨어 장치 및 주변 장치에 액세스 할 수 있습니다. 이로 인해 MS-DOS는 비 x86 CPU로 이식 할 수 없습니다. 너무 기울어지면 실제로 MS-DOS v1.1 및 v2.0의 소스 코드를 다운로드하여 이전 버전의 MS-DOS가 x86 어셈블리로 작성된 양을 확인할 수 있습니다 (힌트 : 거의 모든 그것)!
https://devblogs.microsoft.com/commandline/rumors-of-cmds-death-have-been-greatly-exaggerated/
추가 자료
- MS-DOS 6.22의 제한 사항
- MS-DOS 6.22에서 Windows 8까지의 명령 및 가용성
- Windows 8의 새로운 (및 제거 된) 명령
- 최신
.bat
파일과 이전 MS DOS.bat
파일의 차이점은 무엇입니까? - Windows 배치 파일 : .bat 및 .cmd?
- cmd.exe : MS-DOS 프롬프트와 비교
결론적으로, 기능면에서는 그것들이 약간 비슷하지만, 그렇지 않으면 크게 다를 수 있습니다