Impossibile cambiare la destinazione del collegamento simbolico


21

Voglio cambiare la destinazione di un collegamento simbolico esistente, senza rimuovere il collegamento o la vecchia destinazione.

In precedenza ho creato un collegamento simbolico a una directory come la seguente:

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

Ora voglio cambiare questo, per collegarmi all'altra directory:

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

Ma non funziona senza errori:

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

Qualsiasi aiuto ?


Forse questo è un piccolo dettaglio, ma sembra che sia il comando effettivo che hai eseguito sudo ln -s jdk1.7.0_04/ oracle-jdk-7. Nota la barra dopo 04.
wjandrea,

Risposte:


31

Per creare un collegamento simbolico a una directory , utilizzare l'opzione 'n':

ln -sfn DESTINATION_DIRECTORY LINK_NAME
  • DESTINATION_DIRECTORY è il nome della destinazione del collegamento;
  • LINK_NAME è il nome del collegamento.
  • L' fopzione significa sostituire il collegamento esistente (ovvero eliminarlo prima).

L' nopzione è un po 'complicata. Credo che il tuo comando possa aver creato un collegamento jdk1.7.0_07all'interno della directory jdk1.7.0_04, tramite il collegamento oracle-jdk-7anziché sostituirlo. In tal caso, è necessario eliminare il collegamento per evitare confusione.


È inoltre possibile utilizzare l'opzione T, ovveroln -sfT TARGET LINK_NAME
wjandrea
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.