@DanDascalescu Parce qu'il est trivialement répondu en lisant la page de manuel, qui devrait être le premier port d'escale de quiconque pour répondre à une question comme celle-ci.
David Richerby
9
Essayez-le et voyez. (Spoiler: ne le faites pas.)
imallett
3
Par Golly! Cette question doit être une farce de DevRobot! Comment pourriez-vous atteindre votre niveau de karma sans jamais consulter les pages de manuel. Maintenant ... êtes-vous humain?!
Cbhihe
2
Se lit comme une farce en effet. Comme si quelqu'un essayait de demander, "la pluie est-elle faite de H2O?" (Une bonne réponse serait: normalement oui, mais à l'avenir, une fois que l'homme aura détruit la moitié de la flore de la Terre, 50% de celle-ci se sera transformée en acide (comme dans les pluies acides))
syntaxerror
Réponses:
52
La commande rm -rfest la même que rm -r -f.
À partir de rmla page de manuel de (tapez man rmun terminal pour le voir) -r:
remove directories and their contents recursively
Et -ffait:
ignore nonexistent files and arguments, never prompt
Donc, en combinaison, ils font les deux.
En fait, c'est une commande très dangereuse car elle supprimera récursivement tout ce qui se trouve dans le répertoire que vous choisissez (ou supprimera simplement le fichier que vous choisissez), et elle le fera sans jamais vous le demander.
@Paul, que ferait la barre oblique? J'utilise cette commande pour supprimer souvent les répertoires et sans barre oblique.
Octopus
1
@Octopus, la barre oblique indique à elle seule le répertoire racine. 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 rma un cas spécial qui refuse d'autoriser à rm -r /moins que vous ne le disiez également --no-preserve-root.)
cjm
10
Tout de même, je ne recommande pas d'essayer rm -rf /de voir s'il est correctement pris.
cjm
2
@mattburnett C'est aussi dangereux dans une VM: vous pouvez avoir des montages qui ne sont pas locaux sur la VM. En particulier, je pense qu'il est assez courant de monter l'un des répertoires de la machine hôte sur la machine virtuelle pour partager des fichiers entre l'hôte et la machine virtuelle.
hvd
1
@mattburnett J'ai des machines virtuelles. Je n'ai pas de machine virtuelle en quarantaine. Je ne lance simplement pas d'exécutables inconnus. :)
hvd
22
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).
Prime:
Si vous devez faire quelque chose mais que vous ne connaissez pas le nom de la commande, utilisez apropospour rechercher dans les pages de manuel:
rmest l'abréviation de remove. L' rindicateur consiste à supprimer les répertoires et leur contenu de manière récursive et à fforcer les moyens, et il remplace toutes les invites de confirmation.
Strictement parlant, ce 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 ..
heemayl
Vous avez raison, je vais modifier ma réponse.
Chris
1
-r supprime les répertoires et leur contenu de manière récursive.
Jim Balter du
3
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 rmne pas pouvoir supprimer les répertoires s'ils ne sont pas vides, simplement parce que l'appel système sous-jacent qui rmutilise ( unlink ) ne fonctionne que sur les répertoires vides. Ainsi, ce que fait l' -rindicateur, 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 findcommande avec -deleteindicateur (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 directoryerreur.
Réponses:
La commande
rm -rf
est la même querm -r -f
.À partir de
rm
la page de manuel de (tapezman rm
un terminal pour le voir)-r
:Et
-f
fait:Donc, en combinaison, ils font les deux.
En fait, c'est une commande très dangereuse car elle supprimera récursivement tout ce qui se trouve dans le répertoire que vous choisissez (ou supprimera simplement le fichier que vous choisissez), et elle le fera sans jamais vous le demander.
Veuillez utiliser cette commande avec précaution!
la source
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 GNUrm
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
Par exemple:
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:
Ainsi, par exemple, faire:
Vous pouvez facilement atterrir sur:
Pour -r do:
Vous pouvez vous déplacer entre les résultats de la recherche en utilisant
Prime:n
(suivant) etN
(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:Par exemple:
la source
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.la source
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 derm
ne pas pouvoir supprimer les répertoires s'ils ne sont pas vides, simplement parce que l'appel système sous-jacent quirm
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 unefind
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 unerm: cannot remove 'nonexistent': No such file or directory
erreur.Voir également:
la source