Next Previous Contents >

5. Les substitutions

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

5.1 La substitution des jokers

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

5.2 La substitution des commandes

>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
>
> > Next Previous Contents