¿Qué hace rm -rf
cuando se usa para eliminar archivos o directorios?
¿Cómo funcionan juntas las opciones -r
y -f
?
¿Qué hace rm -rf
cuando se usa para eliminar archivos o directorios?
¿Cómo funcionan juntas las opciones -r
y -f
?
Respuestas:
El comando rm -rf
es el mismo que rm -r -f
.
Desde rm
la página de manual de (escriba man rm
un terminal para verlo) -r
hace:
remove directories and their contents recursively
Y -f
hace:
ignore nonexistent files and arguments, never prompt
Entonces en combinación hacen ambas cosas.
¡Utilice este comando con cuidado!
rm -rf /
teóricamente eliminará todos los archivos de su computadora que residen en un directorio para el que tiene permiso de escritura. Si eres root, eso significa eliminar todo el sistema. (En la práctica, esto no funcionará porque GNU rm
tiene un caso especial que se niega a permitir rm -r /
a menos que también diga --no-preserve-root
.)
rm -rf /
de ver si está atrapado correctamente.
Además de la respuesta correcta anterior, me gustaría enseñarle a pescar:
Cuando no esté seguro de cómo funciona un comando, qué opciones tiene y qué hace, abra un terminal y escriba
man <command>
Por ejemplo:
man rm
Una vez allí, puede buscar la opción. Una página de manual puede ser muy larga de leer, así que en el tipo de terminal:
/<pattern>
Entonces, por ejemplo, haciendo:
/-f
Puede aterrizar fácilmente a:
-f, --force
ignore nonexistent files and arguments, never prompt
Para -r hacer:
-r, -R, --recursive
remove directories and their contents recursively
Puede moverse entre los resultados de búsqueda usando n
(siguiente) y N
(anterior).
Si necesita hacer algo, pero no conoce el nombre del comando, use apropos
para buscar en páginas de manual:
apropos <pattern>
Por ejemplo:
apropos directory listing
rm
es la abreviatura de eliminar. La r
bandera es para eliminar directorios y sus contenidos de forma recursiva y los f
medios se fuerzan, y anula cualquier solicitud de confirmación.
r flag is to remove directories
no es correcto ... elimina directorios junto con su contenido, es una operación recursiva ... de acuerdo con sus palabras, solo eliminaría los directorios, ¿qué pasa con los subdirectorios, los archivos que se encuentran debajo? como entrada de directorio contiene asignaciones de nombres de nodo-i-solamente, esto sólo no tiene ningún sentido ..
Como ya se mencionó, rm -rf <ARG>
está destinado a eliminar los archivos de forma recursiva, donde <ARG>
hay un directorio (aunque puede ser un archivo muy bien).
El objetivo de -r
(eliminación recursiva) es que rm
no puede eliminar directorios si no están vacíos, simplemente porque la llamada al sistema subyacente que rm
usa ( desvincular ) opera solo en directorios vacíos. Por lo tanto, lo -r
que hace el indicador es una búsqueda profunda que desciende en directorios y elimina archivos primero, y solo luego cuando el directorio está vacío, lo eliminará. Este mismo efecto se logra mediante un find
comando con -delete
bandera (cuando no especificas el filtrado por -type
, pero esa es otra historia).
En cuanto a -f
, hace dos cosas: una evita que se pregunte si desea eliminar el archivo o no (como cuando elimina un archivo propiedad de otro usuario de su directorio, no mostrará un rm: remove write-protected regular empty file 'f1'?
mensaje de confirmación), e ignora archivos no existentes Entonces, por ejemplo, con un nombre de archivo inexistente, debería obtener un rm: cannot remove 'nonexistent': No such file or directory
error.
Ver también: