Mam dowiązanie symboliczne do ważnego katalogu. Chcę pozbyć się tego dowiązania symbolicznego, zachowując jednocześnie katalog za nim.
Próbowałem rm
i wróciłem rm: cannot remove 'foo'
.
Próbowałem rmdir
i wróciła rmdir: failed to remove 'foo': Directory not empty
Następnie rozwijał się przez rm -f
, rm -rf
isudo rm -rf
Potem poszedłem znaleźć swoje kopie zapasowe.
Czy istnieje sposób na pozbycie się dowiązania symbolicznego bez wyrzucania dziecka z kąpielą?
rm -r link/
usuwa treść celuThen I went to find my back-ups
- To mnie zachichotało.Odpowiedzi:
Zasadniczo musisz nakazać mu usunięcie pliku , a nie usunięcie katalogu . Wierzę, że różnica między
rm
irmdir
istnieje z powodu różnic w traktowaniu każdej biblioteki C.W każdym razie pierwszy powinien działać, a drugi powinien narzekać na to, że foo jest katalogiem.
Jeśli to nie działa jak wyżej, sprawdź swoje uprawnienia. Aby usunąć pliki, musisz mieć uprawnienia do zapisu do zawierającego go katalogu.
źródło
rm -rf folderName
(bez końcowego /), aby usunąć dowiązanie symboliczne. Amazon Linux zachowuje się w ten sposób, na przykład w pewnych okolicznościach.-r
z dowiązaniem symbolicznym, chyba że chcesz stracić wszystko w nim zawarte.-f
nie powinno być również potrzebne, z wyjątkiem być może zastąpienia uprawnień do plików.unlink
nie ma związku zln
operacją „łącza” AKA. Nazwaunlink
odnosi się do procesu odłączania / usuwania pliku z tabeli plików systemu plików, dzięki czemu zawartość zostaje odłączona od wszelkich odniesień do nich - są one rozłączane. Jest to myląca nazwa, która jest wręcz myląca, szczególnie w przypadku linków i dowiązań symbolicznych.unlink
będzie działać z dowiązaniami symbolicznymi, ponieważ działa z dowolnym plikiem, niezależnie od typu.alias rm="rm -i"
zaoszczędziłem więcej skór, niż tylko cokolwiek innego, jak sądzę.użyj polecenia „unlink” i upewnij się, że nie ma znaku / na końcu
Myślę, że może to być problematyczne, jeśli czytam to poprawnie.
https://linux.die.net/man/2/unlink
źródło
~/c/a/file
,/c/b/
zln -s ~/c/a ~/c/b/
. W~/c/b/
,rm a/
nie działa,rm -rf a/
tylko opróżnia oryginałua
.unlink a
działa idealnie iunlink a/
nic nie robi.unlink
jest po prostu aliasemrm
. Pokazuje, żerm
należy zachować odpowiednią dyscyplinę w kontaktach z dowolną częścią struktury katalogów.rm -f
po cichu usunie link, czy istnieje, czy też nie, aunlink
narzeka, jeśli link nie jest obecny. Brak opcji `-f 'dla polecenia unlink powoduje, że skrypt jest bardziej złożony.unlink
może usuwać zwykłe pliki. jest mniej funkcjonalnyrm
i nie jest specyficzny dla dowiązań symbolicznych.rm
nie usuwa również katalogów bez-r
flagi. Więc zalecam preferowanie rm, ma flagi dla pełnych i interaktywnych; a także sensowne ostrzeżenia i komunikaty o błędach.rm powinien usunąć dowiązanie symboliczne.
źródło
Użyj,
rm symlinkname
ale nie dołącz ukośnika na końcu (nie używajrm symlinkname/
:). Następnie zostaniesz zapytany, czy chcesz usunąć dowiązanie symboliczne,y
aby odpowiedzieć tak.źródło
Zakładając, że faktycznie jest to dowiązanie symboliczne,
Powinien to rozgryźć, ale ponieważ nie możemy włączyć ukrytego kodu, który był przeznaczony dla innego przypadku, który już nie istnieje, ale zdarza się, że robi to dobrze.
źródło
Jeśli rm nie może usunąć dowiązania symbolicznego, być może trzeba spojrzeć na uprawnienia do katalogu zawierającego dowiązanie symboliczne. Aby usunąć pozycje katalogu, musisz mieć uprawnienia do zapisu w katalogu zawierającym.
źródło
Zakładając, że twoja konfiguracja jest jak:,
ln -s /mnt/bar ~/foo
wtedy powinieneś być w stanie zrobić torm foo
bez problemu. Jeśli nie możesz, upewnij się, że jesteś właścicielemfoo
pliku i masz uprawnienia do zapisu / wykonania pliku. Usunięciefoo
nie dotkniebar
, chyba że zrobisz to rekurencyjnie.źródło
Na CentOS po prostu uruchom
rm linkname
i poprosi o „usunięcie łącza symbolicznego?”. Wpisz Yi Enter, link zniknie, a katalog będzie bezpieczny.źródło
Miałem ten problem z MinGW (właściwie Git Bash) działającym na Windows Server. Żadna z powyższych sugestii nie działała. Na koniec zrobiłem kopię katalogu na wypadek, a następnie usunąłem miękkie łącze w Eksploratorze Windows, a następnie usunąłem element z Kosza. Wydawało odgłosy, jakby usuwało pliki, ale tak nie było. Zrób jednak kopię zapasową!
źródło