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

NOM

       glob - Developpement des noms de fichiers

DESCRIPTION

       Il  y  a  bien  longtemps,  dans  UNIX  V6, existait un programme nomme
       /etc/glob qui permettait de developper les motifs generiques  dans  les
       noms  de  fichiers.  Ce programme devint bientot une routine interne du
       shell.

       De nos jours, on trouve egalement une routine  de  bibliotheque  nommee
       glob(3) qui effectue le meme travail en etant invoquee par un programme
       utilisateur.

       Les regles de developpement sont les suivantes (POSIX.2, 3.13).

   Motifs g'en'eriques
       Une chaine est un motif generique si  elle  contient  un  ou  plusieurs
       caracteres   parmi   << ? >>,  << * >>  et  << [ >>.  Le  developpement
       (globbing) est l'operation qui transforme un  motif  generique  en  une
       liste  de  noms de fichiers correspondant a ce motif. La correspondance
       est definie ainsi :

       Un << ? >> (sans les guillemets) correspond a n'importe quel caractere.

       Un << * >> (sans les guillemets) correspond a n'importe quelle  chaine,
       y compris la chaine vide.

       Classes de caract`eres

       Une  expression du type << [...] >>, dans laquelle le premier caractere
       apres le << [ >> n'est pas un << ! >> est mise en  correspondance  avec
       un  seul  des  caracteres  contenus  entre les crochets. L'ensemble des
       caracteres cites ne peut pas  etre  vide,  ainsi,  le  crochet  fermant
       << ] >> peut etre present dans l'ensemble, a la condition qu'il soit en
       premiere place. Par consequent, la chaine << [][!] >> peut etre mise en
       correspondance  avec  l'un  des  trois  caracteres  << [ >>, << ] >> et
       << ! >>.

       Intervalles

       Il existe une convention particuliere, suivant laquelle deux caracteres
       separes   par   un   tiret  << - >>  indiquent  un  intervalle.  Ainsi,
       << [A-Fa-f0-9] >>  equivaut  a   << [ABCDEFabcdef0123456789] >>.   Pour
       inclure  un  tiret au sens litteral, il suffit de l'utiliser en premier
       ou  en  dernier  entre  les  crochets.  Ainsi,  << []-] >>   correspond
       uniquement aux caracteres << ] >> et << - >>, et << [--0] >> correspond
       aux trois caracteres << - >>, << . >> et << 0 >>, puisqu'il ne  peut  y
       avoir de correspondance avec << / >>.

       N'egation

       Une  expression  << [!...] >> correspond a n'importe quel caractere qui
       ne puisse pas etre mis en correspondance  avec  la  chaine  obtenue  en
       supprimant  le  << ! >>  initial (ainsi, << [!]a-] >> correspond a tout
       caractere sauf << ] >>, << a >> et << - >>).

       On peut desactiver le  comportement  special  des  caracteres  << ? >>,
       << * >>  et  << [ >>  en  les  faisant  preceder  par une barre oblique
       inverse << \ >>, ou, dans le cas d'une ligne de commande shell, en  les
       encadrant  par  des  guillemets.  Entre  crochets,  ces  caracteres  ne
       prennent  que  leur  signification   litterale.   Ainsi,   << [[?*\] >>
       correspond aux quatre caracteres << [ >>, << ? >>, << * >> et << \ >>.

   Chemins d'acc`es
       Le  developpement  est  applique  a  chaque composant du chemin d'acces
       separement. Un  << / >>  dans  un  chemin  ne  peut  pas  etre  mis  en
       correspondance avec un << ? >> ou << * >>, ni par un intervalle tel que
       << [.-0] >>. Un  intervalle  ne  peut  pas  contenir  explicitement  un
       caractere << / >>. Ceci declencherait une erreur de syntaxe.

       Si  un  nom  de fichier commence par un << . >>, ce caractere doit etre
       mis en correspondance explicitement (ainsi,  rm  *  ne  supprimera  pas
       .profile,  et tar c * n'archivera pas tous les fichiers ; tar c .serait
       preferable).

   Listes vides
       La definition simple et elegante fournie plus  haut  << transformer  un
       motif  generique en une liste de noms de fichiers correspondants >> est
       la definition UNIX originale. Elle autorisait la presence de  motif  se
       developpant en listes vides, comme
           xv -wait 0 *.gif *.jpg
       alors  qu'il n'y a peut-etre aucun fichier *.gif present (et on ne peut
       pas considerer cela comme une erreur). Toutefois, POSIX  reclame  qu'un
       motif  soit laisse inchange s'il est syntaxiquement incorrect, ou si la
       liste des noms de fichiers correspondants est vide. On peut forcer bash
       a  adopter  le  comportement  classique  en  positionnant  la  variable
       d'environnement allow_null_glob_expansion=true.

       (Des problemes similaires se produisent ailleurs. Par exemple, de vieux
       scripts avec
           rm `find . -name "*~"`
       devraient etre remplaces par des nouveaux scripts contenant
           rm -f fichier-non-existant `find . -name "*~"`
       pour  eviter  les  messages  d'erreurs si rm est invoque avec une liste
       vide d'arguments).

NOTES

   Expressions rationnelles
       Notez  que  les  motifs  generiques  ne  sont   pas   des   expressions
       rationnelles   bien   qu'ils   leur   ressemblent.  Tout  d'abord,  ils
       correspondent a des noms de fichiers, et pas a du texte. De  plus,  les
       conventions  ne  sont  pas identiques. Par exemple, dans une expression
       rationnelle, << * >> signifie zero ou  plusieurs  copies  de  l'element
       precedent.

       Maintenant  que  les  expressions  rationnelles disposent de composants
       entre crochets ou la negation est indiquee  par  un  << ^ >>,  POSIX  a
       precise que le motif generique << [^...] >> a un effet indefini.

   Internationalisation et classes de caract`eres.
       Bien  entendu,  les  intervalles  ont  ete  crees  a  l'origine en tant
       qu'intervalle  ASCII  ou   << [ -%] >>   signifie   << [ !"#$%] >>   et
       << [a-z] >>   correspond  a  << toute  lettre  minuscule >>.  Certaines
       implementations  UNIX  ont  generalise  ceci  de  maniere  a   ce   que
       l'intervalle X-Y corresponde a l'ensemble des caracteres dont les codes
       se trouvent entre ceux de X et  de  Y.  Neanmoins,  ceci  signifie  que
       l'utilisateur doit connaitre le codage utilise sur le systeme local. De
       plus, ceci ne fonctionne pas si l'ordre de l'alphabet local  n'est  pas
       celui  adopte  pour  le  codage  des  caracteres.  POSIX a alors etendu
       grandement la notation des expressions entre crochets autant  pour  les
       motifs  generiques que pour les expressions rationnelles. Nous avons vu
       precedemment 3 types d'elements pouvant se trouver entre crochets. Plus
       precisement  (i) une negation, (ii) des caracteres explicites, et (iii)
       des intervalles. POSIX specifie  les  intervalles  d'une  maniere  plus
       utile au niveau international, et ajoute trois nouveaux types :

       (iii)  Les  intervalles  X-Y comprenant tous les caracteres se trouvant
       entre X et  Y  (inclus)  dans  l'ordre  de  l'alphabet  decrit  par  la
       categorie LC_COLLATE de la localisation en cours.

       (iv) Des classes de caracteres comme

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

       Ainsi,  on  peut ecrire << [[:lower:]] >> a la place de << [a-z] >>, et
       que le comportement soit aussi valide  au  Danemark,  ou  il  existe  3
       lettres  posterieures  au  << z >>.  Ces  classes  de  caracteres  sont
       definies par la categorie LC_CTYPE de la localisation en cours.

       (v) Les symboles  groupant  plusieurs  lettres  comme  << [.ch.] >>  ou
       << [.a-acute.] >>, dans lesquels les chaines entre << [. >> et << .] >>
       sont un element  de  classement  (collating  element)  defini  dans  la
       localisation en cours. Il peut egalement s'agir de multicaracteres.

       (vi)  Des  classes  d'equivalence comme << [=a=] >>, ou la chaine entre
       << [= >> et << =] >> est  un  element  de  classement  definissant  une
       classe  d'equivalence  dans  la  localisation  en  cours.  Par exemple,
       << [[=a=]] >>  peut  etre   equivalent   a   << [a'a`a"a^a] >>   (Latin-1),
       c'est-a-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      etre       trouvees       a       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue a l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   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'equipe francophone de traduction de Debian (2006-2009).

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

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.

Linux                            24 aout 2003                          GLOB(7)