Linux / Commande / rm / Commande pour supprimer des fichiers ou des répertoires
La commande rm sous Linux supprime des fichiers, et l'utilisation de l'option -r supprime également des répertoires et leur contenu. Comme elle ne passe généralement pas par la corbeille, assurez-vous de vérifier le chemin et les éléments à supprimer avant d'exécuter la commande.
Choses à vérifier avant la suppression
Cet article est basé sur rm de GNU coreutils et le shell Bash. Les fichiers supprimés avec rm peuvent être difficiles à récupérer par des méthodes normales. Sauvegardez séparément les fichiers importants et vérifiez d'abord votre emplacement actuel et la cible avec pwd et ls -la.
rm n'affiche pas de message de confirmation à chaque fois. Le comportement par défaut dépend des permissions d'écriture des fichiers, du fait que l'entrée provienne d'un terminal, etc., et les alias dans le shell peuvent également l'affecter. Pour confirmer chaque fichier explicitement, utilisez -i. Pour des conditions détaillées, consultez le manuel GNU de rm.
Suppression de fichiers
Ci-dessous se trouve un exemple de création d'un nouveau répertoire de pratique et de préparation des fichiers à supprimer à l'intérieur. Si rm-practice existe déjà dans l'emplacement actuel, utilisez un autre emplacement vide, et si la première commande échoue, ne continuez pas l'exécution.
mkdir rm-practice
cd rm-practice
printf 'practice\n' > sample.txt
ls
Après avoir confirmé que sample.txt est affiché, exécutez la commande ci-dessous. Dans le message de confirmation, entrez y pour supprimer, ou entrez n si vous ne voulez pas supprimer.
rm -i sample.txt
ls
Si vous avez approuvé la suppression, sample.txt n'apparaîtra plus dans les résultats de ls. rm sample.txt peut supprimer le fichier sans confirmation, donc ne supposez pas qu'un message de confirmation apparaîtra toujours.
Suppression de répertoires
Pour supprimer uniquement un répertoire vide, vous pouvez utiliser rmdir. Cela échoue généralement si le répertoire n'est pas vide.
mkdir empty-dir
rmdir empty-dir
Pour supprimer des répertoires avec du contenu, utilisez -r. La commande ci-dessous crée des répertoires et des fichiers d'exercice, les vérifie, puis les supprime. L'utilisation combinée de -i demandera une confirmation pour chaque élément.
mkdir example-dir
printf 'practice\n' > example-dir/file.txt
ls -la example-dir
rm -ri example-dir
Les messages de confirmation peuvent porter sur l'entrée des répertoires et la suppression des fichiers et répertoires. Avant de répondre à chaque question, vérifiez le nom et approuvez uniquement les éléments que vous avez l'intention de supprimer. Refuser certaines questions peut entraîner le maintien du répertoire ou l'affichage d'erreurs.
Caractères génériques et fichiers cachés
Les motifs comme *.txt sont développés par le shell en noms correspondants avant que rm ne s'exécute. Avant de supprimer plusieurs fichiers à la fois, vérifiez d'abord les noms correspondants avec une commande comme celle-ci au lieu de la commande de suppression.
printf '%s\n' ./*.txt
Après avoir confirmé que les noms affichés sont bien les cibles souhaitées, utilisez rm -i ./*.txt seulement si nécessaire. S'il n'y a aucun fichier correspondant, le motif peut être affiché tel quel ou le comportement de la commande peut changer selon les paramètres de Bash. Mettre l'ensemble du motif entre guillemets empêche l'expansion habituelle des noms de fichiers.
Dans les paramètres par défaut de Bash, * n'inclut pas les éléments cachés qui commencent par un point, mais cela peut varier en fonction de paramètres comme dotglob. Les commandes qui suppriment une large gamme comme rm -rf * sans vérifier peuvent causer des dommages importants si l'emplacement actuel et les résultats de l'expansion sont mal évalués. Les différences pour chaque paramètre peuvent être vérifiées dans la documentation Bash sur l'expansion des noms de fichiers.
Options et chemins fréquemment utilisés
-i: Confirmer chaque élément à supprimer. Les éléments refusés ne seront pas supprimés.-r: Supprimer récursivement le contenu à l'intérieur du répertoire.-f: Ignorer les cibles qui n'existent pas et ne pas afficher les messages de confirmation. Cette option ne résout pas les erreurs de permission.-v: Afficher les éléments supprimés pour aider à vérifier les résultats.
Les chemins contenant des espaces doivent être entourés de guillemets comme rm -i "my file.txt". Si le nom de fichier commence par un tiret, spécifiez-le après -- comme rm -i -- -draft.txt pour éviter qu'il soit interprété comme une option.
S'il y a une erreur de permission, vérifiez si vous disposez des autorisations nécessaires dans le répertoire parent de la cible et consultez l'administrateur. La possibilité de suppression ne se détermine pas uniquement par la permission d'écriture du fichier lui-même. Après la suppression, vérifiez à nouveau la liste du répertoire, et si vous avez supprimé un fichier nécessaire, arrêtez immédiatement l'opération et vérifiez la procédure de sauvegarde ou de récupération de l'environnement de production.




