Vous êtes sur la page 1sur 2

Les mtacaractres du Shell

Les shells UNIX et GNU/Linux nous offre la possibilit d'utiliser des formes abrges pour les noms
de fichiers grce des caractres. Ils interprtent de nombreux caractres spciaux appels
mtacaractres (couche d'abstraction suprieure pour reprsenter des donnes alphanumriques).

Usage frquent : *, ?
un astrisque *remplace 0 n caractres (toute chane de caractres) dans les noms de fichiers :
ex : ls cs* tous les fichiers commenant par cs
ls*.c tous les fichiers se terminant par .c
ls* tous les fichiers
ll/*/*.d tous les fichiers d'un rpertoire de /qui se terminent par .d
lld/home/* tous les sous-rpertoires de /home

un point d'interrogation ? remplace un seul caractre (n'importe quel caractre) dont la prsence est
obligatoire :
ex : lscshr? tous les fichiers dont les noms commencent par cshr et ne comportant qu'un
caractre supplmentaire
lsl*.???tous les fichiers (ou rpertoires) dont les noms commencent par le caractre "l" et
comportant ensuite au moins 3 caractres.
cp /lib/modules/*/*/*.? /home/toto toto copie tous les pilotes dans son rpertoire
personnel (les pilotes et modules on l'extention .o pour les noyaux <=2.4 et .ko pour le noyau 2.6 ).

Groupe de caractres : [abcd], [a-z], [^...]


Le modle [] permet de slectionner un lment de la liste ou de l'intervalle spcifi.
Le sparateur en ligne de commande tant l'espace, aucun espace ne doit tre mis au dbut ou la
fin entre [ ].
Plus prcisment, un modle de la forme X[abc...z]Y o X et Y peuvent tre vides, dsigne
l'ensemble des noms de fichiers suivants : XaY, XbY, XcY ... XzY.
Dans le cas d'une suite ordonne de caractres comme abc ...z, on peut utiliser la notation intervalle
a-z.
On peut mlanger les deux notations, comme dans [a-z].[0-9], ensemble des fichiers a.0, a.1, .., b.0
b.1 etc ...
ex : ll[adAD]*liste les fichiers du rpertoire courant dont le nom commence par a, b, c ou d
minuscule ou majuscule (y compris les sous-rpertoires)
cpventes10[09].sxc/home/toto/bilancopie tous les fichiers ventes100.sxc jusqu'
ventes109.sxc
lpr~toto/formation/plan9[345].htmlimprime les 3 fichiers plan93.html, plan94.html
plan94.html
ll[^an]*|lessn'importe quel caractre sauf ceux de la liste (le ^ symbolise la recherche
inverse).
Les variables : $
Une variable est une boite vide dans laquelle on peut stocker toute sorte dinformations. Ces
informations peuvent changer, do le terme variable. Une variable est identifie par un mot, cest le
nom de cette variable. Ce nom peut comporter des lettres des chiffres, ainsi que le caractre soulign
(underscore), mais ne peut commencer par un chiffre. Il existe des variables qui ne respectent pas
cette convention de nommage, mais il sagit alors de variables spciales cres par le shell lui-mme.
Vous pouvez crer des variables dans un script, mais elles existeront seulement dans ce script.
Le travail du shell peut tre paramtr par : des caractres spciaux appels mtacaractres (vu
prcdemment) et des variables en particulier des variables prdfinies.

Caractristiques d'une variable :


Nom : peut contenir des lettres, des chiffres et le caractre soulign "_"
Premier caractre : une lettre ou soulign (pas de chiffre)
Affectation : nom=contenu (sans espace)
Utilisation : $nom

Pour accder au contenu des variables du shell il faut placer le signe de rfrencement $ devant. Ds
que le shell rencontre ce signe dans une ligne de commande, il lit le mot plac derrire et va le
chercher dans la liste des variables. Si la dfinition de variable est trouve dans la liste, alors le
contenu de cette variable est insr en lieu et place du nom. Sinon si aucune variable ne correspond,
alors la rfrence la variable sera supprime et remplace par un texte vide :
ex : listing=os.txtdfinition et affectation d'une variable (os.txt : Unix [] Linux [] BSD)
cat$listingutilisation de la variable comme argument de la commande
Linux [] BSD[] UNIXrsultat : contenu du fichier os.txtaffich par cat
listing=kos.txtsi aucun fichier kos.txt existant
cat$listingaucun rsultat : rfrence variable supprime et remplace par un texte vide.

Substitution de variables et de commandes


Dans les scripts, les variables et paramtres, dsigns gnralement par un nom ou un numro
prcd de $, sont substitus par les chanes de caractres correspondant leurs valeurs lors de
l'interprtation du script. Il s'agit d'une simple substitution de chane de caractres, d'o le terme
substitution de variable. Paralllement la substitution de variables, il est possible d'oprer une
substitution de commandes : une commande est place entre parenthses suivant directement le
signe $.
ex : liste="lsl"la variable contient la chane de caractres (entre guillemets) de la commande
ls avec un argument (l).
$listeaffiche le contenu du rpertoire de la commande ls par substitution de variable.
liste=$(lsla|more)la variable contient une suite de commandes entre parenthses.
echo$liste le contenu de la variable de la substitution de commandes est affich avec la
commande echo.

Vous aimerez peut-être aussi