Que fait rm -rf
lorsqu'il est utilisé pour supprimer des fichiers ou des répertoires?
Comment fonctionnent ensemble les options -r
et -f
?
Que fait rm -rf
lorsqu'il est utilisé pour supprimer des fichiers ou des répertoires?
Comment fonctionnent ensemble les options -r
et -f
?
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.
Veuillez utiliser cette commande avec prudence !
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).
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
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:
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.