Der richtige Weg, dies zu tun, besteht darin, die -n, --no-dereference
Option wie folgt zu verwenden .
$ ln -snf foo2 bar
Dadurch wird ln
der vorhandene Symlink als Datei behandelt. Andernfalls wird auf den ursprünglichen Namen verwiesen bar
, dieser foo1
wird foo1
verwendet, und aus diesem Grund wird ein Symlink erstellt, der im Verzeichnis erstellt wird. In der Manpage auf heißt es:TARGET
LINK_NAME
foo2
foo1
ln
-n, --keine Dereferenzierung
Behandle LINK_NAME als normale Datei, wenn es sich um eine symbolische Verknüpfung zu a handelt
Verzeichnis
Unten ist die Shell-Ausgabe auf meinem Arch Linux-Desktop mit der Version 8.21 ln
mit und ohne --no-dereference
Option aufgeführt. Ich habe die gleichen Ergebnisse erhalten, die Sie ohne die --no-dereference
Option erzielt haben , aber mit der--no-dereference
Option hat es wie erwartet funktioniert.
$ mkdir foo1 foo2
$ ln -s foo1 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ln -sf foo2 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ls -l foo1
total 0
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 foo2 -> foo2
$ ln -snf foo2 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:52 bar -> foo2
ln --version
?ln
Befehl so oft aktualisiert wird.ln
funktioniert genauso wie Ubuntu und Centos mit dem Verzeichnis überschreiben undln -snf
das Problem lösen. Auch wennln -h
ist die Option bevorzugen, in osx zu verwenden.