Shell : la nature des commandes

Vos petites astuces, répertoire des tutoriels et astuces
Verrouillé
Avatar du membre
débitant
modérateur
Messages : 12173
Enregistré le : mar. 14 juil. 2015 18:22
Localisation : Lorraine France

Shell : la nature des commandes

Message par débitant »

Sauvegarde, suite à un effacement accidentel, du tuto créé par cyrille

Les différents types de commandes Linux


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

Code : Tout sélectionner

type commande

type -t commande

type -a commande
Généralement, on en distingue 5.

1. Les primitives

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 :

Code : Tout sélectionner

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

2. Les commandes externes (fournies par des fichiers)
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 :

Code : Tout sélectionner

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
3. Les alias
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.

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).

Exemple d'alias :

Code : Tout sélectionner

alias monipv6='curl "https://api64.ipify.org?format=json"'
Par exemple

Code : Tout sélectionner

type -a ls
ls est un alias vers « ls --color=auto »
ls est /usr/bin/ls
ls est /bin/ls

Code : Tout sélectionner

type -a monipv6
monipv6 est un alias vers « curl "https://api64.ipify.org?format=json" »

4. Les fonctions du shell


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.

Code : Tout sélectionner

type -a mp3CoverTag
mp3CoverTag est une fonction
mp3CoverTag () 
{ 
    for file in *.mp3;
    do
        eyeD3 --add-image "cover.jpg:FRONT_COVER" "$file";
    done
}


5. Les mots clefs
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.

Code : Tout sélectionner

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
Conclusion

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.
Verrouillé