Les caractères spéciaux du shell sont interprétés dans un ordre bien précis.
- Isolement des mots séparés par les caractères espace, tabulation, saut de ligne.
- Traitement des caractères de protections ( ' ', " ", \).
- Substitution des variables ($)
- Substitution des commandes (``, $( ) )
- Substitution des caractères de génération des noms de fichiers (*, ?, [ ], ?( ), +( ), *( ), !( ), @( ))
- Traitement des tubes et redirections (|, <<, <, >, >>)
- 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 :
- \$HOME (traitement des caractères de protection)
- $HOME (substitution des variables)
- $(logname) et `date` (substitution des commandes)
- * (substitution des caractères de génération des noms de fichiers)
- | nl > test (traitement des tubes et redirections)
- echo "...." ; cat test (exécution des commandes)