シンボリックリンクを作成しました:
Sudo ln -s /some/dir new_dir
ここで、新しい場所を指すようにシンボリックリンクを上書きしたいのですが、上書きされません。私が試してみました:
Sudo ln -f -s /other/dir new_dir
私はいつでもSudo rm new_dir
ですが、可能であればそれに応じて上書きしてもらいたいと思います。何か案は?
ln -sfn /other/dir new_dir
私のために働きます。 -n
宛先シンボリックリンクを逆参照しません。
作成してから移動できます。
Sudo ln -f -s /other/dir __new_dir
Sudo mv -Tf __new_dir new_dir
編集:-Tfがありません。ディレクトリを通常のファイルとして扱い、上書きを要求しません。
このようにして、上書きします。
Mikeytown2sコメントからのリンクが壊れているので、なぜ redent84s answer が優れているのかを説明します。
一方
ln -sfn newDir currentDir
straceでわかるように、アトミック操作ではありません。
$ strace ln -snf newDir currentDir 2>&1 | grep link
unlink("currentDir") = 0
symlink("newDir", "currentDir") = 0
これは、そのシンボリックリンクを指すWebサーバールートがある場合に重要です。マイクロ秒のタイムスパンであっても、シンボリックリンクが削除されて再度作成されるときにエラーが発生する可能性があります。
エラーを防ぐには、代わりに次を使用してください。
$ ln -s newDir tmpCurrentDir && mv -Tf tmpCurrentDir currentDir
これにより一時リンクが作成され、その後アトミック操作でcurrentDirを上書き。