Le shell, en plus d'être un langage de programmation, est aussi un interpréteur de commandes accessible depuis la console (aussi appelé terminal).
On peut y rencontrer des commandes de natures différentes. Pour connaître leur nature ou leur type, on utilisera la commande type
Usage
type commande type -t commande type -a commande
Généralement, on en distingue 5.
Ce sont des commandes internes (construites dans le shell (ainsi nommées “shell builtins”)), aussi appelées primitives du shell.
Ces commandes primitives ne génèrent pas de nouveaux processus, contrairement aux commandes externes.
Pour avoir de l'aide quant à ces commandes, il faut passer par help (help cd).
On trouve les commandes : set, cd, help, true, false, test, exec, echo, pwd…
Par exemple :
type -a cd echo pwd true
cd est une primitive du shell echo est une primitive du shell echo est /usr/bin/echo echo est /bin/echo pwd est une primitive du shell pwd est /usr/bin/pwd pwd est /bin/pwd true est une primitive du shell true est /usr/bin/true true est /bin/true
Les commandes externes sont des programmes compilés ou des scripts installés sur le système.
Contrairement aux commandes primitives, elles généreront un nouveau processus.
Pour accéder à l'aide de ces commandes, il faut passer par la commande man ou passer le paramètre --help à la commande.
Par exemple :
type -a mv cp rm
mv est /usr/bin/mv mv est /bin/mv cp est /usr/bin/cp cp est /bin/cp rm est /usr/bin/rm rm est /bin/rm
Les alias sont des raccourcis de commandes ou de groupes de commandes fastidieuses à saisir en raison de leur longueur ou de leurs options. En utilisant un alias, ces commandes sont plus simples à retenir puisque limitées à un mot unique.
Exemple d'alias :
alias monipv6='curl "https://api64.ipify.org?format=json"'
Les alias sont permanents s'ils ont été définis soit dans le fichier .bashrc soit dans le fichier .bash_aliases (si .bashrc contient une entrée vers ce fichier).
Par exemple
type -a ls
ls est un alias vers « ls --color=auto » ls est /usr/bin/ls ls est /bin/ls
type -a monipv6
monipv6 est un alias vers « curl "https://api64.ipify.org?format=json" »
Une fonction est une sous-routine du shell qui permet d'éviter répétitions, de diminuer les risques de bogues et d'augmenter la lisibilité du script pour un humain.
type -a mp3CoverTag
mp3CoverTag est une fonction mp3CoverTag () { for file in *.mp3; do eyeD3 --add-image "cover.jpg:FRONT_COVER" "$file"; done }
C'est le dernier type que l'on peut rencontrer. Il s'agit de mots clefs ou keywords, aussi connu sous le terme de mots réservés lesquels ne peuvent être utilisé pour définir des variables ou des fonctions. Ils permettront l’écriture de programmes bash ainsi que la structuration de commandes complexes.
type -a if else then
if est un mot-clé du shell else est un mot-clé du shell then est un mot-clé du shell
Voici un aperçu rapide de la nature des commandes que l'on peut trouver dans un système Linux. A côté de ces commandes, on peut également trouver des méta caractères, ou globs ou patterns mais ceux-ci ne seront pas abordés ici.