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