link - ver ruta enlace simbolico linux
Eliminar un enlace simbólico a un directorio (9)
Asumir que su configuración es algo como: ln -s /mnt/bar ~/foo
, entonces debería poder hacer un rm foo
sin ningún problema. Si no puedes, asegúrate de ser el propietario del foo
y tener permiso para escribir / ejecutar el archivo. Eliminar foo
no tocará la bar
, a menos que lo hagas recursivamente.
Tengo un enlace simbólico a un directorio importante. Quiero deshacerme de ese enlace simbólico, mientras mantengo el directorio detrás de él.
Intenté rm
y vuelvo rm: cannot remove ''foo''
.
rmdir
y volví a rmdir: failed to remove ''foo'': Directory not empty
Luego progresé a través de rm -f
, rm -rf
y sudo 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?
En CentOS, simplemente ejecute rm linkname
y se le preguntará "¿eliminar el enlace simbólico?". Escriba Y y Enter , el enlace desaparecerá y el directorio estará seguro.
Si rm no puede eliminar un enlace simbólico, quizás deba 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 contiene.
Suponiendo que en realidad es un enlace simbólico,
$ rm -d symlink
Debe resolverlo, pero dado que no podemos habilitar el código latente destinado a otro caso que ya no existe pero que hace lo correcto aquí.
Tuve este problema con MinGW (en realidad Git Bash) ejecutándose en un servidor Windows. Ninguna de las sugerencias anteriores parecía funcionar. Al final, hizo una copia del directorio en caso de que luego eliminara el enlace flexible en el Explorador de Windows y luego eliminara el elemento en la Papelera de reciclaje. Hizo ruidos como si estuviera borrando los archivos pero no lo hizo. Hacer una copia de seguridad sin embargo!
Use rm symlinkname
pero no incluya una barra diagonal al final (no use: rm symlinkname/
). A continuación, se le preguntará si desea eliminar el enlace simbólico, y
para responder que sí.
rm debe eliminar el enlace simbólico.
skrall@skrall-desktop:~$ mkdir bar
skrall@skrall-desktop:~$ ln -s bar foo
skrall@skrall-desktop:~$ ls -l foo
lrwxrwxrwx 1 skrall skrall 3 2008-10-16 16:22 foo -> bar
skrall@skrall-desktop:~$ rm foo
skrall@skrall-desktop:~$ ls -l foo
ls: cannot access foo: No such file or directory
skrall@skrall-desktop:~$ ls -l bar
total 0
skrall@skrall-desktop:~$
use el comando "desvincular" y asegúrese de no tener el / al final
$ unlink mySymLink
unlink () borra un nombre del sistema de archivos. Si ese nombre era el último enlace a un archivo y ningún proceso tiene el archivo abierto, el archivo se elimina y el espacio que estaba usando está disponible para su reutilización. Si el nombre era el último enlace a un archivo, pero en cualquier proceso que aún tenga el archivo abierto, el archivo seguirá existiendo hasta que se cierre el último descriptor de archivo que lo menciona.
Creo que esto puede ser problemático si lo leo correctamente.
Si el nombre se refiere a un enlace simbólico, el enlace se elimina.
Si el nombre hace referencia a un socket, fifo o dispositivo, el nombre para él se elimina, pero los procesos que tienen el objeto abierto pueden continuar usándolo.
# this works
rm foo
# versus
rm foo/
Básicamente, debe indicarle que elimine un archivo, no que elimine un directorio. Creo que la diferencia entre rm
y rmdir
existe debido a las diferencias en la forma en que la biblioteca de C trata cada una.
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, revise sus permisos. Necesita permiso de escritura en el directorio que contiene para eliminar archivos.