Come rimuovere un collegamento simbolico a una directory?


100

Ho creato un collegamento simbolico con il seguente comandante:

ln -s ../test5

Voglio rimuoverlo ora ma il mio rm non riesce:

$ 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/

Come posso rimuovere il mio link simbolico? (Ubuntu 8.10, bash)


4
SUGGERIMENTO: rm -r link/elimina il contenuto dell'obiettivo
Gayan Weerakutti,

Risposte:


121

Rimuovi la barra finale:

Con prompt:

$ rm test5

Senza sollecito:

$ rm -f test5


Dice permission denied.
1,21 gigawatt

1
Senza barra finale. Quindi test5/non è corretto.
pylover

20

Prova rm test5
(senza la barra di allenamento).

La barra indica che "test5" è un direattore mentre in realtà è un file che si collega a una directory.


14

Puoi eseguire la rimozione della barra finale:

$ rm test5

Questo rimuoverà il file (cioè il link simbolico).

In alternativa puoi usare unlink:

$ unlink test5

Anche in questo caso è necessario omettere la barra finale poiché si sta tentando di scollegare il collegamento simbolico e non la directory.


0

A volte se si utilizza il completamento automatico per assegnare un nome al collegamento che si desidera eliminare, è possibile che non venga visualizzata una barra finale ma è "metà lì" e tale barra invisibile restituisce comunque l'errore di eliminazione quando si tenta di rimuovere quel collegamento.

Quindi in quel caso digitare carattere per carattere il collegamento da eliminare come "test5" come ad es. rm test5.


1
Mai sentito parlare di una barra invisibile. Che shell fa questo?
Kamil Maciorowski,

Penso che sia forse un riferimento al personaggio nascosto da linewrap + cursore?
bertieb,

0

Il problema nell'OP è il trailing /, quindi test5/genera un errore ma test5funziona.

Preferisco usare unlinkpiuttosto che rmla mia intenzione è più chiara e non c'è alcuna possibilità di rimuovere erroneamente la directory reale invece del collegamento. Assicurati che non ci siano tracce /dopo il nome della directory, ad esempio:

unlink test5

-1

Mi sento sciocco chiederti, ma ci hai provato rm -r? Dal momento che è un collegamento simbolico non dovrebbe eliminare la destinazione.

Modifica: appena provato, è corretto

Modifica 2: rmdir dice nella sua prima riga della pagina man che elimina le directory vuote. Penserei perché è un collegamento in cui è stato verificato il bit di directory sulle proprietà del suo file, ma perché rmdir non sospetta che in questo caso sputi errori. Usa solo rm -r


2
Questo mi chiederà di eliminare i file nella directory, non è quello che voglio, voglio cancellare solo il link
Peter Smit,

La domanda era perché interattivo era definito nel mio .profile. Aggiunta la risposta a rm -r. Non funziona ancora.
Peter Smit,

Hai lasciato il finale "/" per questo non è riuscito
bobby,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.