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


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

回答:


31

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

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

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


オプションを使用することもできますT。すなわちln -sfT TARGET LINK_NAME
-wjandrea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.