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

Jak usunąć dowiązanie symboliczne do katalogu?

Advertisement

Utworzyłem dowiązanie symboliczne z następującą komendą:

ln -s ../test5

Chcę go teraz usunąć, ale moje rm kończy się niepowodzeniem:

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

Jak mogę usunąć mój dowiązanie symboliczne? (Ubuntu 8.10, bash)

Advertisement
Advertisement

Odpowiedzi (6)

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

Usuń końcowy ukośnik:

Z podpowiedzią:

$ rm test5

Bez podpowiedzi:

$ rm -f test5

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

Spróbuj rm test5 (bez ukośnika treningowego).

Ukośnik wskazuje, że ‘test5’ jest direactory, podczas gdy w rzeczywistości jest to plik linkowany do katalogu.

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

Możesz użyć usuwając końcowy ukośnik:

$ rm test5

To usunie plik (tj. symlink).

Alternatywnie możesz użyć unlink:

$ unlink test5

Ponownie musisz pominąć ukośnik końcowy, ponieważ próbujesz odłączyć symlink, a nie katalog.

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

Problemem w OP jest kończące się /, więc test5/ wyrzuca błąd, ale test5 działa.

Wolę używać unlink niż rm, ponieważ moja intencja jest jaśniejsza i nie ma szansy na omyłkowe usunięcie prawdziwego katalogu zamiast linku. Upewnij się, że nie ma końcowego / po nazwie katalogu, np:

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

Czasami, jeśli używasz autocomplete do nazwania linku, który chcesz usunąć, możesz nie widzieć ukośnika, ale jest on “w połowie” i ten niewidoczny ukośnik nadal daje błąd usuwania, gdy próbujesz usunąć ten link.

Więc w tym przypadku wpisz znak po znaku link, który ma być usunięty jako “test5” jako np. rm test5.

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

Czuję się głupio pytając, ale czy próbowałeś rm -r? Ponieważ jest to dowiązanie symboliczne, nie powinno usuwać celu.

Edycja: Właśnie spróbowałem, jest poprawny

Edycja 2: rmdir mówi w pierwszej linii strony man, że usuwa puste katalogi. Pomyślałbym, że ponieważ jest to link, ma on zaznaczony bit katalogu we właściwościach pliku, ale ponieważ rmdir nie podejrzewa, że tak jest, wypluwa błędy. Po prostu użyj rm -r

Advertisement

Pytania pokrewne

6
10
11
5
13
Advertisement
Advertisement