Answers:
正确的方法是使用-n, --no-dereference类似的选项。
$ ln -snf foo2 bar
这导致ln将现有符号链接视为文件。否则,它将取消引用bar到foo1,然后下降foo1并使用原始TARGET名称作为LINK_NAME,这就是为什么最终foo2在foo1目录中创建符号链接的原因。的手册页ln指出以下内容...
-n,-无引用
如果LINK_NAME是指向以下文件的符号链接,则将其视为普通文件
目录
以下是我的Arch Linux桌面上具有8.21版(ln带有和不带有该--no-dereference选项)的shell输出,我得到了与不带有该选项的结果相同的结果--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命令如此频繁地升级。
ln与ubuntu和centos相同,目录被覆盖并ln -snf解决了问题。即使ln -h是在osx中使用的首选选项。
ln --version?