Jak usunąć symboliczne łącze do katalogu?


100

Nawiązałem symboliczny link za pomocą następującego polecenia:

ln -s ../test5

Chcę go teraz usunąć, ale mój rm nie działa:

$ 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 symboliczny link? (Ubuntu 8.10, bash)


4
WSKAZÓWKA: rm -r link/usuwa treść celu
Gayan Weerakutti

Odpowiedzi:


121

Usuń końcowy ukośnik:

Z pytaniem:

$ rm test5

Bez pytania:

$ rm -f test5


To mówi permission denied.
1,21 gigawata

1
Bez końcowego ukośnika. Więc test5/jest niepoprawne.
pylover,

20

Spróbuj rm test5
(bez slashu treningowego).

Ukośnik wskazuje, że „test5” jest direactory natomiast to faktycznie plik linkami do katalogu.


14

Możesz uruchomić usuwanie końcowego ukośnika:

$ rm test5

Spowoduje to usunięcie pliku (tj. Dowiązanie symboliczne).

Alternatywnie możesz użyć rozłączenia:

$ unlink test5

Ponownie musisz pominąć końcowy ukośnik, ponieważ próbujesz rozłączyć dowiązanie symboliczne, a nie katalog.


0

Czasami, jeśli użyjesz autouzupełniania do nazwania łącza, które chcesz usunąć, możesz nie zobaczyć końcowego ukośnika, ale jest on „w połowie”, a ten niewidoczny ukośnik nadal powoduje błąd usuwania podczas próby usunięcia tego łącza.

W takim przypadku wpisz znak po znaku link do usunięcia jako „test5” jak np. rm test5.


1
Nigdy nie słyszałem o niewidzialnym cięciu. Co to za skorupa?
Kamil Maciorowski

Myślę, że to może być odniesienie do ukrywania znaku linewrap + kursor?
bertieb

0

Problemem w PO jest to, że występuje /, więc test5/zgłasza błąd, ale test5działa.

Wolę używać unlinkzamiast tego, rmże moja intencja jest jaśniejsza i nie ma szans na pomyłkowe usunięcie prawdziwego katalogu zamiast łącza. Upewnij się, że /po nazwie katalogu nie ma znaku końca, np .:

unlink test5

-1

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

Edycja: Właśnie wypróbowałem, to prawda

Edycja 2: rmdir mówi w pierwszym wierszu strony podręcznika, że ​​usuwa puste katalogi. Pomyślałbym, ponieważ ponieważ jest to łącze, sprawdził bit katalogu we właściwościach pliku, ale ponieważ rmdir nie podejrzewa, że ​​w takim przypadku wyrzuca błędy. Wystarczy użyć rm -r


2
Poprosi mnie o usunięcie plików z katalogu, to nie jest to, czego chcę, chcę usunąć tylko link
Peter Smit

Pytanie było dlatego, że interaktywny został zdefiniowany w moim .profile. Dodano odpowiedź do rm -r. To wciąż nie działa.
Peter Smit

Zostawiłeś końcowe „/”, dlatego się nie udało
bobby
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.