Quand vous tapez ls *.txt, le shell remplace *.txt par la liste des
fichiers correspondants avant de lancer ls. C'est une expansion : le shell
transforme ce que vous écrivez en quelque chose de plus précis. Comprendre ces
mécanismes permet d'écrire des commandes courtes et puissantes au lieu de
répéter les mêmes opérations à la main.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Utiliser les jokers (
*,?,[...]) pour cibler des fichiers - Générer des séquences avec les accolades
{a,b}et{1..5} - Utiliser le tilde
~comme raccourci vers le répertoire personnel - Injecter le résultat d'une commande avec
$() - Faire un calcul simple avec
$(()) - Choisir entre guillemets simples et doubles
Globbing : les jokers
Section intitulée « Globbing : les jokers »Le globbing (expansion de motifs) est le mécanisme le plus utilisé. Le shell remplace les motifs par la liste des fichiers qui correspondent.
L'étoile *, zéro ou plusieurs caractères
Section intitulée « L'étoile *, zéro ou plusieurs caractères »ls *.txtAffiche tous les fichiers qui se terminent par .txt dans le répertoire
courant.
ls rapport*Affiche tous les fichiers dont le nom commence par rapport.
Le point d'interrogation ?, exactement un caractère
Section intitulée « Le point d'interrogation ?, exactement un caractère »ls fichier?.txtCorrespond à fichier1.txt, fichierA.txt, mais pas à fichier12.txt (deux
caractères après fichier).
Les crochets [...], un caractère parmi une liste
Section intitulée « Les crochets [...], un caractère parmi une liste »ls fichier[123].txtCorrespond à fichier1.txt, fichier2.txt, fichier3.txt.
Vous pouvez aussi utiliser un intervalle :
ls fichier[a-z].txtCorrespond à fichiera.txt, fichierb.txt, etc.
Combiner les jokers
Section intitulée « Combiner les jokers »ls /var/log/*.logls /etc/*.d/ls *.{txt,md}Tester sans risque
Section intitulée « Tester sans risque »Pour voir ce que le shell va étendre, utilisez echo au lieu de la commande
réelle :
echo *.txtLe shell affiche la liste des fichiers correspondants sans rien exécuter.
Accolades : générer des séquences
Section intitulée « Accolades : générer des séquences »Les accolades {} permettent de générer une liste de valeurs. Contrairement au
globbing, les accolades ne dépendent pas des fichiers existants.
Liste explicite
Section intitulée « Liste explicite »echo {rouge,vert,bleu}rouge vert bleuUtile pour créer plusieurs dossiers d'un coup :
mkdir -p projet/{src,docs,tests}Crée trois sous-dossiers dans projet/.
Séquence numérique
Section intitulée « Séquence numérique »echo {1..5}1 2 3 4 5touch fichier{01..10}.txtCrée fichier01.txt à fichier10.txt.
Séquence alphabétique
Section intitulée « Séquence alphabétique »echo {a..f}a b c d e fTilde : raccourci vers home
Section intitulée « Tilde : raccourci vers home »Le caractère ~ est remplacé par le chemin de votre répertoire personnel :
echo ~/home/bob~/Documents équivaut à /home/bob/Documents.
Substitution de commande : $()
Section intitulée « Substitution de commande : $() »La syntaxe $(commande) exécute la commande entre parenthèses et remplace le
tout par sa sortie :
echo "Nous sommes le $(date +%d/%m/%Y)"Nous sommes le 06/04/2026Autre exemple, stocker le résultat dans une variable :
NB_FICHIERS=$(ls | wc -l)echo "Il y a $NB_FICHIERS fichiers ici"La substitution de commande est très utile dans les scripts pour capturer dynamiquement des informations.
Arithmétique : $(())
Section intitulée « Arithmétique : $(()) »Pour faire un calcul entier :
echo $((3 + 7))10Opérateurs disponibles : +, -, *, / (division entière), % (modulo).
TOTAL=$((512 * 1024))echo "$TOTAL octets"Guillemets : simples vs doubles
Section intitulée « Guillemets : simples vs doubles »Le choix des guillemets détermine si le shell interprète ou non les variables et les expansions.
Guillemets doubles "...", le shell interprète
Section intitulée « Guillemets doubles "...", le shell interprète »NOM="Alice"echo "Bonjour $NOM"Bonjour AliceLes expansions $NOM, $(commande) et $((calcul)) sont interprétées.
Guillemets simples '...', le shell n'interprète rien
Section intitulée « Guillemets simples '...', le shell n'interprète rien »echo 'Bonjour $NOM'Bonjour $NOMLe texte est pris littéralement.
Quand utiliser lequel ?
Section intitulée « Quand utiliser lequel ? »| Situation | Guillemets |
|---|---|
| Texte avec variables à remplacer | "..." |
| Texte littéral sans remplacement | '...' |
| Commande avec espaces dans un chemin | "..." |
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
ls *.txt affiche « No matches found » | Aucun fichier .txt dans le répertoire | Vérifier avec ls puis ajuster le motif |
mkdir {a,b,c} crée un seul dossier {a,b,c} | Espace après la virgule ou guillemets simples autour | Écrire {a,b,c} sans espaces et sans '...' |
$NOM affiche le texte littéral | Variable entourée de guillemets simples '...' | Utiliser des guillemets doubles "..." |
$(commande) ne fonctionne pas | Parenthèses incorrectes ou commande inexistante | Vérifier la commande seule d'abord |
| Calcul retourne 0 au lieu du résultat | Division entière ou syntaxe $() au lieu de $(()) | Utiliser $(( )) avec doubles parenthèses |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Le globbing (
*,?,[...]) fait correspondre des noms de fichiers existants. - Les accolades
{a,b}et{1..5}génèrent des listes, indépendamment des fichiers. ~est le raccourci vers votre répertoire personnel.$(commande)injecte le résultat d'une commande dans une autre.$(())permet les calculs entiers.- Les guillemets doubles
"..."interprètent les variables, les simples'...'non.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Écrire un premier script : Shebang, variables, arguments et codes de sortie.