Provided by: manpages-fr_2.80.1-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.  « []-] »  correspond  uniquement  aux
       caractères « ] » et « - », alors que  « [--/] »  correspond  aux  trois
       caractères « - », « . », « / ».

       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 « \ », 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 daccè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 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écédent.

       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.

   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 à « tout caractère  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  régulières.  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  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 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  2.80  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

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