table of contents
other languages
other sections
GLOB(7) | Manuel du programmeur Linux | GLOB(7) |
NOM¶
glob - Développement des noms de fichiersDESCRIPTION¶
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.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 :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.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, commexv -wait 0 *.gif *.jpg
shopt -s nullglob
rm `find . -name "*~"`
rm -f fichier-non-existant `find . -name "*~"`
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.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 :[: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.
VOIR AUSSI¶
sh(1), fnmatch(3), glob(3), locale(7), regex(7)COLOPHON¶
Cette page fait partie de la publication 3.44 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> ».28 juillet 2012 | Linux |