2009-07-20 12:40:03 +0000 2009-07-20 12:40:03 +0000
101
101

Come rimuovere un collegamento simbolico a una directory?

Ho creato un link simbolico con il seguente comando:

ln -s ../test5

Voglio rimuoverlo ora ma il mio rm fallisce:

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

Risposte (6)

122
122
122
2009-07-20 12:51:01 +0000

Rimuovere la barra finale:

Con prompt:

$ rm test5

Senza prompt:

$ rm -f test5

21
21
21
2009-07-20 12:54:12 +0000

Provate rm test5 (senza la barra di formazione).

La barra indica che ‘test5’ è una directory mentre in realtà è un file linking a una directory.

14
14
14
2009-07-20 13:06:36 +0000

Potete eseguire la rimozione della barra finale:

$ rm test5

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

In alternativa potete usare unlink:

$ unlink test5

Anche in questo caso dovete omettere la barra finale poiché state tentando di scollegare il collegamento simbolico, non la directory.

0
0
0
2019-05-02 03:05:12 +0000

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

Preferisco usare unlink piuttosto che rm perché la mia intenzione è più chiara e non c'è la possibilità di rimuovere erroneamente la vera directory invece del link. Assicuratevi che non ci sia un trailing / dopo il nome della directory, ad es:

unlink test5
0
0
0
2018-02-14 23:23:37 +0000

A volte, se usate il completamento automatico per nominare il link che volete cancellare, potreste non vedere una barra finale, ma è “a metà” e quella barra invisibile dà ancora l'errore di cancellazione quando si cerca di rimuovere quel link.

Quindi in questo caso digitate carattere per carattere il link da cancellare come “test5” come ad esempio rm test5.

-1
-1
-1
2009-07-20 12:42:27 +0000

Mi sento stupido a chiederlo, ma hai provato con rm -r? Dato che è un link simbolico non dovrebbe cancellare la destinazione.

Edit: Ho appena provato, è corretto

Edit 2: rmdir dice nella sua prima riga della pagina man che cancella le directory vuote. Penserei che, poiché è un link, abbia il bit di directory controllato nelle sue proprietà dei file, ma poiché rmdir non sospetta che sia così, sputa errori. Basta usare rm -r