Jak usunąć lub zastąpić już utworzony link symboliczny?

53

Pracuję nad moim projektem przy użyciu symulatora sieci2. Zainstalowałem i wszystko jest w porządku. Próbowałem utworzyć symboliczne łącze między tą instalacją /usr/bin, aby móc wywołać oprogramowanie, uruchamiając się nsz wiersza polecenia. Mianowicie, prowadziłem:

sudo ln -s /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns

który wygenerował następujące dane wyjściowe:

ln: creating symbolic link '/usr/bin/ns': File exists


Jak mogę usunąć już utworzone dowiązanie symboliczne lub czy mogę je zastąpić innymi poleceniami?

Vinay
źródło
Próbowałem to zrobić sudo ln -s destination sourcei oczywiście to popsuło. Dziękuję za odpowiedź.
aviggiano

Odpowiedzi:

35
sudo rm -r /usr/bin/ns

sudo ln -s /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns
Pawełkowy
źródło
1
powyższe nie powiedzie się, jeśli ns jest folderem - w takim przypadku użyj rm -rf (rekurencyjne przełączniki siły) - w takim przypadku równie dobrze możesz użyć przełączników -sf dla ln.
finley,
@finley Tak, masz rację. Incase ns to folder, którego nie można usunąć. To dla mnie teraz niejednoznaczne, czy możemy stworzyć symboliczny link do folderu.
Vinay,
1
tak, możemy utworzyć symboliczny link do folderu. Jeśli jest to folder, możesz zrobić: sudo rm -r / usr / bin / ns
Pawełkowy
@Pawel Udało mi się utworzyć dowiązanie symboliczne do folderu. Mogę nawet usunąć, jak powiedziałeś powyżej. Ale kiedy wpisuję nazwę fold [utworzony dowiązanie symboliczne do folderu] w terminalu, pojawia się błąd. To, co tak naprawdę myślałem, to utworzenie dowiązania symbolicznego do folderu i wpisanie terminala z nazwą łącza otworzy to w nautilusie. Nie jestem pewien, czy to możliwe, czy nie ...?
Vinay,
1
@ Vinaychalluru, jeśli chcesz otworzyć ten folder, spróbuj wpisać: cd fold - otworzy się w terminalu. Jeśli chcesz otworzyć go w nautilusie, wpisz: nautilus fold
Pawełkowy
63

lnma -fprzełącznik, który „wymusza” utworzenie dowiązania symbolicznego, niezależnie od tego, czy istnieje.

sudo ln -sf /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns
finley
źródło
To powinna być zaakceptowana odpowiedź.
Rony Varghese
28

Próbowałem ln -sfpodczas wymiany, ale to nie działało dla mnie, ale działało ln -sfn directory link_name tak, jak rootdziałało.

użytkownik712092
źródło
Bez tego -nmiałem problem z nieskończoną pętlą. Dzięki!
Christopher Markieta
3

Aby dodać do wszystkich powyższych odpowiedzi, łącze symboliczne może być w wielu przypadkach traktowane jak zwykły plik (link, a nie cel).

rmna dowiązaniu symbolicznym usunie go. Jeśli link należy do roota, będziesz musiał sudo.

Powinieneś być w stanie rm /usr/bin/nslub raczej sudo rm /usr/bin/nsnie zapomnieć o własności.

Dmitriy Likhten
źródło