Comment supprimer ou remplacer un lien symbolique déjà créé?

53

Je travaille sur mon projet en utilisant network simulator2. Je l'ai installé et tout va bien. J'ai tenté de créer un lien symbolique entre cette installation et /usr/bin, afin de pouvoir appeler le logiciel en exécutant à nspartir de la ligne de commande. À savoir, j'ai couru:

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

qui a généré la sortie suivante:

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


Comment puis-je supprimer le lien symbolique déjà créé ou puis-je le remplacer par une autre commande?

Vinay
la source
J'essayais de le faire sudo ln -s destination source, et bien sûr, il a été déréglé. Merci d'avoir répondu.
Aviggiano

Réponses:

35
sudo rm -r /usr/bin/ns

sudo ln -s /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns
Pawełkowy
la source
1
La procédure ci-dessus échoue si ns est un dossier. Dans ce cas, utilisez le commutateur rm -rf (commutateurs de force récursive). Dans ce cas, vous pouvez également utiliser les commutateurs -sf pour ln.
Finley
@finley Oui, vous avez raison. Incase ns est un dossier, il ne peut pas être supprimé. Il m'est ambigu de créer un lien symbolique vers un dossier.
Vinay
1
oui, nous pouvons créer un lien symbolique vers un dossier. Si c'est un dossier, vous pouvez faire: sudo rm -r / usr / bin / ns
Pawełkowy
@Pawel J'ai créé un lien symbolique vers un dossier avec succès. Je peux même enlever comme tu as dit ci-dessus. Mais, quand je tape fold [nom du lien symbolique créé pour un dossier] dans le terminal, cela donne une erreur. Ce que je pensais réellement était de créer un lien symbolique vers un dossier et de simplement taper le nom du lien de terminal ouvrirait celui-ci dans Nautilus. Je ne suis pas sûr que ce soit possible ou non ..?
Vinay
1
@ Vinaychalluru si vous voulez ouvrir ce dossier, essayez de taper: cd fold - il s’ouvrira dans un terminal. Si vous voulez l'ouvrir dans le nautile, tapez: nautilus fold
Pawełkowy
63

lna -fswitch qui "force" la création d'un lien symbolique, qu'il existe ou non.

sudo ln -sf /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns
finley
la source
Cela devrait être la réponse acceptée.
Rony Varghese
28

J'ai essayé ln -sfen remplaçant mais cela n'a pas fonctionné pour moi, mais en faisant ln -sfn directory link_name comme si de rien n'était root.

utilisateur712092
la source
Sans cela, -nje devenais un problème de boucle infinie. Merci!
Christopher Markieta
3

Pour ajouter à toutes les réponses ci-dessus, un lien symbolique peut être traité comme un fichier normal dans de nombreux cas (le lien, pas la cible).

rmsur un lien symbolique va l'enlever. Si le lien appartient à root, vous devrez utiliser sudo.

Vous devriez pouvoir rm /usr/bin/nsou plutôt sudo rm /usr/bin/nsne pas oublier la propriété.

Dmitriy Likhten
la source