41 votes

Que fait rm -rf ?

Que fait rm -rf lorsqu'il est utilisé pour supprimer des fichiers ou des répertoires?

Comment fonctionnent ensemble les options -r et -f?

66voto

La commande rm -rf est la même que rm -r -f.

À partir de la page de manuel de rm (tapez man rm dans un terminal pour la voir), -r fait :

supprimer les répertoires et leurs contenus de manière récursive

Et -f fait :

ignorer les fichiers et arguments inexistants, sans jamais demander confirmation

Donc en combinaison, ils font les deux.

En fait, c'est une commande très dangereuse car elle supprimera de manière récursive tout ce qui se trouve dans le répertoire que vous choisissez (ou simplement le fichier que vous choisissez), et ce sans jamais vous demander confirmation.

Veuillez utiliser cette commande avec prudence !

26voto

Paul Points 71

En plus de la réponse correcte précédente, je voudrais vous apprendre à pêcher :

Lorsque vous n'êtes pas sûr du fonctionnement d'une commande, quelles options elle a et ce qu'elle fait, ouvrez un terminal et tapez

man 

Par exemple :

man rm

Une fois là-dedans, vous pouvez rechercher l'option. Une page de manuel peut être très longue à lire, donc dans le terminal tapez :

/

Donc par exemple, en tapant :

/-f

Vous pouvez facilement accéder à :

-f, --force
              ignorer les fichiers et les arguments inexistants, ne jamais demander

Après avoir tapé /-r, vous obtiendrez :

-r, -R, --recursive
              supprimer les répertoires et leurs contenus de manière récursive

Vous pouvez vous déplacer entre les résultats de recherche en utilisant n (suivant) et N (précédent).

Bonus :

Si vous avez besoin de faire quelque chose, mais que vous ne connaissez pas le nom de la commande, utilisez apropos pour rechercher dans les pages de manuel :

apropos 

Par exemple :

apropos listing de répertoire

8voto

Chris Points 538

rm est l'abbréviation de remove. Le drapeau r est pour supprimer les répertoires et leurs contenus de manière récursive et le f signifie force, et il remplace toutes les demandes de confirmation.

3voto

Sergiy Kolodyazhnyy Points 97292

Comme cela a déjà été mentionné, rm -rf est destiné à supprimer de force des fichiers de manière récursive, où est un répertoire (bien que cela puisse être également un fichier).

Le but du -r (suppression récursive) est que rm ne peut pas supprimer les répertoires s'ils ne sont pas vides, simplement parce que l'appel système sous-jacent que rm utilise (unlink) agit uniquement sur des répertoires vides. Ainsi, ce que fait le drapeau -r, c'est réaliser une recherche en profondeur d'abord en descendant dans les répertoires, en supprimant d'abord les fichiers, et ensuite seulement lorsque le répertoire est vide - il le supprimera. Le même effet est obtenu avec la commande find avec le drapeau -delete (lorsque vous ne spécifiez pas de filtrage par -type, mais c'est une autre histoire).

En ce qui concerne -f, il fait deux choses - il évite de demander si vous voulez supprimer le fichier ou non (par exemple, lorsque vous supprimez un fichier appartenant à un autre utilisateur depuis votre répertoire, il ne montrera pas la demande de confirmation rm: remove write-protected regular empty file 'f1'?), et ignore les fichiers inexistants. Par exemple, avec un nom de fichier inexistant, vous devriez obtenir une erreur rm: cannot remove 'nonexistent': No such file or directory.

Voir aussi:

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X