
Gibt es eine Möglichkeit, den Wert eines symbolischen Links zu ersetzen?
Ich möchte beispielsweise einen symbolischen Link wie folgt ändern:
first -> /home/username/foo/very/long/directories/that/I/do/not/want/to/type/again
dazu:
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
Ich möchte nur zu foo
ändern bar
.
Natürlich kann ich einen Link erneut erstellen, aber wenn es möglich ist, den Wert des Links zu ersetzen, wird es einfacher.
Antwort1
Sie können die Option -f
, verwenden , um den vorhandenen Symlink zu entfernen, bevor der neue erstellt wird. Wenn das Ziel ein Verzeichnis ist, müssen Sie die Option , hinzufügen , um anzugeben , dass der Symlink wie eine normale Datei behandelt werden soll.--force
ln
-n
--no-dereference
ln
ln -sfn target existing_link
Dieser Vorgang ist jedoch nicht atomar, wie ln
der unlink()
alte Symlink vor dem Aufruf symlink()
, daher zählt er technisch gesehen nicht als Änderung des Wertes des Links. Wenn Ihnen dieser Unterschied wichtig ist, lautet die Antwort nein, Sie können den Wert eines vorhandenen Symlinks nicht ändern.
Sie können beispielsweise Folgendes tun, um einen neuen symbolischen Link zu erstellen und dabei einen Teil des alten Linkwerts zu ändern:
ln -sfn "$(readlink existing_link | sed s/foo/bar/)" "existing_symlink"
Antwort2
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
Wenn Sie innerhalb von X arbeiten:
stat second
Druckt den Link und einige andere Informationen aus. Geben Sie ein ln -s
und markieren Sie es dann /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
mit dem Mauszeiger. Drücken Sie die mittlere Taste (oder beide Tasten, wenn Sie nur zwei haben). Die lange Zeile, die Sie nicht erneut eingeben wollten, wird an der Textmarke eingefügt.
Wenn Sie nicht unter X arbeiten, können Sie dasselbe durch die Installation erreichen gpm
.