suivant chapitre avant contenu index

Suivant: Entrées et sorties Chapitre: Didacticiel Linux Avant: Les différents shells


Caractères génériques

        Une fonctionnalité très puissante dans la plupart des shells UNIX est la possibilité de référencer plus d'un nom de fichier à l'aide de caractères spéciaux. Ces caractères génériques vous permettent de désigner tous les fichiers dont, par exemple, le nom contient la lettre `` n''.

    Le caractère `` *'' remplace n'importe quel caractère ou chaîne de caractères dans un nom de fichier. Par exemple, lorsque vous utilisez `` *'' dans un nom de fichier, le shell le remplace par toutes les substitutions possibles à partir des fichiers du répertoire que vous désignez.

Voici un petit exemple. Supposons que Marcel possède les fichiers cognac, rhum et litron dans son répertoire personnel.

Pour accéder à tous les fichiers dont le nom contient la lettre ``o'', nous pouvons utiliser la commande

Comme vous le voyez, le caractère `` *'' a été remplacé par toutes les substitutions possibles à partir des fichiers contenus dans le répertoire.

L'usage de `` *'' tout seul correspond simplement à tous les fichiers, puisque tous les caractères lui correspondent.

Voici encore quelques exemples.

    L'action de changer un caractère générique en noms de fichier est appelée expansion, et est réalisée par le shell. Ceci est important: les commances individuelles, comme ls, ne voient jamais le caractère `` *'' dans leur liste de paramètres. Le shell expanse l'expression pour inclure tous les noms de fichiers possibles avant d'appeler le programme. En fait, la commande

este expansée par le shell et devient en réalité

  Une note importante à propos du caractère `` *''. L'utilisation de ce caractère générique ne prendra pas en compte les noms de fichiers qui commencent par un simple point (`` .''). C'est une convention; ces fichiers sont traités comme fichiers "cachés"; ils ne sont pas vraiment cachés, mais par défaut ils ne se voient pas, et ne sont pas concernés par le caractère `` *''.

Voici un exemple. Nous avons déja expliqué que chaque répertoire possède deux entrées spéciales: `` .'' correspond au répertoire courant, et ` ..'' au parent. Lorsque vous utilisez ls, ces deux entrées ne sont pas affichées.

Si vous utilisez l'option -a de la commande ls, alors vous pouvez voir tous les fichiers qui commencent par un point. Observez:

Là, nous voyons les deux entrées spéciales, `` .'' et `` ..'', ainsi que deux autres fichiers ``cachés'': .bash_profile et .bashrc. Ces deux fichiers sont des fichiers de démarrage utilisés par bash. Ils sont expliqués dans la section 3.13.3.

Notez que lorsque nous utilisons le caractère `` *'', aucun de ces fichiers commençant par `` .'' n'est affiché.

C'est en partie une question de sécurité: Si `` *'' prenait en compte les fichiers començant par `` .'', il prendrait aussi en compte les deux entrées spéciales `` .'' et `` ..'', ce qui peut être très dangereux lors de l'utilisation de certaines commandes.

    Un autre caractère générique: `` ?''. Le caractère `` ?'' ne représente qu'un seul caractère. Par conséquent, `` ls ?'' n'affichera que les noms de fichiers d'une seule lettre, et `` ls termca?'' pourra afficher `` termcap'' mais jamais ` termcap.backup''. Voici un autre exemple:

Comme vous voyez, les caractères génériques permettent de spécifier de multiples fichiers en une seule fois. Dans le petit résumé des commandes de la page gif, nous avons dit que les commandes cp et mv pouvaient copier ou déplacer plusieurs fichiers en une seule fois. Par exemple,

copiera tous les fichiers de /etc dont le nom commence par la lettre `` s'' dans le répertoire /home/larry. Par conséquent, le format de la commande cp est en réalité

où fichier1 à fichierN est une liste de fichiers à copier, et destination est le fichier ou répertoire de destination. La commande mv possède une syntaxe identique.

Notez bien que si vous copiez ou déplacez plus d'un fichier, le paramètre destination doit être un répertoire. Vous ne pouvez copier ou déplacer dans un fichier qu'un seul autre fichier.      



suivant chapitre avant contenu index

Suivant: Entrées et sorties Chapitre: Didacticiel Linux Avant: Les différents shells


Jean-Michel Antoine
Mon Apr 3 16:04:54 MET DST 1995