Tengo un directorio como este:
$ ls -l
total 899166
drwxr-xr-x 12 me scicomp 324 Jan 24 13:47 data
-rw-r--r-- 1 me scicomp 84188 Jan 24 13:47 lod-thin-1.000000-0.010000-0.030000.rda
drwxr-xr-x 2 me scicomp 808 Jan 24 13:47 log
lrwxrwxrwx 1 me scicomp 17 Jan 25 09:41 msg -> /home/me/msg
Y quiero eliminarlo usando rm -r
.
Sin embargo, tengo miedo de rm -r
que siga el enlace simbólico y elimine todo en ese directorio (que es muy malo).
No puedo encontrar nada sobre esto en las páginas de manual. ¿Cuál sería el comportamiento exacto de ejecutar rm -rf
desde un directorio por encima de este?
rm -rf somesymlink/
, lo cual es destructivo con el seguimiento/
. Si el 5% de los lectores hubieran experimentado, y tal experimento lleva 2.5 minutos, eso es 5700 minutos, o 95 horas, o una contribución de $ 6000 a la sociedad a $ 60 / hora. Creo que a todos nos gusta TAN cómo es, hagamos y respondamos preguntas juntos: 3Respuestas:
Ejemplo 1: Eliminar un directorio que contiene un enlace suave a otro directorio.
Entonces, vemos que el objetivo del enlace suave sobrevive.
Ejemplo 2: Eliminar un enlace suave a un directorio
Solo, el enlace suave se elimina. El objetivo del enlace suave sobrevive.
Ejemplo 3: Intento de eliminar el objetivo de un enlace suave
El archivo en el destino del enlace simbólico no sobrevive.
Los experimentos anteriores se realizaron en un sistema Debian GNU / Linux 9.0 (stretch).
fuente
Su directorio / home / me / msg estará seguro si rm -rf el directorio desde el que ejecutó ls. Solo se eliminará el enlace simbólico en sí, no el directorio al que apunta.
Lo único de lo que sería cauteloso sería si llamaras algo así como "rm -rf msg /" (con la barra diagonal final). No hagas eso porque eliminará el directorio al que apunta msg, en lugar del enlace simbólico msg sí mismo.
fuente
rm
debería eliminar archivos y directorios. Si el archivo es un enlace simbólico, el enlace se elimina, no el destino. No interpretará un enlace simbólico. Por ejemplo, cuál debería ser el comportamiento al eliminar 'enlaces rotos': las salidas de rm con 0 no con un valor distinto de cero para indicar un errorfuente