Tengo un enlace simbólico a un directorio importante. Quiero deshacerme de ese enlace simbólico, manteniendo el directorio detrás de él.
Lo intenté rm
y volví rm: cannot remove 'foo'
.
Probé rmdir
y regresé rmdir: failed to remove 'foo': Directory not empty
a continuación, que avanzaba a través rm -f
, rm -rf
ysudo rm -rf
Luego fui a buscar mis copias de seguridad.
¿Hay alguna manera de deshacerse del enlace simbólico sin tirar al bebé con el agua del baño?
rm -r link/
elimina el contenido en el objetivoThen I went to find my back-ups
- Eso me hizo reír.Respuestas:
Básicamente, debe indicarle que elimine un archivo , no que elimine un directorio . Creo que la diferencia entre
rm
yrmdir
existe debido a las diferencias en la forma en que la biblioteca C trata a cada uno.En cualquier caso, el primero debería funcionar, mientras que el segundo debería quejarse de que foo es un directorio.
Si no funciona como se indica arriba, verifique sus permisos. Necesita permiso de escritura en el directorio que lo contiene para eliminar archivos.
fuente
rm -rf folderName
(sin arrastrar /) para eliminar el enlace simbólico. Amazon Linux se comporta de esta manera bajo ciertas circunstancias, por ejemplo.-r
con un enlace simbólico a menos que quiera perder todo lo que contiene .-f
tampoco debería ser necesario, excepto quizás para anular los permisos de archivo.unlink
no tiene relación con laln
operación AKA 'link'. El nombre seunlink
refiere al proceso de desvincular / eliminar un archivo de la tabla de archivos del sistema de archivos para que el contenido se separe de cualquier referencia a ellos; se desvinculan. Es un nombre confuso que es completamente engañoso cuando se aplica a enlaces y enlaces simbólicos en particular.unlink
funcionará con enlaces simbólicos porque funciona con cualquier archivo independientemente del tipo.alias rm="rm -i"
creo que ha guardado más pieles que cualquier otra cosa.use el comando "desvincular" y asegúrese de no tener el / al final
Creo que esto puede ser problemático si lo estoy leyendo correctamente.
https://linux.die.net/man/2/unlink
fuente
~/c/a/file
,/c/b/
, conln -s ~/c/a ~/c/b/
. En~/c/b/
,rm a/
no funciona,rm -rf a/
solo vacía el originala
.unlink a
funciona perfectamente yunlink a/
no hace nada.unlink
es simplemente un alias pararm
. Demuestra que serm
debe utilizar la disciplina adecuada cuando se trata de cualquier parte de la estructura de su directorio.rm -f
, se eliminará silenciosamente un enlace, exista o no, mientras queunlink
se quejará si el enlace no está presente. No hay una opción '-f' equivalente para desvincular, hace que el script sea más complejo.unlink
Puede eliminar archivos normales. es menos característico querm
y no específico para enlaces simbólicos.rm
tampoco elimina directorios sin la-r
bandera. Así que recomiendo preferir rm, tiene banderas para verbose e interactivo; así como mensajes de advertencia y error significativos.rm debería eliminar el enlace simbólico.
fuente
Use
rm symlinkname
pero no incluya una barra diagonal al final (no use:)rm symlinkname/
. Luego se le preguntará si desea eliminar el enlace simbólico,y
para responder que sí.fuente
Asumiendo que en realidad es un enlace simbólico,
Debería resolverlo, pero como no puede, habilitamos el código latente destinado a otro caso que ya no existe pero que hace lo correcto aquí.
fuente
Si rm no puede eliminar un enlace simbólico, tal vez necesite mirar los permisos en el directorio que contiene el enlace simbólico. Para eliminar entradas de directorio, necesita permiso de escritura en el directorio que lo contiene.
fuente
Suponiendo que su configuración es algo como:,
ln -s /mnt/bar ~/foo
entonces debería poder hacerrm foo
sin problemas. Si no puede, asegúrese de ser el propietario delfoo
y tener permiso para escribir / ejecutar el archivo. La eliminaciónfoo
no se tocarábar
, a menos que lo haga de forma recursiva.fuente
En CentOS, simplemente ejecute
rm linkname
y le pedirá "¿eliminar el enlace simbólico?". Escriba Yy Enter, el enlace desaparecerá y el directorio estará seguro.fuente
Tuve este problema con MinGW (en realidad Git Bash) ejecutándose en un servidor de Windows. Ninguna de las sugerencias anteriores parecía funcionar. Al final, hice una copia del directorio en caso de que luego eliminé el enlace flexible en el Explorador de Windows y luego eliminé el elemento en la Papelera de reciclaje. Hizo ruidos como si estuviera borrando los archivos pero no lo hizo. ¡Sin embargo, haz una copia de seguridad!
fuente