Provided by: manpages-fr_3.32d0.2p4-1_all bug

NOM

       glob - Développement des noms de fichiers

DESCRIPTION

       Il  y  a  bien  longtemps,  dans  UNIX  V6, existait un programme nommé
       /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
       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.2, 3.13).

   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 guillemets) correspond à n'importe quel caractère.

       Un « * » (sans les guillemets) correspond à n'importe quelle chaîne,  y
       compris la chaîne vide.

       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 « ! ».

       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. Ainsi, « []-] » correspond uniquement aux
       caractères « ] » et « - », et « [--0] » correspond aux trois caractères
       « - », « . » et « 0 », puisqu'il ne peut y avoir de correspondance avec
       « / ».

       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 une barre oblique  inverse  « \ »,
       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,  « [[?*\] »  correspond  aux  quatre
       caractères « [ », « ? », « * » et « \ ».

   Chemins d'accès
       Le développement est appliqué à  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).

   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
           xv -wait 0 *.gif *.jpg
       alors qu'il n'y a peut-être aucun fichier *.gif présent (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 bash
       à  adopter  le  comportement  classique  en  positionnant  la  variable
       d'environnement allow_null_glob_expansion=true.

       (Des problèmes similaires se produisent ailleurs. Par exemple, de vieux
       scripts avec
           rm `find . -name "*~"`
       devraient être remplacés par des nouveaux scripts contenant
           rm -f fichier-non-existant `find . -name "*~"`
       pour éviter les messages d'erreurs si rm est  invoqué  avec  une  liste
       vide d'arguments).

NOTES

   Expressions rationnelles
       Notez   que   les   motifs  génériques  ne  sont  pas  des  expressions
       rationnelles  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
       rationnelle,  « * »  signifie  zéro  ou  plusieurs  copies de l'élément
       précédent.

       Maintenant que les expressions  rationnelles  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.

   Internationalisation et classes de caractères.
       Bien entendu, les  intervalles  ont  été  créés  à  l'origine  en  tant
       qu'intervalle  ASCII  où  « [ -%] »  signifie « [ !"#$%] » et « [a-z] »
       correspond à « toute lettre minuscule ». Certaines implémentations UNIX
       ont  généralisé ceci de manière à ce que l'intervalle X-Y corresponde à
       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 rationnelles. Nous avons vu précédemment 3 types d'éléments
       pouvant  se  trouver entre crochets. Plus précisément (i) une négation,
       (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

       [:alnum:]  [:alpha:]  [:blank:]  [:cntrl:]
       [:digit:]  [:graph:]  [:lower:]  [:print:]
       [:punct:]  [:space:]  [:upper:]  [:xdigit:]

       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   de   classement   (collating  element)  défini  dans  la
       localisation en cours. Il peut également s'agir de multicaractères.

       (vi) Des classes d'équivalence comme  « [=a=] »,  où  la  chaîne  entre
       « [= »  et  « =] »  est un élément de classement 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.]] ».

VOIR AUSSI

       sh(1), fnmatch(3), glob(3), locale(7), regex(7)

COLOPHON

       Cette page fait partie de  la  publication  3.32  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue à l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'équipe   de   traduction
       francophone        au        sein        du       projet       perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe Blaess  <URL:http://www.blaess.fr/christophe/>  (1996-2003),
       Alain   Portal   <URL:http://manpagesfr.free.fr/>  (2003-2006).  Julien
       Cristau et l'équipe francophone de traduction de Debian (2006-2009).

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».