web-dev-qa-db-ja.com

既存のシンボリックリンクへのシンボリックリンクは、現在のディレクトリに別のシンボリックリンクを作成します

フォルダーのシンボリックリンクがあり、-sfオプションを使用してもう一度試してみると、元のソースフォルダー内に別のシンボリックリンクがシンボリックリンクされてしまいます。なぜこれが起こっているのですか?また、重複したシンボリックリンクが作成されないようにするにはどうすればよいですか?

➜  foo pwd
/home/ubuntu/foo
➜  foo ln -sf ~/foo/bar ~/foo/baz
➜  foo tree
.
├── bar
│   └── test.sh
└── baz -> /home/ubuntu/foo/bar

2 directories, 1 file
➜  foo ln -sf ~/foo/bar ~/foo/baz
➜  foo tree
.
├── bar
│   ├── bar -> /home/ubuntu/foo/bar
│   └── test.sh
└── baz -> /home/ubuntu/foo/bar

3 directories, 1 file

Distro:Ubuntu 14.04.5 LTS(GNU/Linux 3.13.0-106-generic x86_64
Shell:zsh with Oh my zsh plugin

1
Wordzilla

さらにグーグルで調べたところ、 このブログ投稿 のように-nパラメーターを使用するように指示されています。

関連するマンページエントリ:

-n, --no-dereference
      treat LINK_NAME as a normal file if it is a symbolic link to a directory

より良い説明を持つ他のコミュニティからの関連する回答:

https://superuser.com/a/1061057/373342
https://superuser.com/a/645847/373342

3
Wordzilla

実際に必要な答えは、既存のものを実際に上書きしたくない場合は、-fを使用しないことです。

そのパラメーターがないと、実際に次のことを示すメッセージが表示されます。

ln: failed to create symbolic link 'your/link': File exists

-nは、リンク先のディレクトリ内に同じ名前のリンクを作成する場合を除き、必要だとは思いません。

1
Ziazis