无法更改符号链接的目的地


21

我想更改现有符号链接的目标,而不删除链接或旧目标。

我以前已经创建了指向目录的符号链接,如下所示:

$ cd /usr/lib/jvm/

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07

$ sudo ln -s jdk1.7.0_04 oracle-jdk-7

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  oracle-jdk-7 -> jdk1.7.0_04/

现在,我想更改它,以链接到另一个目录:

$ sudo ln --force -s jdk1.7.0_07 oracle-jdk-7

但这没有任何错误是行不通的:

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:36  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  oracle-jdk-7 -> jdk1.7.0_04/

有什么帮助吗?


也许这只是一个小细节,但是看起来您运行的实际命令是sudo ln -s jdk1.7.0_04/ oracle-jdk-7。注意后面的斜线04
wjandrea '18

Answers:


31

要创建指向目录的符号链接,请使用'n'选项:

ln -sfn DESTINATION_DIRECTORY LINK_NAME
  • DESTINATION_DIRECTORY 是链接目标的名称;
  • LINK_NAME 是链接的名称。
  • f选项意味着替换现有链接(即先删除它)。

n选项有点复杂。我相信您的命令可能已经通过该链接创建了到jdk1.7.0_07目录内部jdk1.7.0_04的链接,oracle-jdk-7而不是替换了该链接。如果是这样,则应删除链接以避免混淆。


您也可以使用option T,即ln -sfT TARGET LINK_NAME
wjandrea
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.