¿Cómo eliminar un enlace simbólico a un directorio?

100

Hice un enlace simbólico con el siguiente comando:

ln -s ../test5

Quiero eliminarlo ahora pero mi rm falla:

$ rm -Rf test5/
rm: cannot remove `test5/': Not a directory
$ rm test5/
rm: cannot remove directory `test5/': Is a directory
$ rmdir test5/
rmdir: test5/: Not a directory
$rm -r test5/
rm: cannot remove `test5/': Not a directory

$ls -l
 0 lrwxrwxrwx  1 peter peter    8 Jul 20 15:30 test5 -> ../test5/

¿Cómo puedo eliminar mi enlace simbólico? (Ubuntu 8.10, bash)

Peter Smit
fuente
44
CONSEJO: rm -r link/elimina el contenido en el objetivo
Gayan Weerakutti

Respuestas:

121

Elimine la barra inclinada final:

Con aviso:

$ rm test5

Sin aviso:

$ rm -f test5

Swanand
fuente
Dice permission denied.
1.21 gigavatios
1
Sin barra oblicua. Entonces test5/es incorrecto.
pylover el
20

Prueba rm test5
(sin la barra de entrenamiento).

La barra indica que 'test5' es un directorio mientras que en realidad es un archivo que se vincula a un directorio.

pelmas
fuente
14

Puede ejecutar la eliminación de la barra diagonal final:

$ rm test5

Esto eliminará el archivo (es decir, el enlace simbólico).

Alternativamente, puede usar desvincular:

$ unlink test5

Una vez más, debe omitir la barra diagonal final ya que está intentando desvincular el enlace simbólico, no el directorio.

Callum
fuente
0

A veces, si usa la función de autocompletar para nombrar el enlace que desea eliminar, es posible que no vea una barra inclinada final, pero está 'a medio camino' y esa barra invisible aún da el error de eliminación al intentar eliminar ese enlace.

Entonces, en ese caso, escriba carácter por carácter el enlace que se eliminará como "test5" como, por ejemplo. rm test5.

user872812
fuente
1
Nunca he oído hablar de tala invisible. ¿Qué caparazón hace esto?
Kamil Maciorowski
¿Creo que es posiblemente una referencia al personaje que está oculto por linewrap + cursor?
bertieb
0

El problema en el OP es el seguimiento /, por lo que test5/arroja un error pero test5funciona.

Prefiero usar en unlinklugar de hacerlo, rmya que mi intención es más clara y no hay posibilidad de eliminar por error el directorio real en lugar del enlace. Asegúrese de que no haya ningún rastro /después del nombre del directorio, por ejemplo:

unlink test5
isapir
fuente
-1

Me siento tonto preguntando, pero ¿lo has intentado rm -r? Como es un enlace simbólico, no debería eliminar el objetivo.

Editar: solo lo intenté, es correcto

Edición 2: rmdir dice que en su primera línea de la página man elimina los directorios vacíos. Creo que, debido a que es un enlace, tenía el bit de directorio verificado en sus propiedades de archivo, pero porque rmdir no sospecha que ese sea el caso, escupe errores. Solo usa rm -r

poli
fuente
2
Esto me pedirá que elimine los archivos del directorio, eso no es lo que quiero, quiero eliminar solo el enlace
Peter Smit el
La pregunta fue porque interactiva se definió en mi .profile. Se agregó la respuesta a rm -r. Aún no funciona.
Peter Smit el
Dejaste el final '/' por eso falló
bobby