Diferencia entre rmdir y rm -r

9

Usualmente borro directorios usando rm :

rm -r myDir

Sin embargo, conozco otro comando, rmdir , que parece hacer el trabajo igual de bien:

rmdir myDir

¿Cuál es la diferencia entre estos dos comandos y cuándo se deben usar?

Joe
fuente
2
¿Funciona su rmdir si hay archivos en el subdirectorio?
Jeff Schaller
1
Consulte también la llamada del sistema homónimo rmdir(2)que solo puede eliminar directorios vacíos.
David Foerster
44
Por cierto, hay un procedimiento "correcto" para usar rm -r: (1) Escriba el comando, pero no lo ingrese (2) Retire las manos del teclado (3) Cuente hasta cinco (4) Presione ENTRAR. He comenzado a hacer algo como esto con todos los comandos peligrosos, para darme la oportunidad de ver lo que estoy haciendo, asegurarme de que escribí las cosas correctamente, pensar si podría haber consecuencias inesperadas, etc. De vez en cuando esto me lleva para borrar mi comando y hacer algunas verificaciones adicionales primero, por ejemplo.
ajb
3
@ajb rm -rf ~ /*: limpia mi directorio de inicio. O espere, quizás limpie el sistema. Siempre es bueno verificar dos veces;).
Tom Carpenter
1
@ajb Tenga en cuenta que rmdiry rm -rson dos cadenas de la misma longitud :-)
Kusalananda

Respuestas:

14

rm -relimina un directorio y todos sus contenidos; rmdirsolo eliminará un directorio si el directorio está vacío. Me gusta usar lo siguiente para eliminar un directorio y todo su contenido:

rm -rf <directory_to_be_removed>
Scott Kayser
fuente
17
Tenga en cuenta que, por lo general, no debe usarlo -fsi no lo necesita. Es útil de usar -rfsiempre, pero deshabilita (casi) todas las verificaciones de seguridad.
allo
55
-1 por recomendación innecesaria de la -fbandera de rm que puede tener consecuencias imprevisibles e irrevertables
cat
¿Entonces rmdires justo rm -d?
Stan Strum
@StanStrum -dno es una opción estándar para rm.
Kusalananda
@cat El rmcomando en general puede tener estas consecuencias. El -findicador es útil cuando se ejecuta set -een un script. Estoy de acuerdo en que usar sin pensar es innecesario .
Kusalananda
1

Debe usarlo rm -rcuando desee eliminar de forma recursiva un directorio y todo su contenido, o cuando el destino puede ser un directorio o archivo y desee eliminarlo independientemente de lo que sea.

Debe usarlo rmdircuando desee eliminar un directorio vacío.

El rmdircomando es útil ya que se niega a eliminar directorios y archivos no vacíos. Esto sirve como una trampa de seguridad en situaciones en las que es posible que desee estar absolutamente seguro de que lo que está eliminando es un directorio y que el directorio está vacío antes de eliminarlo (por ejemplo, en un script) y desea tratarlo como una condición de error de otra manera.

Kusalananda
fuente