これを行う適切な方法は、その-n, --no-dereference
ようなオプションを使用することです。
$ ln -snf foo2 bar
これによりln
、既存のシンボリックリンクがファイルとして扱われます。それ以外の場合は、を逆参照bar
しfoo1
、下に移動foo1
して元のTARGET
名前をとして使用しLINK_NAME
ます。foo2
そのため、foo1
ディレクトリ内に作成されるシンボリックリンクになります。のマンページにln
は次のように記載されています...
-n、-非参照
LINK_NAMEがシンボリックリンクである場合、通常のファイルとして扱います
ディレクトリ
以下は、バージョン8.21と私のアーチのLinuxデスクトップ上のシェル出力であるln
場合とない場合--no-dereference
のオプションは、私はあなたがなしたのと同じ結果だ--no-dereference
オプションを、しかし使用して--no-dereference
期待通りに働いていたオプションを選択します。
$ 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
ますか?