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 avecls -ld -- chemin. - Ne pas précéder
rmdesudosi 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.
No comments to display
No comments to display