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?
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?
Réponses:
La commande rm -rf
est la même que rm -r -f
.
À partir de rm
la page de manuel de (tapez man rm
un terminal pour le voir) -r
:
remove directories and their contents recursively
Et -f
fait:
ignore nonexistent files and arguments, never prompt
Donc, en combinaison, ils font les deux.
Veuillez utiliser cette commande avec précaution!
rm -rf /
supprimera théoriquement tous les fichiers de votre ordinateur qui résident dans un répertoire pour lequel vous disposez d'une autorisation d'écriture. Si vous êtes root, cela signifie anéantir tout le système. (En pratique, cela ne fonctionne pas parce que GNU rm
a un cas spécial qui refuse d'autoriser à rm -r /
moins que vous ne le disiez également --no-preserve-root
.)
rm -rf /
de voir s'il est correctement pris.
En plus de la bonne réponse précédente, je voudrais vous apprendre à pêcher:
Lorsque vous n'êtes pas sûr du fonctionnement d'une commande, de ses options et de ses fonctions, ouvrez un terminal et tapez
man <command>
Par exemple:
man rm
Une fois sur place, vous pouvez rechercher l'option. Une page de manuel peut être très longue à lire, donc dans le type de terminal:
/<pattern>
Ainsi, par exemple, faire:
/-f
Vous pouvez facilement atterrir sur:
-f, --force
ignore nonexistent files and arguments, never prompt
Pour -r do:
-r, -R, --recursive
remove directories and their contents recursively
Vous pouvez vous déplacer entre les résultats de la recherche en utilisant n
(suivant) et N
(précédent).
Si vous devez faire quelque chose mais que vous ne connaissez pas le nom de la commande, utilisez apropos
pour rechercher dans les pages de manuel:
apropos <pattern>
Par exemple:
apropos directory listing
rm
est l'abréviation de remove. L' r
indicateur consiste à supprimer les répertoires et leur contenu de manière récursive et à f
forcer les moyens, et il remplace toutes les invites de confirmation.
r flag is to remove directories
n'est pas juste ... il supprime les répertoires avec son contenu, c'est une opération récursive ... selon vos mots, cela ne supprimerait que les répertoires, qu'en est-il des sous-répertoires, des fichiers en dessous? comme l'entrée de répertoire contient uniquement le mappage nom-inode, cela n'a aucun sens ..
Comme cela a déjà été mentionné, rm -rf <ARG>
est destiné à supprimer de force les fichiers de manière récursive, où se <ARG>
trouve un répertoire (bien qu'il puisse être un fichier très bien).
L'intérêt de -r
(suppression récursive) est de rm
ne pas pouvoir supprimer les répertoires s'ils ne sont pas vides, simplement parce que l'appel système sous-jacent qui rm
utilise ( unlink ) ne fonctionne que sur les répertoires vides. Ainsi, ce que fait l' -r
indicateur, c'est la recherche en profondeur d'abord descendant dans les répertoires et supprimant les fichiers en premier, et seulement ensuite lorsque le répertoire est vide - il le supprimera. Ce même effet est obtenu via une find
commande avec -delete
indicateur (lorsque vous ne spécifiez pas le filtrage par-type
, mais c'est une autre histoire).
Quant à -f
, il fait deux choses - l'une empêche de demander si vous souhaitez supprimer le fichier ou non (comme lorsque vous supprimez un fichier appartenant à un autre utilisateur de votre répertoire, il n'affichera pas d' rm: remove write-protected regular empty file 'f1'?
invite de confirmation) et ignore fichiers inexistants. Ainsi, par exemple, avec un nom de fichier inexistant, vous devriez obtenir une rm: cannot remove 'nonexistent': No such file or directory
erreur.
Voir également: