Wie lösche oder ersetze ich einen bereits erstellten symbolischen Link?

53

Ich arbeite an meinem Projekt mit Network Simulator2. Ich habe es installiert und alles ist in Ordnung. Ich habe versucht, eine symbolische Verknüpfung zwischen dieser Installation und zu erstellen /usr/bin, damit ich die Software über nsdie Befehlszeile aufrufen kann . Ich lief nämlich:

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

welches die folgende Ausgabe erzeugte:

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


Wie kann ich den bereits erstellten Symlink löschen oder durch andere Befehle ersetzen?

Vinay
quelle
Ich habe es versucht sudo ln -s destination sourceund es hat natürlich Fehler gemacht. Danke für die Antwort.
Aviggiano

Antworten:

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
quelle
1
Dies schlägt fehl, wenn ns ein Ordner ist. Verwenden Sie in diesem Fall die Option rm -rf (rekursive Kraft). In diesem Fall können Sie auch die Option -sf für ln verwenden.
Finley
@finley Ja, du hast recht. Wenn ns ein Ordner ist, kann er nicht gelöscht werden. Für mich ist es nun mehrdeutig, ob wir einen symbolischen Link zu einem Ordner erstellen können.
Vinay
1
Ja, wir können einen symbolischen Link zu einem Ordner erstellen. Wenn es sich um einen Ordner handelt, können Sie
Folgendes
@Pawel Ich habe erfolgreich einen Symlink zum Ordner erstellt. Ich kann sogar wie oben gesagt entfernen. Aber wenn ich fold [erstellter Symlink für einen Ordner] im Terminal eingebe, gibt es einen Fehler. Was ich eigentlich dachte, war, einen Symlink zu einem Ordner zu erstellen und nur den Linknamen zu tippen, würde das in nautilus öffnen. Ich bin nicht sicher, ob es möglich ist oder nicht ..?
Vinay
1
@ Vinaychalluru Wenn Sie diesen Ordner öffnen möchten, geben Sie Folgendes ein: cd fold - es wird in einem Terminal geöffnet. Wenn Sie es in
nautilus
63

lnhat -fSchalter, die das Erstellen eines Symlinks erzwingen, unabhängig davon, ob es existiert oder nicht.

sudo ln -sf /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns
finley
quelle
Dies sollte die akzeptierte Antwort sein.
Rony Varghese
28

Ich habe versucht , ln -sfwährend ersetzen , aber es funktioniert nicht für mich arbeiten, aber tue ln -sfn directory link_name so rootgearbeitet.

user712092
quelle
Ohne bekam -nich ein Endlosschleifenproblem. Vielen Dank!
Christopher Markieta
3

In vielen Fällen kann ein symbolischer Link als reguläre Datei behandelt werden (der Link, nicht das Ziel).

rmBei einem symbolischen Link wird es entfernt. Wenn der Link root gehört, müssen Sie sudo.

Sie sollten in der Lage sein , rm /usr/bin/nsoder eher sudo rm /usr/bin/nsnicht vergessen das Eigentum.

Dmitriy Likhten
quelle