Interprétation d'une ligne de commande

Les caractères spéciaux du shell sont interprétés dans un ordre bien précis.

  1. Isolement des mots séparés par les caractères espace, tabulation, saut de ligne.
  2. Traitement des caractères de protections ( ' ', " ", \).
  3. Substitution des variables ($)
  4. Substitution des commandes (``, $( ) )
  5. Substitution des caractères de génération des noms de fichiers (*, ?, [ ], ?( ), +( ), *( ), !( ), @( ))
  6. Traitement des tubes et redirections (|, <<, <, >, >>)
  7. Lancement de la commande

Exemple :

$ echo "\$HOME --> $HOME
> Mon login --> $(logname)
> Nous sommes le `date`
> La liste des fichiers :" * | nl > test ; cat test
     1  $HOME --> /home/toto
     2  Mon login --> toto
     3  Nous sommes le jeudi 20 octobre 2011, 08:27:05 (UTC+0200)
     4  La liste des fichiers : fichier1 fichier2 fichier3 fichier4
$

Interprétation :

  1. \$HOME (traitement des caractères de protection)
  2. $HOME (substitution des variables)
  3. $(logname) et `date` (substitution des commandes)
  4. * (substitution des caractères de génération des noms de fichiers)
  5. | nl > test (traitement des tubes et redirections)
  6. echo "...." ; cat test (exécution des commandes)