La commande Linux rm : tout ce que vous devez savoir
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.
Le Linux rm
La commande 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.
Sommaire
Qu’est-ce que la commande rm sous Linux ?
Le Linux rm
La commande sert principalement à supprimer des fichiers. C’est celui que la plupart des gens rencontrent peu de temps après avoir commencé à utiliser Linux. Du simple fait d’être un 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 de telles erreurs impliquent rm
.
Les rm
La commande 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. En utilisant rm
n’est pas difficile, mais la pénalité en cas d’échec est élevée.
Lorsqu’un fichier est supprimé avec rm
, c’est parti. 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é Le massacre de Texas Wrench. 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 affaire avec rm
. Quand tu tire rm
de votre sac à outils, vous devez ralentir et vérifier, puis revérifier, votre ligne de commande.
Les rm
La commande est un exécutable, elle ne fait pas partie du shell. Donc, bien que nous utilisions Bash ici, c’est le Linux standard rm
pas un Bash spécial rm
.
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 revenez silencieusement à 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 provoque rm
pour 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. Lorsque les fichiers ont été supprimés, nous pouvons utiliser ls
pour vérifier qu’ils sont partis.
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 n’a pas de caractères après « config », mais parce que l’astérisque correspond à n’importe quel caractère ou pas de caractèresil 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
Une manière sûre d’utiliser rm
est de le forcer à demander confirmation avant de supprimer chaque fichier. Les -i
(interactif) vous permet de le faire. Lorsque vous ajoutez cette option à votre ligne de commande, rm
vous avertira avant chaque suppression, vous donnant la possibilité d’ignorer les actions que vous n’aviez pas prévues.
Nous utiliserons le -i
(interactif) 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 parcourir rapidement votre liste de fichiers, supprimer ou ignorer des fichiers pour sélectionner ceux que vous souhaitez supprimer. Comme nous le verrons, vous pouvez utiliser le i-
option (interactive) avec d’autres rm
options.
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
Les -f
(forcer) l’option instruit rm
à ne jamais demander. Vous lui dites « Oui, supprimez tous les fichiers pour lesquels vous me demandez normalement. » Il empêche également rm
de se plaindre de fichiers inexistants.
rm -f geonames.sl3
Les -f
(force) est souvent utilisée lorsque vous supprimez un ensemble imbriqué de fichiers et de répertoires.
Suppression de répertoires avec rm
Les rm
La commande peut éventuellement supprimer également des répertoires, ainsi que les fichiers qu’ils contiennent. Ceci est similaire au rmdir
commande, mais rmdir
ne peut pas supprimer les répertoires contenant des fichiers. Il ne supprime que les répertoires vides. Les rm
La commande 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 le -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 -r
drapeau (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.
Commuter rm
en mode tronçonneuse complet, nous pouvons combiner le -r
(récursif) et -f
(forcer). Cela raconte rm
pour supprimer de manière récursive 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 le -v
(verbeux) de sorte que rm
nous dit 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 trait d’union « -
” 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.
Car 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 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 qu’il ne peut pas trouver les fichiers appelés « à » ou « supprimer », mais il trouve un fichier appelé « sauvegarde ». C’est ce que rm
fera aussi. 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, « sauvegarder », « vers » et « supprimer ». 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
pour supprimer le bon fichier.
rm 'backup to delete'
Vous pouvez également échapper aux espaces avec des barres obliques inverses « « , comme ça:
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 utilisez le mode interactif pour décider de ce qui doit être 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.