web-dev-qa-db-ja.com

シンボリックリンクのリンク先を変更できません

リンクまたは古い宛先を削除せずに、既存のシンボリックリンクの宛先を変更したい。

以前に、次のようなディレクトリへのシンボリックリンクを作成しました。

$ 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/

何か助け?

21
Seyed Mohammad

ディレクトリへのシンボリックリンクを作成するには、「n」オプションを使用します。

ln -sfn DESTINATION_DIRECTORY LINK_NAME
  • DESTINATION_DIRECTORYはリンクターゲットの名前です。
  • LINK_NAMEはリンクの名前です。
  • fオプションは、既存のリンクを置き換える(つまり、最初に削除する)ことを意味します。

nオプションは少し複雑です。リンクを置き換えるのではなく、リンクjdk1.7.0_07を介して、コマンドがディレクトリjdk1.7.0_04内にOracle-jdk-7へのリンクを作成した可能性があると思います。その場合、混乱を避けるためにリンクを削除する必要があります。

31
Marty Fried