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)

Peter Smit
źródło
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

Swanand
źródło
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.

dłonie
źródło
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.

Callum
źródło
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.

użytkownik872812
źródło
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
isapir
źródło
-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

konstabl
źródło
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