La commande Linux rm : tout ce que vous devez savoir
Résumé : La commande rm permet de supprimer un fichier ou un répertoire en passant son nom : « rm filename » ou « rm -d directory ». Vous pouvez également inclure un chemin de répertoire. S'il y a des fichiers dans le répertoire, utilisez l'option -r rm -r directory pour supprimer les fichiers et les dossiers de manière récursive.
La commande Linux rm
supprime les fichiers et les répertoires. Pour utiliser cet outil en toute sécurité, vous devez être certain de ce qui va se passer lorsque vous appuyez sur Entrée. Voici ce que vous devez savoir.
Qu'est-ce que la commande rm sous Linux ?
La commande Linux rm
sert principalement à supprimer des fichiers. C'est celui que la plupart des gens rencontrent peu de temps après avoir commencé à utiliser Linux. En tant que nouveau venu sur Linux, vous risquez de faire des erreurs. Vous allez créer ou copier des fichiers par accident, ou avec le mauvais nom, ou au mauvais endroit. Tout cela fait partie de la courbe d'apprentissage de la ligne de commande. Les opérations de nettoyage pour de telles erreurs impliquent rm
.
La commande rm
peut supprimer des fichiers, des groupes de fichiers, des répertoires ou des arborescences de répertoires complètes. C'est pourquoi il doit être utilisé avec prudence. L'utilisation de rm
n'est pas difficile, mais la pénalité en cas d'échec est élevée.
Lorsqu'un fichier est supprimé avec rm
, il a disparu. Il n'est pas déplacé vers la corbeille. Il est immédiatement effacé. Cela ne signifie pas que vous devez éviter d'utiliser rm
. Mais pour l'utiliser en toute sécurité, vous devez être conscient de ce qu'il peut faire et vous assurer que vous l'utilisez correctement.
Certains outils sont plus dangereux que d'autres et beaucoup moins tolérants aux erreurs. C'est pourquoi il n'y a jamais eu de film intitulé The Texas Wrench Massacre. rm
n'est pas une clé, c'est définitivement une tronçonneuse.
Les gens utilisent des tronçonneuses toute la journée tous les jours, et tant qu'ils en utilisent une de manière responsable et consciente, tout va bien. C'est la même chose avec rm
. Lorsque vous sortez rm
de votre sac à outils, vous devez ralentir et vérifier, puis revérifier, votre ligne de commande.
La commande rm
est un exécutable, elle ne fait pas partie du shell. Ainsi, bien que nous utilisions Bash ici, c'est le rm
Linux standard, pas un rm
Bash spécial.
Comment supprimer des fichiers avec rm
La façon la plus simple d'utiliser rm
est de fournir le nom d'un fichier que vous souhaitez supprimer.
rm config.gc
Vous êtes silencieusement renvoyé à la ligne de commande. rm
adopte la position classique et discrète de Linux selon laquelle s'il ne se plaint de rien, vous pouvez supposer qu'il a fait ce que vous avez demandé. Fournir un nom de fichier comme celui-ci force rm
à rechercher le fichier dans le répertoire de travail courant.
Vous pouvez fournir plusieurs noms de fichiers sur la ligne de commande. Vous pouvez également fournir un chemin de répertoire si un fichier que vous souhaitez supprimer ne se trouve pas dans le répertoire actuel.
rm memlog.sh /home/dave/dev-archive/config.gc
Encore une fois, rien n'est signalé si rm
parvient à supprimer les fichiers spécifiés.
Utilisation de caractères génériques avec rm
Les caractères génériques vous permettent de spécifier des groupes ou des collections de fichiers sans avoir à répertorier les fichiers individuels sur la ligne de commande.
L'astérisque *
représente n'importe quelle séquence de caractères, y compris aucune. Le point d'interrogation ?
représente n'importe quel caractère unique.
Pour vérifier que vos jokers vont correspondre à ce que vous attendez d'eux, et rien de plus, vous pouvez les utiliser avec ls avant de les utiliser avec rm.
Pour supprimer tous les fichiers PNG du répertoire actuel, utilisez « *.png ». Cela signifie que toute séquence de caractères suivie de .png sera reconnue. Une fois les fichiers supprimés, nous pouvons utiliser ls
pour vérifier qu'ils ont disparu.
ls *.png
rm *.png
ls *.png
Sur notre ordinateur de test, nous avons deux fichiers dans le répertoire actuel avec des noms commençant par config.
Nous pouvons supprimer ces deux éléments en utilisant le caractère générique astérisque. Il correspond aux deux fichiers car rm
recherche des noms de fichiers commençant par config, suivis de n'importe quelle séquence de caractères. Sur un fichier, cette séquence de caractères est .sl3, l'extension du nom de fichier. L'autre nom de fichier ne contient aucun caractère après config, mais comme l'astérisque correspond à n'importe quel caractère ou à aucun caractère, il correspond également à ce nom de fichier.
ls config*
rm config*
ls config*
Vous pouvez utiliser le point d'interrogation par paires. Cela supprimera les fichiers qui ont des extensions de fichier de deux caractères exactement.
ls *.??
rm *.??
ls *.??
Utilisation interactive de rm
Un moyen sûr d'utiliser rm
est de le forcer à demander une confirmation avant de supprimer chaque fichier. L'option -i
(interactive) vous permet de le faire. Lorsque vous ajoutez cette option à votre ligne de commande, rm
vous invitera avant chaque suppression, vous donnant la possibilité d'ignorer les actions que vous n'aviez pas prévues.
Nous utiliserons l'option -i
(interactive) dans cette commande. Il essaie de supprimer tous les fichiers avec une extension de fichier à un seul caractère.
rm -i *.?
Chaque fichier correspondant est présenté tour à tour. Si vous répondez « y » ou « Y », le fichier est supprimé. Si vous répondez « n », le fichier est conservé. En fait, si vous répondez par autre chose que y ou y, le fichier est conservé. Vous pouvez simplement appuyer sur Entrée et le fichier est conservé.
Vous pouvez rapidement parcourir votre liste de fichiers, supprimer ou ignorer des fichiers pour sélectionner ceux que vous souhaitez supprimer. Comme nous le verrons, vous pouvez utiliser l'option i-
(interactive) avec d'autres options rm
.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts
Utilisation de l'option rm Force
Si vous essayez de supprimer un fichier en lecture seule, rm
vous demande confirmation avant de supprimer le fichier. C'est un bon filet de sécurité, mais qui pourrait devenir fastidieux si vous avez beaucoup de fichiers à supprimer.
rm geonames.sl3
L'option -f
(force) indique à rm
de ne jamais demander. Vous lui dites Oui, supprimez tous les fichiers pour lesquels vous me demandez normalement. Cela empêche également rm
de se plaindre de fichiers inexistants.
rm -f geonames.sl3
L'option -f
(force) est souvent utilisée lorsque vous supprimez un ensemble imbriqué de fichiers et de répertoires.
Suppression de répertoires avec rm
La commande rm
peut éventuellement supprimer également des répertoires, ainsi que les fichiers qu'ils contiennent. Ceci est similaire à la commande rmdir
, mais rmdir
ne peut pas supprimer les répertoires contenant des fichiers. Il ne supprime que les répertoires vides. La commande rm
peut facilement supprimer des répertoires contenant des fichiers et d'autres répertoires.
La suppression d'un répertoire est similaire à la suppression d'un fichier. Nous fournissons le nom du répertoire sur la ligne de commande. Nous devons inclure l'option -d
(répertoire). Comme nous l'avons fait lors de la suppression de fichiers, nous pouvons fournir le nom de plusieurs répertoires. Nous pouvons fournir un chemin d'accès au répertoire qui ne se trouve pas dans le répertoire de travail actuel.
rm -d old-projects
Si le répertoire contient des fichiers, cela échouera.
Pour supprimer un répertoire et son contenu, utilisez le drapeau -r
(récursif). Cela supprime le répertoire, ses fichiers et tous les répertoires imbriqués qu'il contient.
rm -d archive
rm -r archive
La deuxième commande réussit.
Pour basculer rm
en mode tronçonneuse complet, nous pouvons combiner les options -r
(récursif) et -f
(force). Cela indique à rm
de supprimer récursivement tous les fichiers et répertoires d'une arborescence de répertoires, même s'ils sont en lecture seule, et sans jamais nous le demander.
Sur notre ordinateur de test, nous avons un répertoire appelé code migré. Il contient des fichiers et un autre répertoire appelé 6502. Le répertoire 6502 contient également des fichiers et un autre répertoire appelé ASM. Il y a aussi des fichiers dans ce répertoire. Certains fichiers sont en lecture seule.
Nous inclurons également la commande -v
(verbeux) afin que rm
nous dise ce qu'il fait.
rm -rfv migrated-code
Dans la sortie, nous pouvons voir que les fichiers sont supprimés et, lorsqu'ils sont vides, les répertoires sont également supprimés.
Éviter les erreurs lors de l'utilisation de rm
Les espaces et autres caractères étranges dans les noms de fichiers peuvent poser des problèmes. Les noms de fichiers commençant par un tiret -
, par exemple, peuvent être confondus avec des options de ligne de commande. Si nous avons un fichier appelé -contributors.txt, rm
essaiera de traiter le nom comme une séquence d'options de ligne de commande.
Étant donné que rm
n'a pas d'option appelée -c
, l'analyse de la ligne de commande échoue et le fichier n'est pas supprimé. Pour supprimer le fichier, vous devez le faire précéder de ./ pour lui fournir un chemin d'accès.
rm -contributors.txt
rm ./-contributors.txt
Les espaces dans les noms de fichiers sont également problématiques. Citez le nom de fichier entier ou utilisez la complétion par tabulation pour insérer le nom du fichier sur la ligne de commande pour vous, en échappant aux espaces. Si vous n'utilisez aucune de ces options, rm
traitera chaque partie du nom de fichier comme un fichier individuel.
Ici, nous avons deux fichiers, l'un appelé sauvegarde et l'autre appelé sauvegarde à supprimer. Nous pouvons démontrer le problème avec ces noms de fichiers, en utilisant ls
. Si nous essayons d'utiliser ls
sur le fichier sauvegarde à supprimer et que nous n'échappons pas ou ne citons pas le nom du fichier, la commande échoue.
ls -hl backup to delete
ls
se plaint de ne pas trouver les fichiers appelés to ou delete, mais il trouve un fichier appelé backup. C'est aussi ce que fera rm
. Il se plaindra de deux fichiers manquants, puis supprimera le fichier appelé sauvegarde, ce qui n'est pas ce que nous voulions.
rm backup to delete
rm
pense qu'il fonctionne avec trois fichiers, backup, to et delete. Il se plaint qu'il ne peut pas trouver à et supprimer, mais il trouve et supprime silencieusement sauvegarde.
La citation du nom de fichier permet à rm
de supprimer le bon fichier.
rm 'backup to delete'
Vous pouvez également échapper les espaces avec des barres obliques inverses \
, comme ceci :
rm backup\ to\ delete
Si vous utilisez la complétion par tabulation pour entrer vos noms de fichiers, ils seront automatiquement échappés, si nécessaire.
Quel EPI ?
Contrairement aux tronçonneuses du monde réel, il n'y a pas d'équipement de protection individuelle que vous pouvez utiliser avec rm
.
Ce que vous pouvez faire, c'est vérifier votre syntaxe avec ls
avant de l'essayer avec rm
, et utiliser le mode interactif pour pouvoir décider ce qui sera supprimé.
En dehors de cela, c'est de la pratique jusqu'à ce que vous vous sentiez à l'aise et en confiance. Le moyen le plus sûr de le faire est de copier un tas de fichiers sacrificiels dans un répertoire et de s'entraîner sur ceux-ci.