O prompt de comando e o MS-DOS são a mesma coisa?

12

Argumentei com meu amigo que o prompt de comando é apenas uma versão GUI do MS-DOS que funciona no ambiente de formulários do Windows. Ele discorda totalmente de mim.

Quem está certo?

user978733
fonte
2
O que sua pesquisa lhe disse até agora?
slhck
4
cmd.exeé um animal totalmente diferente do MS-DOS.
Sathyajith Bhat
7
O MS-DOS é um sistema operacional. O prompt de comando do Windows é uma interface que olhares como o MS-DOS.
Der Hochstapler

Respostas:

20

Isso já foi verdade uma vez, mas não é mais.

No MS-DOS # interface de linha de comando do Windows - Wikipedia :

Todas as versões do Microsoft Windows tiveram um MS-DOS como interface de linha de comando (CLI). Isso pode executar muitos utilitários de linha de comando do DOS e Win32, OS / 2 1.xe Posix na mesma sessão de linha de comando, permitindo a distribuição entre comandos. A interface do usuário e o ícone até o Windows 2000 seguiram a interface nativa do MS-DOS.

O Windows do consumidor (até 3.11, Win9x, WinME) era executado como uma GUI (Graphical User Interface) em execução no MS-DOS. Nos Windows 95, 98 e ME, a parte do MS-DOS foi integrada, tratando os dois sistemas operacionais como um pacote completo. A linha de comando acessou a linha de comandos do DOS (geralmente command.com), através de um módulo do Windows (winoldap.mod).

Uma nova linha do Windows (Windows NT) é inicializada através de um kernel cujo único objetivo é carregar o Windows. Não é possível executar aplicativos Win32 no sistema do carregador da maneira que o OS / 2, UNIX ou Consumer Windows pode iniciar sessões no modo de caractere.

Portanto, não, em todos os Windows da família NT (por exemplo, XP, Vista, 7, 8), o prompt de comando e o MS-DOS são visualmente semelhantes, mas bem diferentes.

Dennis
fonte
Na verdade, eu diria que nunca foi verdade. O equivalente a cmd.exeteria sido command.com, uma parte bastante pequena do MSDOS.
9

São coisas diferentes - o prompt de comando não é o MS-DOS - mas, no que diz respeito ao usuário, elas podem ser a mesma coisa que fazem as mesmas coisas.

Portanto, depende do seu ponto de vista. Do ponto de vista técnico, seu amigo está correto, mas, do ponto de vista do usuário, você está correto (como existem diferenças que um especialista detectaria).

ChrisF
fonte
Eu acho que você quer dizer o contrário, certo? Ele é aquele que é tecnicamente correto porque eles não são literalmente a mesma coisa, o amigo é quem praticamente corrige porque eles são a mesma coisa para o usuário.
21712 Brad
@ Brad - a maneira como eu li a pergunta foi que o OP disse que eles eram iguais, mas o amigo dele disse que não.
21712 Chris20
8

Não.

(A menos que sua definição de igualdade não ultrapasse » É uma interface de texto e eu posso executar programas a partir dela. « )

O que é executado quando você clica em Prompt de Comando no Menu Iniciar é o Processador de Comandos do Windows, também conhecido como cmd.exe. Seus comandos internos e sintaxe de script (incluindo muitas peculiaridades) são baseados no antigo command.comCP / M e no MS-DOS posterior, mas, além disso, são coisas completamente separadas. Além disso, command.comé um programa de 16 bits enquanto cmd.exeé um aplicativo de console nativo do Windows.

As coisas eram diferentes no Windows 95, 98 e ME, onde command.com seria executado em uma VM do MS-DOS com o Windows atuando como hipervisor (sim, eles já tinham esse tipo de coisa na época). Lá você tinha uma máquina virtual inteira executando o DOS. Mas no Windows NT, 2000, XP, Vista e 7 - não. O DOS só vive lá ntvdm.exeonde está a NT Virtual DOS Machine, que é apenas uma fina camada de emulação que captura chamadas que a CPU não pode executar diretamente (é por isso que funciona mais rápido, mas pior que o DOSBox).

De qualquer forma, até command.comera apenas um shell para o DOS. Não era o sistema operacional.

Lá dentro, eu me encolho cada vez que vejo pessoas se referindo a uma janela com texto cinza-preto como MS-DOS. Na grande maioria dos casos, eles realmente não sabem a que se referem.

