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).