« L’étoile est comprise par la commande. »
Dans la majorité des cas, c’est le shell qui transforme le motif en liste de chemins avant de lancer la commande.
01Crée et inspecte des fichiers
cd "$HOME/soria-linux-lab"
touch projets/app/data/vide.txt
printf 'ligne 1
ligne 2
' > projets/app/data/exemple.txt
file projets/app/data/exemple.txt
stat projets/app/data/exemple.txt
ls -l projets/app/data
touch crée un fichier vide s’il n’existe pas, mais met seulement à jour ses dates s’il existe déjà. stat révèle les métadonnées que ls résume.
02Protège les noms avec espaces
ls -l projets/app/notes de test.txt
ls -l "projets/app/notes de test.txt"
cp "projets/app/notes de test.txt" archives/notes-copie.txt
fichier="projets/app/notes de test.txt"
printf 'chemin=%s
' "$fichier"
wc -l "$fichier"
03Observe les motifs avant d’agir
printf '<%s>
' projets/app/data/*.txt
printf '<%s>
' projets/app/data/????.txt
printf '<%s>
' projets/app/data/[eu]*.txt
Utilise printf pour prévisualiser la liste produite par un motif avant de la transmettre à cp, mv ou rm.
.log?file?.txt[abc][ab]
[!0-9][!0-9]04Comprends les fichiers cachés
ls projets/app
ls -A projets/app
printf '<%s>
' projets/app/*
printf '<%s>
' projets/app/.*
Un nom commençant par un point est caché par convention. Le motif ne l’inclut pas par défaut. Le motif doit être utilisé avec prudence, car selon le contexte il peut également faire apparaître les entrées spéciales..
05Copie et déplace avec contrôle
cp -iv projets/app/data/exemple.txt archives/
mv -iv archives/exemple.txt archives/exemple-renomme.txt
cp -a projets/app/config archives/config-snapshot
find archives -maxdepth 2 -printf '%M %p
' | sort
-i demande confirmation avant écrasement. -a conserve au mieux structure, permissions, dates et liens ; il est adapté aux copies de référence, pas à toutes les migrations.
Montre le danger d’un motif trop large
- crée trois fichiers dans
/tmp/soria-glob-test; - prévisualise
/tmp/soria-glob-test/ avecprintf; - supprime uniquement un fichier nommé explicitement ;
- explique pourquoi
rm -rf “$variable”/ exige une validation stricte de la variable.
06Supprime seulement dans le laboratoire
mkdir -p /tmp/soria-glob-test
printf 'a
' > /tmp/soria-glob-test/a.txt
printf 'b
' > /tmp/soria-glob-test/b.txt
printf '<%s>
' /tmp/soria-glob-test/*
rm -i /tmp/soria-glob-test/a.txt
find /tmp/soria-glob-test -maxdepth 1 -type f -print
rm -rf /tmp/soria-glob-test
✓Ce que tu retiens
Le shell transforme variables, guillemets et motifs avant l’exécution. Pour toute opération destructive, affiche d’abord les chemins ciblés, protège les variables avec des guillemets et limite le périmètre.