<Précédent | Table des matières | Suivant>
Extension de nom de chemin
Le mécanisme par lequel les caractères génériques fonctionnent est appelé extension du nom de chemin. Si nous essayons certaines des techniques que nous avons employées dans nos chapitres précédents, nous verrons qu'il s'agit en réalité d'extensions. Étant donné un répertoire personnel qui ressemble à ceci :
[moi@linuxbox ~]$ ls | ||
Bureau ls-output.txt | PHOTOS | Gabarits |
Documents Musique | public | Vidéos |
nous pourrions réaliser les extensions suivantes :
[moi@linuxbox ~]$ écho D*
Documents de bureau
[moi@linuxbox ~]$ écho D*
Documents de bureau
et :
[moi@linuxbox ~]$ écho *s
Documents Images Modèles Vidéos
[moi@linuxbox ~]$ écho *s
Documents Images Modèles Vidéos
ou même:
[moi@linuxbox ~]$ echo [[:supérieur:]]*
Documents de bureau Musique Images Modèles publics Vidéos
[moi@linuxbox ~]$ echo [[:supérieur:]]*
Documents de bureau Musique Images Modèles publics Vidéos
et en regardant au-delà de notre répertoire personnel :
[moi@linuxbox ~]$ écho /usr/*/share
/usr/kerberos/share /usr/local/share
[moi@linuxbox ~]$ écho /usr/*/share
/usr/kerberos/share /usr/local/share
Extension de nom de chemin de fichiers cachés
Comme nous le savons, les noms de fichiers commençant par un point sont masqués. L'expansion du nom de chemin respecte également ce comportement. Une extension telle que :
écho *
ne révèle pas les fichiers cachés.
Il peut sembler à première vue que nous pourrions inclure des fichiers cachés dans une extension en commençant le modèle par un point de début, comme ceci :
écho .*
Cela fonctionne presque. Cependant, si nous examinons les résultats de près, nous verrons que les noms "." et « . » apparaîtront également dans les résultats. Étant donné que ces noms font référence au répertoire de travail actuel et à son répertoire parent, l'utilisation de ce modèle produira probablement un résultat incorrect. Nous pouvons le voir si nous essayons la commande :
ls -d .* | moins
Pour mieux effectuer l'expansion du nom de chemin dans cette situation, nous devons utiliser un modèle plus spécifique :
écho .[!.]*
Ce modèle s'étend à chaque nom de fichier qui commence par un point, n'inclut pas de deuxième point et suivi de tout autre caractère. Cela fonctionnera correctement avec la plupart des fichiers cachés (bien qu'il n'inclue toujours pas les noms de fichiers avec plusieurs points de début). Les ls commande avec le -A L'option ("presque tous") fournira une liste correcte des fichiers cachés :
ls-A