Previous Up Next

2  Noms de fichiers, méta-caractères, et expressions régulières

Deux spécification des méta-caractères sont utilisées :

  1. Les méta-caractères du shell pour identifier des noms de fichiers. Ils sont utilisés directement par le shell et aussi par certaines commandes telle find.
  2. Les méta-caractères plus généraux utilisés par la plupart des commandes identifiant des expressions régulières.

2.1  Méta-caractères du shell

Métacaractères du shell.

Le shell étend les méta-caractères ? * [] [-] pour identifier des noms de fichiers qui correspondent à un motif donné. Placez-vous dans le répertoire /usr/bin. À l’aide des méta-caractères, listez par la commande ls (l’option -d de ls permet de lister les noms des répertoires plutôt que leur contenu) :

Recherche de fichiers.

La commande find permet de retrouver des fichiers. En particulier, il est possible de rechercher des fichiers dont le nom correspond à un motif comportant des méta-caractères du shell. Essayez

% find /usr/bin -name '*.sh'

2.2  Méta-caractères des expressions régulières

Méta-caractères des expressions régulières.

L’ensemble des méta-caractères est le suivant : \ | ( ) [ { ^ $ * + ?

Ainsi

^bonjour$
reconnaît bonjour seul ;
$
reconnaît une chaîne vide.

Par exemple,

L[y|i]s
reconnaît Lys ou Lis ;
^(De|Sujet|Date):@
reconnaît tout ce qui commence par De:@ ou Sujet:@ ou Date:@ ;

Ainsi,

a?
reconnaît 0 ou 1 a ;
a*
reconnaît 0, 1 ou plusieurs a ;
a+
reconnaît 1 ou plusieurs a ;
a{2}
reconnaît aa ;
a{2,3}
reconnaît aa ou aaa.

Par exemple :

[a-z]
reconnaît les lettres de a à z ;
[Bb]onjour
reconnaît Bonjour ou bonjour ;
<h[1-6]>
une balise HTML de titre par exemple.

Attention au tiret dans [ ], il represente un intervalle, si on veut l’utiliser comme littéral normal, il faut le mettre après le [ ou avant le ] , [a-z-].

Par exemple,

[^0-9]
reconnaît tout ce qui n’est pas des chiffres ;
[^1-6]
reconnaît tout sauf les chiffres de 1 à 6.

Attention, parce que ^ est entre [ ], sa sémantique est différente et ne signifie pas début de ligne !

Par exemple,

( ?ho)+
reconnaît ho, ho ho, ho ho ho, hohoho...
Utilisation des expressions régulières.

Certaines commandes, telles grep et sed, utilisent des expressions régulières pour identifier des motifs. La commande grep recherche les lignes de fichiers qui comprennent un motif correspondant à une expression régulière donnée. La syntaxe de grep est de la forme

grep [options] regexpr [fichiers]

Attention, pour éviter une confusion entre les interprétations de ces symboles spéciaux par grep ou par le shell, il est indispensable de « verrouiller » regexpr en plaçant l’expression entre guillemets .

Voici quelques exemples d’utilisation :

Essayez les commandes

% grep '-' LISEZ-MOI
% grep '^-' LISEZ-MOI
% grep '^-* ' LISEZ-MOI

Notez bien l’espace entre l’étoile et la quote dans cette dernière commande.

Échappement, quotes, double-quotes...

Les caractères \ ' " annulent, tout ou en partie, les effets des méta-caractères du shell. Essayez les commandes

% echo $USER
% echo "Bonjour $USER"
% echo 'Bonjour $USER'
% echo "* Bonjour $USER *"
% echo '* Bonjour $USER *'
% echo \* Bonjour $USER \*
% echo \* Bonjour \$USER \*
% echo '* Bonjour "$USER"'

Previous Up Next