Je cherchais la différence entre adduser
et useradd
, et une explication est que useradd
c'est une commande while adduser
est un script perl. Je comprends ce qu'est un script Perl, mais ce que je ne comprends pas, c'est ce qu'est command
alors exactement.
J'ai toujours pensé que les commandes aiment ls
, ln
, cd
etc sont tous des programmes simples écrits dans la langue que tout simplement faire une chose. Quelle est la différence entre ces "programmes simples" et un script perl?
Je sais bien sûr qu'un script (perl) n'est pas compilé mais interprété au moment de l'exécution, mais je suppose que ce n'est pas la seule différence?
linux
command-line
bash
perl
kramer65
la source
la source
Réponses:
En termes simples, une commande est une instruction (ou un ensemble d'instructions) à exécuter par un ordinateur.
Commandes autonomes
Utilitaires Unix fondamentaux tels que
ls
,ln
, etc. sont (généralement) en C et compilé pour être exécutables autonomes des programmes qui ne nécessitent pas un interprète à exécuter; ils nécessitent généralement l' installation de certains fichiers de bibliothèque sur le système, mais c'est une réponse à une autre question.Scripts
Un script est une collection de commandes et en fait, les scripts eux-mêmes sont considérés comme une commande.
Un script Perl est une séquence d'instructions Perl et nécessite un
perl
exécutable (autonome et compilé) programme pour interpréter les instructions Perl.Parfois, des scripts interprétatifs volumineux et complexes (dans des langages tels que Perl, Python et Ruby) sont également appelés programmes interprétés tandis que le terme script est réservé à des scripts plus courts et plus simples.
Un script shell est une séquence d'autres commandes (tout type de commande) et il nécessite un shell Unix tel que Bash pour interpréter le script. Depuis la page de manuel de Bash:
Coques intégrées
Les shells ont généralement des commandes intégrées qui ne sont ni des programmes autonomes ni des scripts. Au lieu de cela, ils font partie du shell lui-même et sont exécutés directement par le shell.
cd
est un exemple d'une telle commande intégrée.Parfois, il existe des commandes qui existent en tant que commandes intégrées au shell et en tant que commandes autonomes en même temps, par exemple, la
echo
commande.echo
exécute de lui-même le shell intégré tandis que la commande autonome peut être exécutée en fournissant son chemin complet.Exécutez la version intégrée d'écho:
Exécutez un
echo
programme autonome :Remarque: Les détails ci-dessus se réfèrent à un environnement Unix mais les mêmes principes s'appliquent à un environnement Windows.
la source
.bat
fichiers depuis de très nombreuses années).Une commande intégrée fait partie du shell. Un programme est exécuté par le shell.
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands
la source
useradd
n'est pas un shell intégré. Le site Web vient de dire "commande", pas "commande intégrée". En quoi cette explication est-elle pertinente pour cette question?Commande signifie simplement un moyen de dire à une application ou à un système de faire quelque chose.
Une application accepte généralement de nombreuses commandes différentes, soit à partir de l'interface graphique, soit à partir de
stdin
, mais d'autres méthodes sont possibles, par exemple un socket UNIX ou un canal nommé, une sorte d'API Web, une connexion RPC ou un autre protocole personnalisé.Une application qui ne fait qu'une seule chose, puis se ferme, généralement sans interface graphique, peut également être appelée une commande, car vous ne pouvez vraiment "donner" à cette application qu'une "commande" significative. " C'est ainsi que les petits programmes comme
ls
et tels fonctionnent et pourquoi ils sont appelés commandes.Mais vous n'appeleriez pas Photoshop une commande, mais vous émettriez certainement des commandes à l'intérieur via l'interface graphique.
Cependant, le terme peut signifier différentes choses pour différentes personnes. Dans votre exemple, la commande est utilisée pour décrire un exécutable exécuté directement, par opposition à un fichier qui nécessite un interpréteur de script pour fonctionner. La distinction peut être importante car lorsque vous exécutez un script Perl,
/usr/bin/perl
c'est le binaire qui s'exécute réellement (donc si vous voulez tuer un script Perl de longue durée, c'est ce que vous devez rechercher dansps
). Cependant, la plupart des shells ont des commandes "intégrées" qui sont des commandes au shell lui-même et ne provoquent pas l'exécution d'un exécutable externe. Par exemple,cd
est géré parbash
lui-même et n'appelle pas/sbin/cd
ou similaire.la source