¿Comando versus programa?

¿Comando versus programa?

Estaba buscando la diferencia entre adduseryuseradd yuna explicaciónes useraddun comando mientras que adduseres un script en Perl. Entiendo qué es un script en Perl, pero lo que no entiendo es qué commandes exactamente entonces.

Siempre pensé que comandos como ls, lnetc. cdson programas simples escritos en cualquier idioma que simplemente hacen una cosa. ¿Cuál es la diferencia entre estos "programas simples" y un script en Perl?

Por supuesto, sé que un script (perl) no se compila sino que se interpreta en tiempo de ejecución, pero supongo que esa no es la única diferencia.

Respuesta1

En términos simples, un comando es una instrucción (o un conjunto de instrucciones) que debe ejecutar una computadora.

Comandos independientes

Las utilidades fundamentales de Unix como ls, ln, etc. están (generalmente) escritas en C y compiladas para ser ejecutables independientes.programasque no requieren la ejecución de un intérprete; normalmente requieren ciertosbibliotecaarchivos que se instalarán en el sistema, pero esa es una respuesta para otra pregunta.

Guiones

Un script es una colección de comandos y, de hecho, los scripts en sí mismos se consideran un comando.

Asecuencia de comandos Perles una secuencia de declaraciones de Perl y requiere un perlejecutable (independiente y compilado)programapara interpretar las declaraciones de Perl.

A veces, los scripts interpretativos grandes y complejos (en lenguajes como Perl, Python y Ruby) también se denominanprogramas interpretadosmientras que el términoguionestá reservado para guiones más cortos y simples.

Ascript de shelles una secuencia de otros comandos (cualquier tipo de comando) y requiere un shell Unix como Bash para interpretar el script. Desde la página de manual de Bash:

Bash es un intérprete de lenguaje de comandos compatible con sh que ejecuta comandos leídos desde la entrada estándar o desde un archivo.

Incorporaciones de carcasa

Las conchas suelen tenerincorporadocomandos que no son ni programas independientes ni scripts. En cambio, son parte del propio shell y se ejecutan directamente desde el shell. cdes un ejemplo de un comando integrado de este tipo.

Algunas veces hay comandos que existen como comandos integrados en el shell y como comandos independientes al mismo tiempo, por ejemplo, el echocomando.

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

echopor sí solo ejecuta el shell integrado, mientras que el comando independiente se puede ejecutar proporcionando su ruta completa.

Ejecute la versión incorporada de echo:

$ echo --version
--version

Ejecute el programa independiente 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: Los detalles anteriores se refieren a un entorno Unix, pero los mismos principios se aplican a un entorno Windows.

Respuesta2

Un comando integrado es parte del shell. Un programa es ejecutado por el shell.

Los comandos integrados están contenidos dentro del propio shell. Cuando el nombre de un comando incorporado se utiliza como la primera palabra de un comando simple (consulteComandos simples), el shell ejecuta el comando directamente, sin invocar otro programa. Los comandos integrados son necesarios para implementar funciones imposibles o inconvenientes de obtener con utilidades independientes.

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

Respuesta3

Dominiosimplemente significa una forma de decirle a una aplicación o sistema que haga algo.

Una aplicación normalmente aceptará muchos comandos diferentes, ya sea desde la GUI o desde stdin, pero son posibles otros métodos, por ejemplo, un socket UNIX o una canalización con nombre, algún tipo de API web, una conexión RPC o algún otro protocolo personalizado.

Una aplicación que hace sólo una cosa y luego sale, normalmente sin una GUI, también puede denominarse comando, porque en realidad sólo se puede "dar" a esta aplicación un "comando" significativo. Así es como lsfuncionan los programas pequeños como estos y por eso se llaman comandos.

Pero no llamarías a Photoshop un comando, pero ciertamente emitirías comandos dentro de él a través de la GUI.

Sin embargo, el término puede significar cosas diferentes para diferentes personas. En tu ejemplo,dominiose utiliza para describir un ejecutable que se ejecuta directamente, frente a un archivo que requiere un intérprete de script para funcionar. La distinción puede ser importante porque cuando ejecuta un script Perl, /usr/bin/perles el binario el que realmente se está ejecutando (por lo que si desea eliminar un script Perl de ejecución prolongada, eso es lo que debe buscar en ps). Sin embargo, la mayoría de los shells tienen comandos "integrados" que son comandos para el propio shell y no provocan la ejecución de un ejecutable externo. Por ejemplo, cdse maneja bashsolo y no llama /sbin/cdni nada parecido.

información relacionada