Commande rm sous Linux : l'option rm -rf et supprimer sans confirmation

Avec la commande rm, les fichiers supprimés disparaissent aussitôt, sans passer par une corbeille. rm, abréviation de remove, supprime des fichiers et des répertoires ; cet article présente l'utilisation de base, les options et la raison pour laquelle le répertoire racine reste en place même après [rm -rf /].
Sous AlmaLinux 9.8, le compte root a par défaut [alias rm=’rm -i’] : une confirmation est demandée avant chaque suppression. Pour les systèmes Linux sans ce réglage, l'article montre aussi comment ajouter l'alias vous-même.
✅ Utilisation de base
La syntaxe de base est la suivante.
rm -options À supprimer : Fichier ou Répertoire
Un fichier se supprime avec son seul nom ; un répertoire ne se supprime qu'avec l'option -r.
# Supprimer un fichier
rm file1
# Supprimer plusieurs fichiers
rm file1 file2
# Supprimer un répertoire et son contenu
rm -r dir1/
# Supprimer un répertoire vide
rm -d dir1/~]# rm dir1/
rm: cannot remove 'dir1/': Is a directorySans option, un répertoire indiqué n'est pas supprimé, comme ci-dessus.
Supprimer un lien symbolique n'efface que le lien : le fichier vers lequel il pointe reste en place. Pour vérifier avant et après la suppression, utilisez aussi la commande ls.
✅ rm -rf : supprimer sans confirmation
Quand vous lancez la commande rm, [remove regular file] vous est demandé, car pour le compte root, rm s'exécute via l'alias [rm -i].
~]# rm file1
rm: remove regular file 'file1'? y
~]# alias rm
alias rm='rm -i'Supprimer un répertoire avec -r déclenche une confirmation à l'entrée de chaque répertoire et pour chaque fichier : plus il y a de fichiers, plus c'est fastidieux.
~]# rm -r logs/
rm: descend into directory 'logs/'? y
rm: remove regular file 'logs/access.log'? y
rm: remove regular empty file 'logs/error.log'? y
rm: remove directory 'logs/'? yDans ce cas, ajoutez aussi l'option -f : la suppression se fait sans confirmation, et un fichier inexistant ne provoque pas d'erreur.
rm -rf logs/Placer une barre oblique inverse [\] devant la commande pour contourner l'alias, ou [yes |] devant pour répondre y à chaque confirmation, donne le même résultat.
\rm -r logs/
yes | rm -r logs/✅ Options de la commande rm & simulateur
| Option | Description | |
|---|---|---|
| -f | --forceSupprime sans confirmation, sans erreur pour un fichier inexistant | |
| -i | Demande confirmation à l'utilisateur avant chaque suppressionalias rm='rm -i' | |
| -I(i majuscule) | Ne demande qu'une fois, pour 4 fichiers ou plus ou avec -r | |
| -r, -R | --recursiveSupprime le répertoire avec ses sous-répertoires et ses fichiers | |
| -d | --dirSupprime un répertoire vide | |
| -v | --verboseAffiche chaque fichier et répertoire supprimé sur une ligne | |
| --preserve-root | Ne supprime pas le répertoire racine (/) (par défaut) | |
| --no-preserve-root | Lève la protection du répertoire racine (/) |
✅ rm -rf / : protection du répertoire racine
Dans le travail d'hébergement, il arrive de supprimer des fichiers qu'il ne fallait pas. La plupart se récupèrent depuis une sauvegarde, mais si le répertoire racine est effacé, la restauration est pénible même avec un instantané. J'ai entendu plusieurs fois parler de cas où un rm -rf lancé par erreur n'a pas pu être rattrapé.
Avec la commande rm, l'option [--preserve-root] est active par défaut : le répertoire racine n'est pas supprimé, même avec [rm -rf /].
~]# rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafeEn revanche, elle n'empêche pas [rm -rf /*]. Le shell remplace [/*] par les noms de répertoires comme /bin, /etc ou /home avant de les transmettre, et rm supprime alors chacun de ces répertoires au lieu de [/].
Après l'installation d'AlmaLinux 9.8, [/root/.bashrc] contient les alias -i de rm, cp et mv, comme ci-dessous. Les comptes utilisateur ordinaires n'ont pas ces alias.
~]# grep alias /root/.bashrc
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'Sur un compte ou un système Linux sans cet alias, ajoutez une ligne tout en bas de [~/.bashrc] et rechargez le fichier.
# Ajouter tout en bas de ~/.bashrc
alias rm='rm -i'
# Recharger
source ~/.bashrc
ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.