web-dev-qa-db-fra.com

Que fait rm -rf?

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

Comment les options -r et -f fonctionnent-elles ensemble?

22
TellMeWhy

La commande rm -rf est identique à rm -r -f.

A partir de la page de manuel de rm (tapez man rm dans un terminal pour le consulter) -r:

remove directories and their contents recursively

Et -f fait:

ignore nonexistent files and arguments, never Prompt

Donc, en combinaison, ils font les deux.

En fait, il s’agit d’une commande très dangereuse car elle supprimera récursivement tout le contenu du répertoire que vous choisissez (ou supprimera simplement le fichier que vous choisissez) et le fera sans vous le demander.

Veuillez utiliser cette commande avec précaution!

50
user364819

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

Lorsque vous ne savez pas comment une commande fonctionne, quelles options ont et ce qu’elle fait, ouvrez un terminal et tapez

man <command>

Par exemple:

man rm

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

/<pattern>

Donc, par exemple, en faisant:

/-f

Vous pouvez facilement atterrir à:

-f, --force
              ignore nonexistent files and arguments, never Prompt

Pour -r faire:

-r, -R, --recursive
              remove directories and their contents recursively

Vous pouvez vous déplacer entre les résultats de la recherche en utilisant n (next) et N (previous).

Si vous devez faire quelque chose, mais que vous ne connaissez pas le nom de la commande, utilisez apropos pour effectuer une recherche dans les pages de manuel:

apropos <pattern>

Par exemple:

apropos directory listing
22
Federico Ponzi

rm est l'abréviation de remove. L'indicateur r permet de supprimer les répertoires et leur contenu de manière récursive. f signifie forcer et remplace toutes les invites de confirmation.

8
Chris

Comme cela a déjà été mentionné, rm -rf <ARG> est conçu pour supprimer de manière récursive des fichiers, où <ARG> est un répertoire (bien que ce puisse être un fichier très bien).

Le point entier de -r (suppression récursive) est que rm ne peut pas supprimer les répertoires s'ils ne sont pas vides, tout simplement parce que l'appel système sous-jacent utilisé par rm ( nlink ) fonctionne uniquement sur des répertoires vides. Ainsi, le drapeau -r fait recherche en profondeur d'abord en descendant dans les répertoires et en supprimant les fichiers en premier, puis seulement si le répertoire est vide - il sera supprimé. Ce même effet est obtenu via la commande find avec l'indicateur -delete (lorsque vous ne spécifiez pas le filtrage par -type, mais c'est une autre histoire).

En ce qui concerne -f, il a deux fonctions: l’une empêche d’indiquer si vous souhaitez ou non supprimer le fichier (par exemple, lorsque vous supprimez un fichier appartenant à un autre utilisateur de votre répertoire, il n’affichera pas rm: remove write-protected regular empty file 'f1'? confirmation de confirmation), et ignore les fichiers non existants. Ainsi, par exemple, avec un nom de fichier inexistant, vous devriez obtenir une erreur rm: cannot remove 'nonexistent': No such file or directory.

Voir également:

2
Sergiy Kolodyazhnyy