1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
|
.\" Copyright (c) 1998 Andries Brouwer
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\"
.\"
.\" Traduction 15/09/1998 par Christophe Blaess (ccb@club-internet.fr)
.\" LDP-man-pages-1.20
.\"
.TH GLOB 7 "15 Septembre 1998" Linux "Manuel de l'administrateur Linux"
.SH NOM
glob \- D�veloppement de noms de fichiers.
.SH DESCRIPTION
Il y a bien longtemps, dans Unix V6, existait un programme nomm�
.I /etc/glob
qui permettait de d�velopper les motifs g�n�riques dans les noms de fichiers.
Ce programme devint bient�t une routine interne du shell.
De nos jours, on trouve �galement une routine de biblioth�que nomm�e
.BR glob (3)
qui effectue le m�me travail en �tant invoqu�e par un programme utilisateur.
Les r�gles de d�veloppement sont les suivantes (POSIX 1003.2, 3.13).
.SH "MOTIFS G�N�RIQUES"
Une cha�ne est un motif g�n�rique si elle contient un ou plusieurs
caract�res parmi `?', `*' et `['. Le d�veloppement (globbing) est l'op�ration
qui transforme un motif g�n�rique en une liste de noms de fichiers
correspondant � ce motif.
La correspondance est d�finie ainsi :
Un `?' (sans les apostrophes) correspond � n'importe quel caract�re.
A `*' (sans les apostrophes) correspond � n'importe quelle cha�ne, y compris
la cha�ne vide.
.SS "Classes de caract�res"
Une expression du type `[...]', dans laquelle le premier caract�re apr�s le `['
n'est pas un `!' est mise en correspondance avec un seul des caract�res contenus
entre les crochets.
L'ensemble des caract�res cit�s ne peut pas �tre vide, ainsi, le crochet fermant `]'
peut �tre pr�sent dans l'ensemble, � la condition qu'il soit en premi�re place.
Par cons�quent, la cha�ne `[][!]' peut �tre mise en correspondance avec l'un des
trois caract�res `[', `]' et `!'.
.SS Intervalles
Il existe une convention particuli�re, suivant laquelle deux caract�res s�par�s par
un tiret `-' indiquent un intervalle.
Ainsi, `[A-Fa-f0-9]' �quivaut � `[ABCDEFabcdef0123456789]'.
Pour inclure un tiret au sens litt�ral, il suffit de l'utiliser en premier ou en dernier
entre les crochets. `[]-]' correspond uniquement aux caract�res `]' et `-',
alors que `[--/]' correspond aux trois caract�res `-', `.', `/'.
.SS N�gation
Une expression `[!...]' correspond � n'importe quel caract�re qui ne puisse pas �tre
mis en correspondance avec la cha�ne obtenue en supprimant le `!' initial.
(ainsi, `[!]a-]' correspond � tout caract�re sauf `]', `a' et `-'.)
On peut d�sactiver le comportement sp�cial des caract�res `?', `*' et `[' en
les faisant pr�c�der par un backslash '\e', ou, dans le cas d'une ligne de commande
shell, en les encadrant par des guillemets.
Entre crochets, ces caract�res ne prennent que leur signification litt�rale.
Ainsi, `[[?*\e]' correspond aux quatres caract�res `[', `?', `*' et `\e'.
.SH CHEMINS D'ACC�S
Le d�veloppement est appliqu� a chaque composant du chemin d'acc�s
s�par�ment. Un `/' dans un chemin ne peut pas �tre mis en correspondance
avec un `?' ou `*', ni par un intervalle tel que `[.-0]'.
Un intervalle ne peut pas contenir explicitement un caract�re `/'. Ceci
d�clencherait une erreur de syntaxe.
Si un nom de fichier commence par un `.', Ce caract�re doit �tre mis en
correspondance explicitement. (Ainsi, `rm *' ne supprimera pas .profile,
et `tar c *' n'archivera pas tous les fichiers ; `tar c .' serait pr�f�rable.)
.SH "LISTES VIDES"
La d�finition simple et �l�gante fournie plus haut `transformer un motif g�n�rique
en une liste de noms de fichiers correspondants' est la d�finition Unix
originale. Elle autorisait la pr�sence de motif se d�veloppant en listes
vides, comme
.br
.nf
xv -wait 0 *.gif *.jpg
.fi
alors qu'il n'y a peut-�tre aucun fichiers *.gif pr�sents (et on ne
peut pas consid�rer cela comme une erreur).
Toutefois, POSIX r�clame qu'un motif soit laiss� inchang� s'il
est syntaxiquement incorrect, ou si la liste des noms de fichiers
correspondants est vide.
On peut forcer
.I bash
� adopter le comportement classique en positionnant la variable
d'environnement
.IR allow_null_glob_expansion=true .
(Des probl�mes similaires se produisent ailleurs. Par exemple des
vieux scripts ayant
.br
.nf
rm `find . -name "*~"`
.fi
devraient �tre remplac�s par des nouveaux scripts contenant
.br
.nf
rm -f nosuchfile `find . -name "*~"`
.fi
pour �viter les messages d'erreurs si
.I rm
est invoqu� avec une liste vide d'arguments).
.SH NOTES
.SS Expressions r�guli�res
Notez que les motifs g�n�riques ne sont pas des expressions
r�guli�res bien qu'ils leur ressemblent. Tout d'abord, ils
correspondent � des noms de fichiers, et pas � du texte, de plus
les conventions ne sont pas identiques, par exemple, dans une
expression r�guli�re, `*' signifie z�ro ou plusieurs copies
de l'�l�ment pr�cedent.
Maintenant que les expressions r�guli�res disposent de composants
entre crochets o� la n�gation est indiqu�e par un `^', POSIX
a pr�cis� que le motif g�n�rique `[^...]' a un effet ind�fini.
.SS Internationalisation et cmasses de caract�res.
Bien entendu, les intervalles ont �t� cr��s � l'origine en tant
qu'intervalle ASCII o� `[ -%]' signifie `[ !"#$%]' et `[a-z]' correspond
� "tout caract�re minuscule".
Certaines impl�mentations Unix ont g�n�ralis� ceci de mani�re � ce que
l'intervalle X-Y correspondent � l'ensemble des caract�res dont les
codes se trouvent entre ceux de X et de Y. N�anmoins, ceci signifie
que l'utilisateur doit conna�tre le codage utilis� sur le syst�me local.
De plus ceci ne fonctionne pas si l'ordre de l'alphabet local n'est
pas celui adopt� pour le codage des caract�res.
POSIX a alors �tendu grandement la notation des expressions entre crochets
autant pour les motifs g�n�riques que pour les expressions r�guli�res.
Nous avons vu pr�c�dement 3 types d'�l�ments pouvant se trouver entre
crochets. Plus pr�cis�ment (i) une negation, (ii) des caract�res explicites,
et (iii) des intervalles. POSIX sp�cifie les intervalles d'une mani�re
plus utile au niveau international, et ajoute trois nouveaux types :
(iii) Les intervalles X-Y comprenant tous les caract�res se trouvant entre X
et Y (inclus) dans l'ordre de l'alphabet d�crit par la cat�gorie LC_COLLATE de
la localisation en cours.
(iv) Des classes de caract�res comme
.br
.nf
[:alnum:] [:alpha:] [:blank:] [:cntrl:]
[:digit:] [:graph:] [:lower:] [:print:]
[:punct:] [:space:] [:upper:] [:xdigit:]
.fi
ainsi, on peut �crire `[[:lower:]]' � la place de `[a-z]', et que le
comportement soit aussi valide au Danemark, o� il existe 3 lettres
post�rieures au `z'.
Ces classes de caract�res sont d�finies par la cat�gorie LC_CTYPE
de la localisation en cours.
(v) Les symboles groupant plusieurs lettres comme `[.ch.]' ou `[.a-acute.]',
dans lesquels les cha�nes entre `[.' et `.]' sont un �l�ment d�fini dans
la localisation en cours. Il peut �galement s'agir de multi-caract�res.
(vi) Des classes d'�quivalence comme `[=a=]', o� la cha�ne entre `[=' et `=]'
est un �l�ment d�finissant une classe d'�quivalence dans la localisation en cours
par exemple `[[=a=]]' peut �tre �quivalent � `[a����]' (Latin-1), c'est � dire
`[a[.a-acute.][.a-grave.][.a-umlaut.][.a-circumflex.]]'.
.SH "VOIR AUSSI"
.BR sh (1),
.BR glob (3),
.BR fnmatch (3),
.BR locale (7),
.BR regex (7).
.SH TRADUCTION
Christophe Blaess, 1998.
|