Provided by: manpages-fr_3.57d1p1-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 utilisant cette commande :

           shopt -s nullglob

       (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áàäâ] »,    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.57 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

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

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <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> ».