infra / linux-bash
Manipulation de fichiers et dossiers
Explication
Créer un fichier, en copier un autre, le déplacer, le supprimer : ce sont les gestes les plus basiques de l'informatique. En ligne de commande, chacun de ces gestes devient une commande explicite qui fait exactement ce qu'on lui demande, ni plus, ni moins — sans la marge d'erreur qu'offre un glisser-déposer graphique.
Ce que vous allez apprendre
- Créer des fichiers et des arborescences de dossiers en une seule commande (
touch,mkdir -p) - Copier, déplacer et supprimer des fichiers en toute sécurité, avec les bons réflexes de vérification
- Comprendre pourquoi
rmn'a pas de corbeille et ce que ça implique concrètement - Distinguer un lien symbolique d'un lien physique (dur) et savoir quand utiliser chacun
- Lire rapidement le contenu d'un fichier avec
cat,less,head,tail -f
Dans quel contexte ?
Un développeur backend prépare une sauvegarde manuelle avant une mise à jour risquée : il doit copier le dossier /opt/mon-app/config/ vers /opt/mon-app/config.backup/, vérifier que la copie est complète avec toutes les permissions d'origine, puis suivre en direct le fichier /var/log/mon-app/deploy.log pendant que le déploiement tourne. Chacune de ces actions correspond exactement à une commande de cette leçon.
Une fois ce principe compris, il faut retenir une règle de sécurité importante
Sous Linux, rm supprime réellement et immédiatement un fichier. Il n'existe pas de corbeille par défaut dans laquelle aller le récupérer ensuite.
C'est volontaire : le terminal est un outil de précision, pas un outil "sûr par défaut" comme peut l'être une interface graphique. Cela impose une discipline simple : toujours vérifier son chemin avant de valider une suppression, encore plus avec l'option récursive.
Piège dangereux
rm -rf dossier/ supprime instantanément et sans confirmation tout le contenu d'un dossier, sous-dossiers compris. Une variable vide dans un script (rm -rf "$DOSSIER"/* avec $DOSSIER non défini) peut se transformer en un rm -rf /* catastrophique. Toujours entourer les variables de guillemets et vérifier qu'elles ne sont jamais vides avant un rm récursif.
Maintenant, un concept qui surprend souvent : les liens
Un lien symbolique est un simple raccourci qui pointe vers un chemin. Si le fichier cible est supprimé ou déplacé, ce raccourci devient invalide, un peu comme un raccourci Windows cassé.
Un lien physique (ou "dur") fonctionne différemment : il pointe directement vers les données du fichier sur le disque, ce qu'on appelle son "inode". Plusieurs noms peuvent alors désigner exactement les mêmes données, ce qui explique pourquoi supprimer un fichier ayant plusieurs liens durs ne libère l'espace disque que lorsque le tout dernier lien disparaît.
| Type de lien | Commande | Survit si la cible est déplacée ? | Traverse les partitions ? |
|---|---|---|---|
Symbolique (ln -s) | ln -s cible lien | Non, devient invalide | Oui |
Physique / dur (ln) | ln cible lien | Oui, pointe sur les mêmes données | Non, même partition uniquement |
Bonne pratique
Avant une opération risquée sur un dossier important, fais une copie fidèle avec cp -a dossier/ dossier.backup/ : contrairement à un cp -r simple, -a (archive) conserve les permissions, les dates et les liens symboliques exactement comme l'original.
Le piège classique à connaître
Beaucoup de débutants confondent cp simple, qui ne copie pas le contenu d'un dossier, avec cp -r (récursif), pourtant indispensable dès qu'on copie un dossier. De la même façon, on oublie souvent que mv sert aussi bien à déplacer qu'à renommer un fichier : ce sont en réalité, pour le système de fichiers, exactement la même opération.
Une fois que tu es à l'aise avec ces commandes de base, la question naturelle suivante est : qui a le droit de faire tout ça sur un fichier donné ? C'est le sujet de la prochaine leçon, sur les permissions (chmod/chown).
Commandes & code
Manipulation de fichiers et dossiers
# Création
touch fichier.txt # crée un fichier vide ou met à jour sa date
mkdir dossier # crée un dossier
mkdir -p projets/2026/backend # crée toute l'arborescence manquante d'un coup
# Copie
cp fichier.txt copie.txt
cp -r dossier/ backup/ # récursif, obligatoire pour un dossier
cp -a dossier/ backup/ # "archive" : conserve permissions, dates, liens
cp -v *.log /var/backups/ # verbose, utile pour vérifier ce qui est copié
cp -i fichier.txt existe.txt # demande confirmation avant d'écraser
# Déplacement / renommage (mv fait les deux)
mv ancien_nom.txt nouveau_nom.txt
mv fichier.txt dossier/
# Suppression
rm fichier.txt
rm -r dossier/ # récursif
rm -rf dossier/ # récursif + force (aucune confirmation !)
rmdir dossier_vide/ # ne fonctionne que si le dossier est vide
# Lecture rapide de contenu
cat fichier.txt # affiche tout
less fichier.txt # pagination (q pour quitter, / pour chercher)
head -n 20 fichier.log # 20 premières lignes
tail -n 20 fichier.log # 20 dernières lignes
tail -f fichier.log # suit le fichier en temps réel (logs)
wc -l fichier.txt # compte les lignes
# Liens
ln -s /chemin/vers/cible lien_symbolique # lien symbolique (comme un raccourci)
ln fichier.txt lien_dur # lien physique (même inode)
ls -li fichier.txt lien_dur # vérifie que le numéro d'inode est identique
# Édition rapide en CLI
nano fichier.txt # éditeur simple, Ctrl+O pour sauver, Ctrl+X pour quitter
vim fichier.txt # éditeur modal : i pour insérer, Échap puis :wq pour sauver/quitter
# find + mv/cp/rm en une commande : voir la leçon dédiée à find/xargsRésumé
mkdir -pévite de créer les dossiers parents un par un.cp -aest le bon réflexe pour un backup fidèle (permissions + dates conservées).rm -rfest irréversible : pas de corbeille sous Linux, vérifie toujours le chemin avant.
Exercices pratiques
Mission : sauvegarde avant une mise à jour risquée
Objectif : Réaliser une sauvegarde fidèle avant une opération destructrice, et sécuriser un nettoyage automatisé.
Contexte
Une mise à jour risquée de mon-app va bientôt tourner. Avant de la lancer, tu dois sauvegarder /opt/mon-app/config/ et comprendre les pièges qui rendraient cette sauvegarde inutile ou dangereuse.