¿Cómo eliminar o reemplazar un enlace simbólico ya creado?

53

Estoy trabajando en mi proyecto usando el simulador de red2. Lo instalé y todo está bien. Intenté crear un enlace simbólico entre esta instalación y /usr/bin, para poder invocar el software ejecutándome nsdesde la línea de comandos. A saber, corrí:

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

que generó el siguiente resultado:

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


¿Cómo puedo eliminar el enlace simbólico ya creado o puedo reemplazarlo con otros comandos?

Vinay
fuente
Estaba tratando de hacerlo sudo ln -s destination sourcey, por supuesto, me molestó. Gracias por la respuesta.
aviggiano

Respuestas:

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
fuente
1
lo anterior falla si ns es una carpeta, en cuyo caso use rm -rf (interruptores de fuerza recursiva) - en cuyo caso también podría usar los interruptores -sf para ln.
finley
@finley Sí, tienes razón. Incase ns es una carpeta, no se puede eliminar. Ahora me parece ambiguo que, ¿podemos crear un enlace simbólico a una carpeta?
Vinay
1
Sí, podemos crear un enlace simbólico a una carpeta. Si se trata de una carpeta, puede hacer: sudo rm -r / usr / bin / ns
Pawełkowy el
@Pawel Creé un enlace simbólico a la carpeta con éxito. Incluso puedo eliminar como dijiste anteriormente. Pero, cuando escribo el nombre de fold [enlace simbólico creado para una carpeta] en el terminal, aparece un error. Lo que realmente pensé fue crear un enlace simbólico a una carpeta y simplemente escribir el terminal del nombre del enlace lo abriría en nautilus. No estoy seguro de si es posible o no ...?
Vinay
1
@Vinaychalluru si desea abrir esa carpeta, intente escribir: cd fold: se abrirá en una terminal. Si desea abrirlo en nautilus, escriba: nautilus fold
Pawełkowy
63

lntiene un -finterruptor que "obliga" a crear un enlace simbólico ya sea que exista o no.

sudo ln -sf /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns
finley
fuente
Esta debería ser la respuesta aceptada.
Rony Varghese
28

Lo intenté ln -sfmientras lo reemplazaba, pero no funcionó para mí, pero hice lo ln -sfn directory link_name que rootfuncionó.

usuario712092
fuente
Sin -nmí estaba teniendo un problema de bucle infinito. ¡Gracias!
Christopher Markieta
3

Para agregar a todas las respuestas anteriores, un enlace simbólico se puede tratar como un archivo normal en muchos casos (el enlace, no el objetivo).

rmen un enlace simbólico lo eliminará. Si el enlace es propiedad de root, deberá sudo.

Debería poder, rm /usr/bin/nso más bien sudo rm /usr/bin/ns, no olvidar la propiedad.

Dmitriy Likhten
fuente