>Entre le moment où vous validez une commande et celui où cette commande est exécutée, le shell est capable de réaliser diverses substitutions : remplacer certains caractères jokers par les noms de fichiers correspondants, ou encore remplacer le texte d'une sous-commande par sa sortie standard.
>
>Il existe trois types de caractères jokers :
>
>`?' représente un caractère quelconque et un seul : `a?c' est un motif qui pourrait correspondre aux fichiers `abc', `a.c' et `a2c', mais qui ne correspondrait pas aux fichiers `ac', `a12c' ou `alinka.c' ;
>
>`*' représente une suite quelconque de caractères, de longueur nulle ou non : le motif `a*c' pourrait correspondre aux fichiers `abc', `ac' et `alinka.c', bref, à tout fichier dont le nom débuterait par le caractère `a' et finirait par le caractère `c' ;
>
>les délimiteurs `[]' représentent l'un quelconque des caractères qu'ils contiennent : `[abc]' correspond ainsi au caractère `a' ou au caractère `b' ou au caractère `c'. Le trait d'union `-' permet de spécifier une plage entière de caractères : `[a-m]' représente l'un des caractères compris entre `a' et `m' (les caractères `a', `b', `c', ..., `l', `m'). Enfin, lorsque le premier caractère de la liste est `!' ou `^', la signification des crochets est inversée : `[!a-m]' représente ainsi l'un quelconque des caractères NON compris entre `a' et `m'.
>
>
>Vous pouvez suivre la session suivante, qui utilise de façon intensive les caractères jokers, pour vous assurer qu'ils n'ont désormais plus de secrets pour vous :-)
>
>
% ls
lp lp12 lp2 lp42
% ls *
lp lp12 lp2 lp42
% ls *2
lp12 lp2 lp42
% ls lp[14]2
lp12 lp42
% ls ?p
lp
% ls /tmp
tata titi toto
% ls /tmp/t?t?
/tmp/tata /tmp/titi /tmp/toto
% ls /tmp/ti*
/tmp/titi
% ls /tmp/t?t[ao]
/tmp/tata /tmp/toto
% ls /tmp/t?t[!i]
/tmp/tata /tmp/toto
>
>
>Lorsque vous exécutez une commande, il vous est possible d'indiquer au shell d'exécuter dans un premier temps certaines sous-commandes et de les remplacer, dans le texte de votre commande, par leur sortie standard. Ce n'est qu'une fois cette substitution effectuée que le shell exécute votre commande : vous pouvez ainsi utiliser la sortie standard d'une commande comme argument d'une autre commande.
>
>Vous souhaitez afficher un message indiquant le nombre d'utilisateurs actuellement connectés à votre système... la commande `who' liste l'ensemble des utilisateurs connectés, et `wc -l' permet de compter un nombre de lignes : `who | wc -l' vous indique donc le nombre d'utilisateurs connectés. Il ne vous reste plus qu'à utiliser la commande `echo', qui ne fait qu'afficher les arguments qui lui sont passés, et la substitution de commande, grâce aux délimiteurs ```' ou `$()' :
>
>
% echo "Nombre d'utilisateurs connectés : `who | wc -l`"
Nombre d'utilisateurs connectés : 12
% echo "Nombre d'utilisateurs connectés : $(who | wc -l)"
Nombre d'utilisateurs connectés : 12
>
>