Come eliminare o sostituire un collegamento simbolico già creato?


53

Sto lavorando al mio progetto utilizzando Network Simulator2. L'ho installato e tutto va bene. Ho tentato di creare un collegamento simbolico tra questa installazione e /usr/bin, quindi ho potuto invocare il software eseguendo nsdalla riga di comando. Vale a dire, ho corso:

sudo ln -s /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns

che ha generato il seguente output:

ln: creating symbolic link '/usr/bin/ns': File exists


Come posso eliminare il link simbolico già creato o posso sostituirlo con altri comandi?


Stavo cercando di fare sudo ln -s destination source, e ovviamente ha infastidito. Grazie per la risposta.
aviggiano,

Risposte:


35
sudo rm -r /usr/bin/ns

sudo ln -s /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns

1
quanto sopra fallisce se ns è una cartella - nel qual caso usa rm -rf (interruttori di forza ricorsiva) - nel qual caso potresti anche usare gli interruttori -sf per ln.
Finley,

@finley Sì, hai ragione. Incase ns è una cartella, non può essere eliminata. Ora è ambiguo per me che possiamo creare un collegamento simbolico a una cartella.
Vinay,

1
sì, possiamo creare un collegamento simbolico a una cartella. Se è una cartella, puoi fare: sudo rm -r / usr / bin / ns
Pawełkowy

@Pawel Ho creato con successo un link simbolico alla cartella. Posso anche rimuovere come hai detto sopra. Ma quando digito il nome fold [link simbolico creato per una cartella] nel terminale, viene visualizzato un errore. Quello che in realtà pensavo fosse la creazione di un link simbolico a una cartella e la semplice digitazione del terminale del nome del link lo avrebbe aperto in nautilus. Non sono sicuro che sia possibile o no ..?
Vinay,

1
@Vinaychalluru se vuoi aprire quella cartella, prova a digitare: cd fold - si aprirà in un terminale. Se vuoi aprirlo in nautilus, digita: nautilus fold
Pawełkowy

63

lnha -fcommutato che "forza" la creazione di un collegamento simbolico, indipendentemente dal fatto che esista o meno.

sudo ln -sf /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns

Questa dovrebbe essere la risposta accettata.
Rony Varghese,

28

Ho provato ln -sfdurante la sostituzione ma non ha funzionato per me, ma facendo ln -sfn directory link_name come ha rootfunzionato.


Senza -nstavo ottenendo un problema ad anello infinito. Grazie!
Christopher Markieta,

3

Per aggiungere a tutte le risposte sopra, un collegamento simbolico può essere trattato come un normale file in molti casi (il collegamento, non la destinazione).

rmsu un collegamento simbolico lo rimuoverà. Se il collegamento è di proprietà di root, dovrai eseguire il sudo.

Dovresti essere in grado rm /usr/bin/nso meglio sudo rm /usr/bin/nsnon dimenticare la proprietà.

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.