Skip to main content

2.3 - Supprimer sans se tromper

Sous Linux, rm ne place généralement pas les éléments dans une corbeille. Une suppression en ligne de commande peut donc être immédiate et difficile à récupérer.

Supprimer un fichier ou un dossier vide

rm fichier.tmp
rm -i fichier.tmp       # demander confirmation
rmdir dossier-vide

Supprimer plusieurs fichiers précis :

rm -- fichier1.tmp fichier2.tmp

Supprimer un dossier et son contenu

rm -r ancien-dossier/
rm -ri ancien-dossier/  # confirmation interactive

L'option -f force la suppression et réduit les protections. La combinaison rm -rf doit rester exceptionnelle et ne doit être utilisée qu'après vérification exacte de la cible.

Méthode sûre avec un motif

Avant de supprimer tous les fichiers .tmp, afficher ce que le shell sélectionne :

printf '%s\n' -- *.tmp

Puis supprimer seulement si la liste est correcte :

rm -i -- *.tmp

Avec find, commencer par -print :

find /var/tmp/mon-application -type f -name '*.tmp' -print

Après contrôle :

find /var/tmp/mon-application -type f -name '*.tmp' -delete

L'ordre des critères de find compte : -delete ne doit être ajouté qu'à la fin, après un test réussi avec -print.

Préférer une opération récupérable

Si l'environnement graphique fournit gio :

gio trash fichier.txt
gio trash --list

Autre méthode : déplacer d'abord l'élément vers un dossier de quarantaine.

mkdir -p ~/A_supprimer
mv -i ancien-dossier ~/A_supprimer/

Erreurs à éviter

  • Ne jamais exécuter une suppression récursive sur /, /home, ~ ou une variable non vérifiée.
  • Toujours mettre les variables entre guillemets : rm -- "$fichier".
  • Ne pas supposer qu'une variable est définie.
  • Vérifier pwd, puis la cible avec ls -ld -- chemin.
  • Ne pas précéder rm de sudo si les droits normaux suffisent.

Exemple de contrôle d'une variable :

cible="/var/tmp/mon-application"
test -n "$cible" && test "$cible" != "/" && ls -ld -- "$cible"

Cette vérification n'autorise pas automatiquement la suppression ; elle sert seulement à examiner la cible.