Linux — utilisation avancée et administration · Étape 04

Manipule les fichiers et maîtrise les motifs du shell

Crée, copie, déplace et supprime des fichiers en comprenant quoting, espaces, fichiers cachés et expansion des motifs.

Durée indicative · ~1 h 30Niveau débutantPrérequis conseillé · Leçon 3 — navigation et arborescencePratique · TP
L’idée reçue

« 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
Sans guillemets, le shell découpe le texte en plusieurs arguments. Les guillemets protègent l’espace tout en permettant l’expansion des variables avec des guillemets doubles.
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.

Motif
Signification
Exemple
zéro ou plusieurs caractères
.log
?
exactement un caractère
file?.txt
[abc]
un caractère parmi l’ensemble
[ab]
[!0-9]
un caractère hors ensemble
[!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.

Panne volontaire

Montre le danger d’un motif trop large

  1. crée trois fichiers dans /tmp/soria-glob-test ;
  2. prévisualise /tmp/soria-glob-test/ avec printf ;
  3. supprime uniquement un fichier nommé explicitement ;
  4. explique pourquoi rm -rf “$variable”/
  5. 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.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.