Provided by: manpages-fr_4.13-4_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 « ? » (non inclus dans des crochets) correspond à n'importe quel caractère.

       Un « * » (non inclus dans des crochets) 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
       Globbing is applied on each of the components of a pathname separately. A '/' in  a  pathname  cannot  be
       matched  by  a  '?'  or  '*'  wildcard,  or  by  a range like "[.-0]". A range containing an explicit '/'
       character is syntactically incorrect. (POSIX requires that  syntactically  incorrect  patterns  are  left
       unchanged.)

       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 nosuchfile `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.

       Now that regular expressions have bracket expressions where the negation is indicated by a '^', POSIX has
       declared the effect of a wildcard pattern "[^...]" to be undefined.

   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) Equivalence class expressions, like "[=a=]", where the string between "[=" and "=]" is any collating
       element from its equivalence class, as defined for the current locale. For example,  "[[=a=]]"  might  be
       equivalent to "[aáaäâ]", that is, to "[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 5.10 du projet man-pages Linux. Une description du projet et des
       instructions  pour  signaler  des  anomalies et la dernière version de cette page peuvent être trouvées à
       l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.net>,     Florentin     Duneau    <fduneau@gmail.com>,    Simon    Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier    <barbier@debian.org>,    David     Prévot
       <david@tilapin.org> et Frédéric Hantrais <fhantrais@gmail.com>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       debian-l10n-french@lists.debian.org.

Linux                                             13 août 2020                                           GLOB(7)