Différence entre rmdir et rm -r

9

Je supprime généralement les répertoires en utilisant rm :

rm -r myDir

Cependant, je connais une autre commande, rmdir , qui semble faire aussi bien le travail:

rmdir myDir

Quelle est la différence entre ces deux commandes et quand doit-on les utiliser chacune?

Joe
la source
2
Votre rmdir fonctionne-t-il s'il y a des fichiers dans le sous-répertoire?
Jeff Schaller
1
Voir aussi l'appel système éponyme rmdir(2)qui ne peut supprimer que des répertoires vides.
David Foerster du
4
Soit dit en passant, il existe une procédure "correcte" pour utiliser rm -r: (1) Tapez la commande, mais ne la saisissez pas (2) Éloignez vos mains du clavier (3) Comptez jusqu'à cinq (4) Appuyez sur ENTRÉE. J'ai commencé à faire quelque chose comme ça avec toutes les commandes dangereuses, pour me donner une chance de regarder ce que je fais, de m'assurer d'avoir tapé les choses correctement, de réfléchir à des conséquences inattendues, etc. Parfois, cela m'amène pour effacer ma commande et faire des vérifications supplémentaires en premier, par exemple.
AJB
3
@ajb rm -rf ~ /*- nettoie mon répertoire personnel. Ou attendez, peut-être nettoyer le système. Toujours bon de revérifier;).
Tom Carpenter
1
@ajb Notez que rmdiret rm -rsont deux cordes de la même longueur :-)
Kusalananda

Réponses:

14

rm -rsupprime un répertoire et tout son contenu; rmdirne supprimera un répertoire que s'il est vide. J'aime utiliser ce qui suit pour supprimer un répertoire et tout son contenu:

rm -rf <directory_to_be_removed>
Scott Kayser
la source
17
Notez que vous ne devriez généralement pas utiliser -fsi vous n'en avez pas besoin. Il est pratique à utiliser à -rfchaque fois, mais il désactive (presque) tous les contrôles de sécurité.
allo
5
-1 pour une recommandation inutile du -fdrapeau de RM qui peut avoir des conséquences imprévisibles et irréversibles
cat
Alors, rmdirc'est juste rm -d?
Stan Strum
@StanStrum -dn'est pas une option standard pour rm.
Kusalananda
@cat La rmcommande en général peut avoir ces conséquences. L' -findicateur est utile lors de l'exécution sous set -edans un script. Je suis d'accord que l'utilisation sans réfléchir n'est pas nécessaire .
Kusalananda
1

Vous devez l'utiliser rm -rlorsque vous souhaitez supprimer récursivement un répertoire et tout son contenu, ou lorsque la cible peut être un répertoire ou un fichier et que vous souhaitez le supprimer indépendamment de ce qu'il est.

Vous devez utiliser rmdirlorsque vous souhaitez supprimer un répertoire vide.

La rmdircommande est utile car elle refuse de supprimer les répertoires et fichiers non vides. Cela sert de prise de sécurité dans les situations où vous pouvez être absolument sûr que ce que vous supprimez est un répertoire et que le répertoire est vide avant de le supprimer (par exemple dans un script) et que vous souhaitez le traiter comme une condition d'erreur autrement.

Kusalananda
la source