next up previous contents index
Next: Variables Up: Approfondissement Previous: Les droits d'accès

Raccourcis pour les noms de fichiers

Il est ennuyeux d'avoir à taper un nom complet de fichier comme nabuchodonosor. Il est encore plus ennuyeux d'avoir à taper une liste de fichier pour les donner en arguments à une commande, comme: cc -o foo bar.c gee.c buz.c gog.c. Pour éviter ces problèmes, on peut utiliser des jokers ( wildcards en anglais.)

Une étoile * dans un nom de fichier est interprétée par le shell comme ``n'importe quelle séquence de caractères qui ne commence pas par un point.'' Exemple: cc -o foo *.c.

Pour interpréter l'étoile, le shell va faire la liste de tous les noms de fichiers du répertoire courant qui ne commencent pas par . et qui finissent par .c Ensuite, il remplace *.c par cette liste (triée par ordre alphabétique) dans la ligne de commande, et exécute le résultat, c'est-à-dire par exemple: cc -o foo bar.c buz.c foo.c gee.c gog.c.

On a aussi le ?, qui remplace un (et exactement un) caractère quelconque. Par exemple, ls ?* liste tous les fichiers, y compris ceux dont le nom commence par un point.

La forme [abcd] remplace un caractère quelconque parmi a, b, c, d. Enfin, SPM_quot[^abcd]" remplace un caractère quelconque qui ne se trouve pas parmi a, b, c, d.

Exemple: echo /users/* affiche la même chose que ls /users. (La commande echo se contente d'afficher ses arguments.)

Attention:

Interlude: comment effacer un fichier nommé ?* ? On ne peut pas taper rm ?* car le shell remplace ?* par la liste de tous les fichiers du répertoire courant. On peut taper rm -i * qui supprime tous les fichiers, mais en demandant confirmation à chaque fichier. On répond no à toutes les questions sauf rm: remove ?*?. Autre méthode: utiliser les mécanismes de quotation (voir ci-dessous).



next up previous contents index
Next: Variables Up: Approfondissement Previous: Les droits d'accès




Wed Jun 25 13:24:35 MET DST 1997