Qual é a diferença entre o prompt de comando do windows e o shell do unix?

O COMMAND.EXE é basicamente um carregador de programa com algumas funções limitadas de filtragem, um vestígio de suas raízes CP / M e MS-DOS em sistemas operacionais simples de microprocessador de 8 e 16 bits, aumentado com algumas idéias emprestadas dos shells do Unix. O shell Bourne (sh) e seus descendentes, Korn (ksh), Bash (Bourne Again SHell) e uma série de outras variações, é uma linguagem de programação imperativa estruturada em bloco com recursos completos, com raízes em Algol, realizada como intérprete em um sistema operacional multitarefa e multiusuário, originalmente implementado em um minicomputador. O Unix também possui uma família de shell com sintaxe semelhante à linguagem de programação C, que por um tempo foi o shell de usuário padrão em muitos sistemas BSD, incluindo o OS / X da Apple, com o shell Bourne usado para tarefas de administração do sistema. O autor Bill Joy (que também escreveu o editor visual vi), com a idéia de que csh e tcsh seriam mais intuitivos para programadores em C. O Bash é usado quase universalmente agora, em todos os sistemas.

Os usuários do Windows seriam melhor atendidos usando o PowerShell em vez do command.exe.

Há um número enorme de diferenças.

O prompt de comando é essencialmente um emulador simples do MS-DOS. A linha de comando do MS-DOS nunca foi uma interface muito poderosa e foi projetada para executar um programa ou fornecer utilitários de gerenciamento de disco muito rudimentares, considerando que o MS-DOS funcionou provavelmente com o sistema de arquivos mais simples já criado, portanto, a linha de comando padrão do Windows foi construído em torno do que deveria estar familiarizado com usuários antigos de PCs e compatíveis IBM. Não foi realmente até PowerShell ou coisas como Cygwin que você veria uma linha de comando decente no Windows.

O shell típico do Unix (não existe um "shell do Unix", embora o padrão exija compatibilidade com Bourne.) É muito poderoso, pois foi projetado desde o início para ser usado por alguém que realmente pretenda administrar um computador e fornecer tarefas automatizadas complexas para ele. executar. O shell em si não é muito complicado, geralmente apenas fornecendo uma maneira de o ambiente ser controlado e maneiras de lidar com E / S e gerenciamento de processos / tarefas, mas foi projetado com base no pressuposto de que muitas ferramentas específicas com conjuntos de recursos muito específicos serão sempre esteja lá (os principais utilitários e similares). Como resultado, ao contrário do prompt de comando, é muito possível fazer uma lista de arquivos, canalize-a através de um comando para classificá-la por alguns critérios, que podem gerar os resultados em um arquivo armazenado em um sistema remoto, tudo em um comando real dado ao sistema.

Essencialmente, descobrir as diferenças levaria muito tempo e digitação, já que os shells do MS-DOS e do tipo Bourne são enormemente diferentes em quase todos os aspectos, exceto na ÚNICA coisa em comum de que são interfaces de linha de comando.

O DOS sempre foi basicamente projetado para ser mais ou menos apenas uma cola que mantinha o BIOS e um driver de sistema de arquivos FAT juntos por meio de um invólucro com uma CLI realmente barebones grampeada nele para torná-lo utilizável. Ele foi projetado para usuários domésticos que não sabiam como os computadores funcionam e, sob a suposição, haveria apenas um usuário usando um programa. Havia extensores e TSRs mais tarde na vida do DOS (principalmente para os tipos que não são da Microsoft.) Que lhe deram um pouco mais de capacidade, mas mesmo com todos esses extensores e TSRs, o DOS era e nunca é comparável a um sistema operacional com um kernel adequado executando coisas em um modo privilegiado e abstraindo o hardware e os recursos do espaço do usuário.

Um shell Unix é uma verdadeira interface do sistema e praticamente uma linguagem de programação completa por si só. Como ele sempre foi projetado para uma família de sistemas operacionais que evita qualquer forma de integração do espaço do usuário, o shell NÃO é o próprio sistema operacional, pois, para o sistema operacional, é apenas mais um aplicativo. Ao contrário do DOS, o próprio Unix foi projetado em torno de máquinas maiores e mais poderosas, com vários processos e usuários, e o shell foi amplamente projetado para ser usado pelas pessoas responsáveis ​​por mantê-lo funcionando corretamente. Como resultado, os shells Unix fornecem uma enorme quantidade de energia e recursos ideais para automação.

É mais curto dizer o que é comum: ambos exigem do usuário que os programas sejam executados em um loop.

Em vez disso, qual é a diferença?

Na época do DOS, havia o programa COMMAND.COM, que basicamente lançava programas inseridos pelo usuário na frente dos avisos A> nos anos 1980-1986, depois no ano 1987 C: \> (era personalizável, Eu até usei o 4DOS mais tarde, mas os anos da letra são provavelmente aqueles encontrados pela evolução que introduz discos rígidos, mas não há muita mudança no COMMAND.COM)

então, a partir de 1990, o Windows manteve a compatibilidade desse "comando" "prompt" dentro de uma janela, a origem do prompt de comando do nome windows. Suponho que você não esteja falando do PowerShell, que finalmente é um grande progresso no prompt de comando.

O prompt de comando do Windows manteve por uma quantidade impressionante de anos também os defeitos da interface de entrada, mesmo após a passagem do COMMAND.COM para o CMD.EXE, onde permaneceu algo que eu considerei um bug, pois a conclusão da guia feita no meio de uma linha cortava o restante do a linha (eu ainda a vejo no CMD.EXE da última atualização do Windows 10, e até tentei exigir uma correção do problema de divisão do Windows quando estava trabalhando na Microsoft (divisão do Office), não é "código legado" e existe não pretende corrigir nem um erro de entrada).

O ambiente gráfico do Windows (até o Windows 3.1, o Windows era um shell gráfico, nem aquela multitarefa com o recurso de copiar / colar entre programas), o Windows começou a ser um sistema operacional com o Windows 95. A Microsoft tinha seu MS-DOS paralelo à IBM DOS (que mais tarde ouvi dizer que a Microsoft o vendeu para a IBM que progrediu nas versões, mas não percebi que havia comprado o IBM DOS da IBM e visto um MSDOS ligeiramente diferente nos computadores compatíveis).

Devido ao histórico e à compatibilidade com versões anteriores, o prompt de comando no Windows é e continua sendo um shell muito limitado, o Microsoft PowerShell é um substituto poderoso e poderoso, possui um ótimo conceito (essencialmente os dados não são serializados para cadeia de caracteres e desserializados como o unix continuava fazendo com | (pipe), mas é mais eficiente que os objetos sejam canalizados entre as seqüências paramétricas de chamada de processamento).

O (s) shell (s) Unix possui um mecanismo de processamento de lançamento / entrada / saída que trabalha com fluxos de natureza de seqüência de caracteres (sequência de caracteres) e uma linguagem de programação intermediária poderosa, consulte `man sh` para obter mais detalhes; primeiro uso o shell em 1988 em um 3B2. usando terminais de fósforo verde e sua origem provavelmente são tão antigos quanto o unix (portanto, antes do prompt de comando, mas era mais poderoso e demonstrado ser cuidadosamente pensado, com menos limites, apreciei o backtick es `ls` que permite expandir o saída de um comando conforme foi digitado na linha de comando)