Ersetzen Sie die symbolische Verknüpfung, die mit dem Verzeichnisziel verknüpft ist

17

Ich möchte den Tomcat-Server von 7.0.19 auf 7.0.20 aktualisieren.

Ich habe es bereits ln -s apache-tomcat-7.0.19 tomcat7zuvor getan , also muss ich jetzt mit dem folgenden Befehl eine Verknüpfung tomcat7 zu einem neuen Ziel erstellen ln -s --force apache-tomcat-7.0.21 tomcat7, aber es funktioniert nicht wie erwartet: Es wurde eine symbolische Verknüpfung erstellt, tomcat7/apache-tomcat-7.0.21anstatt die vorhandene tomcat7symbolische Verknüpfung durch ein neues Ziel zu ersetzen .

Beispiel

# mkdir v1 v2
# ln -s v1 v
# ln -s v2 v
# ll v*
lrwxrwxrwx. 1 root root    2 Sep  5 16:02 v -> v1

v1:
total 0
lrwxrwxrwx. 1 root root 2 Sep  5 16:02 v2 -> v2

v2:
total 0

Ich habe das Handbuch vonln durchgesehen und denke, ich ln -s --force apache-tomcat-7.0.21 tomcat7benutze das 3. Formular anstelle des 1. Formulars, um die Parameter zu erklären. Das ist so vieldeutig zwischen der 1. und 3. Form. Wie kann man in diesem Fall den symbolischen Link ersetzen?

LiuYan 刘 刘
quelle

Antworten:

16

Sie möchten die -TOption:

$ mkdir v1
$ ln -s v1 foo
$ ls -FlA | grep foo
lrwxrwxrwx 1 phil phil     2 2011-09-05 01:58 foo -> v1/
$ mkdir v2
$ ln -s -T -f v2 foo
$ ls -FlA | grep foo
lrwxrwxrwx 1 phil phil     2 2011-09-05 01:59 foo -> v2/
phs
quelle
Danke, genau das habe ich gebraucht. Was für eine Schande, ich sehe diese optionale Option in der Hilfe, aber ich weiß nicht genau, was es tut.
LiuYan 刘 研
16

Beim Ersetzen von symbolischen Links zu Verzeichnissen sollten wir die -nOption verwenden.

Beispiel: ln -sfn /path/to/directory /target/directory

Surya Prabhakar
quelle
1
Dies sollte die akzeptierte Antwort sein. Löst die Frage und Einzeiler / Kompakt.
Bis zum
1
Die akzeptierte Antwort löst auch die Frage und ist ein Einzeiler. Wenn ich mich nicht irre, kann sie ebenso kompakt sein. Ich denke nicht, dass es notwendig ist, -vor jeder Flagge ein separates Leerzeichen zu setzen.
ArtOfWarfare
3

Warum nicht einfach

rm tomcat7
ln -s apache-tomcat-7.0.21 tomcat7

?

Dadurch wird das alte Verzeichnis apache-tomcat-7.0.19 nicht berührt, sondern nur der alte Link gelöscht. Dann kann ich die neue erstellen.

fschmitt
quelle
Vielen Dank! Ich tat dies zur Zeit in meinem Skript, aber ich denke , es ist im Gegensatz zu cp -f/ mv -fden einzigen Befehl Schreibvorgang zu tun, so dass ich für die Suche einzigen Befehl Lösung .
LiuYan 刘 研