glob | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Intervalles | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Négation | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
On peut désactiver le comportement spécial des caractères « ? », « * » et « [ » en les faisant précéder par une contre oblique « \ », 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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
xv -wait 0 *.gif *.jpgalors 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 nosuchfile `find . -name "*~"`pour éviter les messages d'erreurs si rm est invoqué avec une liste vide d'arguments).
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Expressions régulières | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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. | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
(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 multi-caractè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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 15 septembre 1998 et révisée le 17 décembre 2007.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 7 glob ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |