リンクまたは古い宛先を削除せずに、既存のシンボリックリンクの宛先を変更したい。
以前に、次のようなディレクトリへのシンボリックリンクを作成しました。
$ 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/
何か助け?
ディレクトリへのシンボリックリンクを作成するには、「n」オプションを使用します。
ln -sfn DESTINATION_DIRECTORY LINK_NAME
DESTINATION_DIRECTORY
はリンクターゲットの名前です。LINK_NAME
はリンクの名前です。f
オプションは、既存のリンクを置き換える(つまり、最初に削除する)ことを意味します。n
オプションは少し複雑です。リンクを置き換えるのではなく、リンクjdk1.7.0_07
を介して、コマンドがディレクトリjdk1.7.0_04
内にOracle-jdk-7
へのリンクを作成した可能性があると思います。その場合、混乱を避けるためにリンクを削除する必要があります。