La commande Linux rm : tout ce que vous devez savoir

Publié: 2023-01-22
Ordinateur portable Linux affichant une invite bash
fatmawati achmad zaenuri/Shutterstock.com
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.

Table des matières

Qu'est-ce que la commande rm sous Linux ?
Comment supprimer des fichiers avec rm
Utilisation de caractères génériques avec rm
Utilisation interactive de rm
Utilisation de l'option rm Force
Suppression de répertoires avec rm
Éviter les erreurs lors de l'utilisation de rm
Quel EPI ?

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. 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 pour de telles erreurs impliquent rm .

8 fautes de frappe que vous devez vraiment éviter sous Linux
CONNEXION 8 fautes de frappe que vous devez vraiment éviter sous Linux

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 devriez é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, il s'agit du standard Linux rm , pas d'un Bash rm spécial.

EN RELATION : Lignes de commande : pourquoi les gens s'en soucient-ils encore ?

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 

Suppression d'un seul fichier en passant son nom de fichier à rm

Vous revenez silencieusement à la ligne de commande. rm adopte la position Linux classique et discrète 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 actuel.

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 

Suppression de deux fichiers en transmettant leur nom de fichier et leur chemin de répertoire à rm

Encore une fois, rien n'est signalé si rm parvient à supprimer les fichiers spécifiés.

CONNEXION: 37 commandes Linux importantes que vous devez connaître

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 aucun. 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 ont disparu.

 ls *.png
 rm *.png
 ls *.png 

Utilisation du caractère générique astérisque pour supprimer tous les fichiers avec l'extension de fichier 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 comme l'astérisque correspond à n'importe quel caractère ou à aucun caractère , il correspond également à ce nom de fichier.

 ls config*
 configuration rm*
 ls config* 

Utilisation du caractère générique astérisque pour supprimer deux fichiers, un avec et un sans, une extension de fichier

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 de deux caractères génériques de point d'interrogation pour supprimer des fichiers dont les extensions de fichier comportent exactement deux caractères

CONNEXES: 15 caractères spéciaux que vous devez connaître pour Bash

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 *.? 

Utilisation interactive de rm pour qu'il s'affiche avant chaque suppression

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 l'option i- (interactive) avec d'autres options rm .

CONNEXION: Meilleurs ordinateurs portables Linux pour les développeurs et les passionnés

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 

rm invitant l'utilisateur à confirmer qu'il souhaite supprimer un fichier en lecture seule

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 

Utilisation de l'option -f (force) pour empêcher rm de demander des suppressions

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.

Comment supprimer des fichiers et des répertoires dans le terminal Linux
CONNEXION Comment supprimer des fichiers et des répertoires dans le terminal Linux

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 anciens projets 

Utilisation de l'option -d (répertoire) pour supprimer un répertoire

Si le répertoire contient des fichiers, cela échouera.

Pour supprimer un répertoire et son contenu, utilisez l'indicateur -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 

Utilisation de l'option -r (récursive) pour supprimer un répertoire et ses fichiers

La deuxième commande réussit.

Pour passer rm en mode tronçonneuse complet, nous pouvons combiner les options -r (récursive) 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 (verbose) afin que rm nous dise ce qu'il fait.

 rm -rfv code migré 

Utilisation des indicateurs -rfv pour que rm supprime des fichiers et des répertoires, même des fichiers en lecture seule, sans invite

Dans la sortie, nous pouvons voir que les fichiers sont supprimés et, lorsqu'ils sont vides, les répertoires sont également supprimés.

La sortie des drapeaux -rfv montrant les fichiers qui sont supprimés et les répertoires qui sont supprimés une fois qu'ils sont vides

É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 qui commencent 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.

Comme 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 

Utilisation de "./" pour contourner le problème de suppression d'un fichier dont le premier caractère est un trait d'union

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.

Comment gérer les espaces dans les noms de fichiers sous Linux
CONNEXION Comment gérer les espaces dans les noms de fichiers sous Linux

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 sauvegarde à supprimer 

Essayer d'utiliser ls sur un fichier avec des espaces dans son nom, sans citer la chaîne ou échapper aux espaces

ls se plaint qu'il ne trouve pas 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.

 sauvegarde rm à supprimer 

Essayer d'utiliser rm sur un fichier avec des espaces dans son nom, sans citer la chaîne ou échapper aux espaces

rm pense qu'il travaille 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".

Le fait de citer le nom du fichier permet à rm de supprimer le bon fichier.

 rm 'sauvegarde à supprimer' 

Utilisation de rm avec un nom de fichier entre guillemets pour surmonter le problème des espaces dans le nom de fichier

Vous pouvez également échapper les espaces avec des barres obliques inverses « \ », comme ceci :

 rm sauvegarde\ vers\ supprimer 

Utilisation de rm avec un nom de fichier avec des espaces échappés pour surmonter le problème des espaces dans le nom de fichier

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 de ce qui est 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.

CONNEXION: Supprimer les fichiers de plus de x jours sous Linux