Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Test Morsels (PS5) - Un mélange étrange de rogue-like, de collecte de créa...
[Actualités]
Suite à l'augmentation du prix du Game Pass, Microsoft offre de l'argent aux jo...
[Actualités]
Le NVIDIA chinois, fait son entrée en bourse. Les cartes graphiques à plus de ...
[Actualités]
La PS5 Pro recevra une mise à jour majeure « PSSR 2 » avec une super-résolut...
[Actualités]
Netflix va racheter Warner Bros. et HBO Max pour 82,7 milliards de dollars
[Actualités]
Intel suspend la vente d'une division clé à la dernière minute
[Actualités]
Nouvelle panne de Cloudflare. La moitié d'Internet est à nouveau hors service.
[Actualités]
L'iPhone Air a perdu la moitié de son prix en dix semaines.
[Actualités]
007 First Light - Découvrez le premier épisode de "Beyond the Light"
[Actualités]
Test Bus World (Xbox Series X) - Conduisez un bus dans des situations périlleuses
[Articles]
Morsels
[Articles]
Bus World
[Articles]
Trillion Game tome 10
[Articles]
Sonic Wings Reunion
[Articles]
Eclipse humaine tome 5
[Articles]
Plus de la moitié des informaticiens belges subissent une charge de travail sup...
[Articles]
L’iranien MuddyWater se fait passer pour Snake et vise des infrastructures en ...
[Articles]
Les nouvelles aventures de Barbe-Rouge tome 5 : L'Île aux Chimères
[Articles]
Marry My Husband tome 1 édition collector
[Articles]
Neon Inferno
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] glob - Développement des noms de fichiers. [size=18] [b]Description[/b] [/size] Il y a bien longtemps, dans Unix V6, existait un programme nommé [i]/etc/glob[/i] 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 [b]glob (3)[/b] qui effectue le même travail en étant invoquée par un programme utilisateur. Les règles de développement sont les suivantes (POSIX 1003.2, 3.13). [size=18] [b]Motifs gÉnÉriques[/b] [/size] 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 apostrophes) correspond à n'importe quel caractère. A `*' (sans les apostrophes) correspond à n'importe quelle chaîne, y compris la chaîne vide. [b]Classes de caractères[/b] 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 `!'. [b]Intervalles[/b] 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. `[]-]' correspond uniquement aux caractères `]' et `-', alors que `[--/]' correspond aux trois caractères `-', `.', `/'. [b]Négation[/b] 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 un backslash 'e', 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, `[[?*e]' correspond aux quatre caractères `[', `?', `*' et `e'. [size=18] [b]Chemins daccÈs[/b] [/size] Le développement est appliqué a 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.) [size=18] [b]Listes vides[/b] [/size] 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 [b][/b] .nf xv -wait 0 *.gif *.jpg .fi 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 [i]bash[/i] à adopter le comportement classique en positionnant la variable d'environnement [b]allow_null_glob_expansion=true .[/b] (Des problèmes similaires se produisent ailleurs. Par exemple de vieux scripts avec [b][/b] .nf rm `find . -name "*~"` .fi devraient être remplacés par des nouveaux scripts contenant [b][/b] .nf rm -f nosuchfile `find . -name "*~"` .fi pour éviter les messages d'erreurs si [i]rm[/i] est invoqué avec une liste vide d'arguments). [size=18] [b]Notes[/b] [/size] [b]Expressions régulières[/b] Notez que les motifs génériques ne sont pas des expressions régulières 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 régulière, `*' signifie zéro ou plusieurs copies de l'élément précédent. 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. [b]Internationalisation et classes de caractères.[/b] Bien entendu, les intervalles ont été créés à l'origine en tant qu'intervalle ASCII où `[ -%]' signifie `[ !"#$%]' et `[a-z]' correspond à "tout caractère minuscule". Certaines implémentations Unix ont généralisé ceci de manière à ce que l'intervalle X-Y correspondent à 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 régulières. 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 [b][/b] .nf [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:] .fi 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.]]'. [size=18] [b]Voir aussi[/b] [/size] [b]sh (1),[/b] [b]glob (3),[/b] [b]fnmatch (3),[/b] [b]locale (7),[/b] [b]regex (7)[/b] [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 1998-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Informations
Besoin d’avis sur l’UX de mon mini-projet web (et plus globalement sur ce qui vous rebute sur un site) ?
Software
problème sur windows 10
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Jeux Vidéos
Test Morsels (PS5) - Un mélange étrange de rogue-like, de collecte de créatures et de twin-stick shooter
Microsoft
Suite à l'augmentation du prix du Game Pass, Microsoft offre de l'argent aux joueurs.
Matériel
Le NVIDIA chinois, fait son entrée en bourse. Les cartes graphiques à plus de 30 cœurs pourraient bientôt alimenter le monde entier.
Consoles
La PS5 Pro recevra une mise à jour majeure « PSSR 2 » avec une super-résolution multi-images en 2026
Vidéo
Netflix va racheter Warner Bros. et HBO Max pour 82,7 milliards de dollars
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2025
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?