Joey
fonte
4

Pelo que entendi, o MS-DOS é o sistema operacional do disco lançado pela Microsoft. O prompt de comando é uma interface não gráfica que permite interagir com seu sistema operacional.

O Prompt de Comando é um aplicativo de interpretador de linha de comando disponível na maioria dos sistemas operacionais Windows, oficialmente chamado de Processador de Comando do Windows, mas às vezes chamado de shell de comando. O prompt de comando é um programa do Windows que emula muitas das habilidades de linha de comando disponíveis no MS-DOS, mas na verdade não é o MS-DOS.

O prompt de comando é uma versão da GUI do command.com no MS-DOS. O cmd.exe é um aplicativo nativo do Windows, geralmente executando em um console do Win32. Isso permite tirar proveito dos recursos disponíveis para programas nativos na plataforma que, de outra forma, não estão disponíveis nos programas DOS.

Por exemplo, como o cmd.exe é um aplicativo de modo de texto nativo no OS / 2, ele pode usar canais reais nos pipelines de comando, permitindo que ambos os lados do pipeline sejam executados simultaneamente. Como resultado, é possível redirecionar o erro padrão no cmd.exe, diferente do COMMAND.COM. (O COMMAND.COM usa arquivos temporários e executa os dois lados em série, um após o outro.)

Na realidade, o cmd.exe é um programa do Windows que atua como um interpretador de linha de comando semelhante ao DOS. Geralmente é compatível, mas fornece extensões que abordam algumas das limitações do COMMAND.COM (as explicações acima são referidas na Wikipedia).

Thu Yein Tun
fonte
2

Seu amigo está certo. O MS-DOS é / era um sistema operacional (o Microsoft Disk Operating System é o que a sigla significa.) A interface do usuário do DOS é chamada de prompt de comando ( o ).

As primeiras versões do Windows rodavam sobre o DOS (tornando-os ambientes tecnicamente operacionais, embora eu não tenha mais certeza de que alguém faça essa distinção), mas os sistemas operacionais posteriores, começando com o Kernel do NT, não - o DOS se foi.

No entanto, as pessoas ainda precisavam da funcionalidade fornecida pelo prompt de comando e, em vez de command.com, obtivemos o command.exe (e atualmente cmd.exe), que, quando executado, fornece um prompt de comando.

Mas, esse não é o único prompt de comando (nem em qualquer lugar próximo do primeiro) que as pessoas usaram. Os Prompt de Comando também são chamados de Shells, e o Unix possui muitos, e os comandos são diferentes e geralmente muito poderosos. Falando em energia, a Microsoft criou um novo prompt de comando para o Windows chamado PowerShell, que é incrivelmente poderoso e interessante. Consulte a Wikipedia para obter mais informações: http://en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces

Mark Allen
fonte
> A interface do usuário do DOS é chamada de prompt de comando (). Também "linha de comando".
Synetech
e CLI ou interface da linha de comandos.
Mark Allen
Tecnicamente, a CLI é um tipo de interface, não uma instância específica de uma. Seria como chamar uma GUI do Windows (por exemplo, eu usei a GUI do Windows ). Você pode dizer, e é tecnicamente verdadeiro / exato, mas seria apenas estranho.
Synetech
Eu apenas chamo de prompt de comando. :)
Mark Allen
Acabei de chamá-lo de DOS (pelo menos, há algum tempo, tenho relutantemente chamado de DOS puro ).
Synetech
1

Eles não são os mesmos!

Aparentemente, muitas pessoas não percebem que o prompt do DOS e o prompt de comando do Windows não são a mesma coisa. Na verdade, são dois programas diferentes - COMMAND.COM e CMD.EXE, respectivamente.

Conheça seus prompts de comando

Em primeiro lugar, devido a diferenças na plataforma (DOS x Windows) e no interpretador (command.com vs cmd.exe), haverá diferenças óbvias como

  • O DOS é executado em tela cheia sem um modo de janela, portanto, nenhum mode con:cols=COL lines=ROWcomando para redimensionar o console e nenhum titlecomando
  • O DOS não suporta multitarefa, multiusuário, registro, permissões, nomes de arquivos longos, links simbólicos / hardlinks, rede, Unicode, discos dinâmicos e suporte a volumes avançados ... portanto, não há ferramentas para gerenciar esses

