@DanDascalescu Debido a que se responde trivialmente leyendo la página de manual, que debería ser el primer puerto de llamada de cualquier persona para responder una pregunta como esta.
David Richerby
99
Pruébalo y verás. (Spoiler: no.)
imallett
3
Mira por dónde ! ¡Esta pregunta debe ser una broma de DevRobot! ¿Cómo podrías llegar a tu nivel de karma sin consultar las páginas de manual? Ahora ... ¿eres humano?
Cbhihe
2
Totalmente se lee como una broma de hecho. Como si alguien tratara de preguntar, "¿la lluvia está hecha de H2O?" (Una buena respuesta sería: normalmente sí, pero en el futuro, una vez que el hombre haya destruido la mitad de la flora de la Tierra, el 50% se habrá convertido en ácido (como en la lluvia ácida))
syntaxerror
Respuestas:
52
El comando rm -rfes el mismo que rm -r -f.
Desde rmla página de manual de (escriba man rmun terminal para verlo) -rhace:
remove directories and their contents recursively
Y -fhace:
ignore nonexistent files and arguments, never prompt
Entonces en combinación hacen ambas cosas.
De hecho, es un comando muy peligroso porque eliminará de forma recursiva todo el contenido dentro del directorio que elija (o simplemente eliminará el archivo que elija), y lo hará sin que se lo solicite.
@Paul, ¿qué haría la barra? Uso este comando para eliminar directorios con frecuencia y sin barra.
Octopus
1
@Octopus, la barra inclinada indica el directorio raíz. 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 rmtiene un caso especial que se niega a permitir rm -r /a menos que también diga --no-preserve-root.)
CJM
10
De todos modos, no recomiendo tratar rm -rf /de ver si está atrapado correctamente.
cjm
2
@mattburnett También es peligroso en una VM: es posible que tenga monturas que no sean locales para la VM. En particular, creo que es bastante común montar uno de los directorios de la máquina host en la VM para compartir archivos entre el host y la VM.
hvd
1
@mattburnett Tengo máquinas virtuales. No tengo una VM en cuarentena. Simplemente no ejecuto ejecutables desconocidos. :)
hvd
22
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).
Prima:
Si necesita hacer algo, pero no conoce el nombre del comando, use apropospara buscar en páginas de manual:
rmes la abreviatura de eliminar. La rbandera es para eliminar directorios y sus contenidos de forma recursiva y los fmedios se fuerzan, y anula cualquier solicitud de confirmación.
Estrictamente hablando 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 ..
heemayl
Tienes razón, editaré mi respuesta.
Chris
1
-r elimina directorios y sus contenidos de forma recursiva.
Jim Balter
3
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 rmno puede eliminar directorios si no están vacíos, simplemente porque la llamada al sistema subyacente que rmusa ( desvincular ) opera solo en directorios vacíos. Por lo tanto, lo -rque 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 findcomando con -deletebandera (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 directoryerror.
Respuestas:
El comando
rm -rf
es el mismo querm -r -f
.Desde
rm
la página de manual de (escribaman rm
un terminal para verlo)-r
hace:Y
-f
hace:Entonces en combinación hacen ambas cosas.
De hecho, es un comando muy peligroso porque eliminará de forma recursiva todo el contenido dentro del directorio que elija (o simplemente eliminará el archivo que elija), y lo hará sin que se lo solicite.
¡Utilice este comando con cuidado!
fuente
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 GNUrm
tiene un caso especial que se niega a permitirrm -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
Por ejemplo:
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:
Entonces, por ejemplo, haciendo:
Puede aterrizar fácilmente a:
Para -r hacer:
Puede moverse entre los resultados de búsqueda usando
Prima:n
(siguiente) yN
(anterior).Si necesita hacer algo, pero no conoce el nombre del comando, use
apropos
para buscar en páginas de manual:Por ejemplo:
fuente
rm
es la abreviatura de eliminar. Lar
bandera es para eliminar directorios y sus contenidos de forma recursiva y losf
medios se fuerzan, y anula cualquier solicitud de confirmación.fuente
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 querm
no puede eliminar directorios si no están vacíos, simplemente porque la llamada al sistema subyacente querm
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 unfind
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á unrm: 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 unrm: cannot remove 'nonexistent': No such file or directory
error.Ver también:
fuente