Comando versus programa?

Comando versus programa?

Eu estava procurando a diferença entre addusere useraddeuma explicaçãoé que useraddé um comando enquanto adduseré um script perl. Eu entendo o que é um script Perl, mas o que não entendo é o que commandé exatamente um then.

Sempre pensei que comandos como ls, ln, cdetc são programas simples escritos em qualquer linguagem que simplesmente fazem uma coisa. Qual é a diferença entre esses “programas simples” e um script perl?

É claro que sei que um script (perl) não é compilado, mas interpretado em tempo de execução, mas acho que essa não é a única diferença.

Responder1

Em termos simples, um comando é uma instrução (ou um conjunto de instruções) a ser executada por um computador.

Comandos independentes

Utilitários Unix fundamentais, como ls, ln, etc. são (geralmente) escritos em C e compilados para serem executáveis ​​independentesprogramasque não requerem um intérprete para serem executados; eles geralmente exigem certosbibliotecaarquivos a serem instalados no sistema, mas isso é uma resposta para outra pergunta.

Roteiros

Um script é uma coleção de comandos e, na verdade, os próprios scripts são considerados um comando.

AScript Perlé uma sequência de instruções Perl e requer um perlexecutável (autônomo e compilado)programapara interpretar as instruções Perl.

Às vezes, scripts interpretativos grandes e complexos (em linguagens como Perl, Python e Ruby) também são chamados deprogramas interpretadosenquanto o termoroteiroé reservado para scripts mais curtos e simples.

Ascript de shellé uma sequência de outros comandos (qualquer tipo de comando) e requer um shell Unix como o Bash para interpretar o script. Na página de manual do Bash:

Bash é um interpretador de linguagem de comando compatível com sh que executa comandos lidos da entrada padrão ou de um arquivo.

Shell integrado

As conchas geralmente têmconstruídas emcomandos que não são programas independentes nem scripts. Em vez disso, eles fazem parte do próprio shell e são executados diretamente pelo shell. cdé um exemplo desse comando integrado.

Algumas vezes existem comandos que existem como comandos internos do shell e como comandos independentes ao mesmo tempo, por exemplo, o echocomando.

$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo

echopor si só executa o shell integrado, enquanto o comando independente pode ser executado fornecendo seu caminho completo.

Execute a versão integrada do echo:

$ echo --version
--version

Execute o programa independente echo:

$ /usr/bin/echo --version
echo (GNU coreutils) 8.23
Packaged by Cygwin (8.23-4)
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Nota: As especificações acima referem-se a um ambiente Unix, mas os mesmos princípios se aplicam a um ambiente Windows.

Responder2

Um comando integrado faz parte do shell. Um programa é executado pelo shell.

Os comandos integrados estão contidos no próprio shell. Quando o nome de um comando interno é usado como a primeira palavra de um comando simples (vejaComandos Simples), o shell executa o comando diretamente, sem invocar outro programa. Os comandos integrados são necessários para implementar funcionalidades impossíveis ou inconvenientes de obter com utilitários separados.

http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands

Responder3

Comandosignifica apenas uma maneira de dizer a um aplicativo ou sistema para fazer algo.

Um aplicativo normalmente aceitará muitos comandos diferentes, seja da GUI, de stdin, mas outros métodos são possíveis, por exemplo, um soquete UNIX ou canal nomeado, algum tipo de API da web, uma conexão RPC ou algum outro protocolo personalizado.

Um aplicativo que faz apenas uma coisa e depois sai, normalmente sem uma GUI, também pode ser chamado de comando, porque você só pode "dar" a esse aplicativo um "comando" significativo. É assim que pequenos programas como lsesses funcionam e por que são chamados de comandos.

Mas você não chamaria o Photoshop de comando, mas certamente emitiria comandos dentro dele por meio da GUI.

No entanto, o termo pode significar coisas diferentes para pessoas diferentes. No seu exemplo,comandoestá sendo usado para descrever um executável que é executado diretamente, em vez de um arquivo que requer um interpretador de script para funcionar. A distinção pode ser importante porque quando você está executando um script Perl, /usr/bin/perlé o binário que está realmente sendo executado (então, se você quiser encerrar um script Perl de longa execução, é isso que você deve procurar em ps). No entanto, a maioria dos shells possui comandos "integrados" que são comandos para o próprio shell e não fazem com que um executável externo seja executado. Por exemplo, cdé tratado bashsozinho e não chama /sbin/cdou algo semelhante.

informação relacionada