Mas também existem grandes diferenças nos recursos e na sintaxe dos comandos internos entre command.com e cmd.exe, além de algumas ferramentas externas nos dois ambientes. No MS-DOS existem

  • Sem funções, blocos de código ()e escopos locais, o que significa

    • for, if... deve ser seguido por um único comando na mesma linha
    • não exit /bougoto :eof
    • não setlocaleendlocal
    • gotosó pode pular para um rótulo, callsó pode iniciar outro arquivo em lote
    • comandos não podem ser agrupados como

      (
      command1
      command2
      ) >output.txt
      
  • Nenhum caractere de escape ^. Imprimir caracteres especiais seria muito trabalhoso e não havia possibilidade de executar comandos com várias linhas

  • Nenhum formato especial de if
    • não if cmdextversioneif defined
    • sem comparação numérica e sem distinção entre maiúsculas e minúsculas if [/i] string1 compare-op string2
  • Sem histórico de comandos e conclusão do argumento de comando
  • Nenhuma expansão indireta (por exemplo call set %%var%suffix%=string) de variáveis ​​e nenhuma expansão atrasada (por exemplo echo !var%suffix%!)
  • Nenhuma manipulação avançada de strings
    • sem ~xxxVsuporte variável
    • nenhum %variable:~num1,num2%suporte de substituição de substring ou string%variable:str=newstr%
  • Nenhum nome de variável parcial corresponde a sete
    • não, set /aentão você não pode fazer aritmética
    • não, o set /pque significa ler a entrada do usuário é uma dor
    • sem set "var=value"sintaxe
  • Não %*para toda a linha de comando
  • Não for /d, for /rou for /l. Não, for /fportanto, a leitura de entrada de arquivos também é difícil. A única forma de forno DOS éFOR %variable IN (set) DO command [command-parameters]
  • Não findstre findnão suporta Unicode
  • Nenhuma variável de ambiente especial como%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
  • Capacidade limitada de alteração de diretório
    • Não pushd/popd
    • Não cd /d. Também não cd path with spacese cd "path with spaces"devido à falta de suporte a nomes de arquivos longos
  • Não color
  • Não forfiles
  • Não assoc(porque não há GUI e os arquivos devem ser abertos manualmente na linha de comando, portanto, nenhuma associação de arquivo é necessária)

Muitos comandos externos úteis no Windows, como onde, tipo, mais (em algumas versões do DOS), opções ... também estão ausentes no DOS


E é isso que Rich Turner, da MS, disse

Além disso, Cmd! = MS-DOS!

Também quero destacar um equívoco comum perpetuado por artigos como os acima: Cmd <> MS-DOS!

De fato:

  • A Microsoft lançou pela última vez uma versão "nova" do MS-DOS (v8.0 no Windows ME), em 16 de setembro de 2000 - há 16 anos (no momento em que este artigo foi escrito) !!
  • O MS-DOS era um sistema operacional (embora um sistema operacional relativamente simples para os padrões atuais) cuja interface principal do usuário era um shell de linha de comando, até que o Windows 3.x e 9.x chegassem e rodassem no MS-DOS
  • A linguagem de script do shell de linha de comando do MS-DOS era relativamente concisa e moderadamente poderosa, mas não possuía muitos dos recursos mais avançados e avançados que desfrutamos no PowerShell, Bash, etc.
  • Enquanto as versões posteriores do MS-DOS cresceram em sofisticação e adicionaram / substituíram alguns assemblies mais antigos por um novo código escrito em 'C', grande parte do MS-DOS permaneceu gravada no assembly x86 para maior eficiência e porque era a única maneira no momento de tenha acesso a muitos dispositivos e periféricos de hardware. Isso tornou o MS-DOS não-portátil para CPUs não-x86. Se você quiser, você pode baixar o código-fonte do MS-DOS v1.1 e v2.0 para ver quanto das versões anteriores do MS-DOS foram escritas no assembly x86 (dica: praticamente todos os isto)!

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


Leitura adicional

Em conclusão, em termos de funcionalidade, eles podem ser um pouco semelhantes, mas, de outra forma, extremamente diferentes

phuclv
fonte
1
Uau, isso parece uma ótima resposta para Qual é a diferença entre o CMD e o prompt de comando no Windows? também
SamB 19/04/19