Как удалить или заменить уже созданную символическую ссылку?

53

Я работаю над своим проектом, используя сетевой симулятор2. Я установил его, и все в порядке. Я попытался создать символическую связь между этой установкой и /usr/bin, чтобы я мог вызвать программное обеспечение, запустив его nsиз командной строки. А именно, я побежал:

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

который генерировал следующий вывод:

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


Как удалить уже созданную символическую ссылку или заменить ее другими командами?

Виней
источник
Я пытался сделать sudo ln -s destination source, и, конечно, это прослушивается. Спасибо за ответ.
aviggiano

Ответы:

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
источник
1
вышеприведенный сбой, если ns - папка - в этом случае используйте rm -rf (переключатели рекурсивной силы) - в этом случае вы также можете использовать ключи -sf для ln.
Финли
@finley Да, ты прав. Incase ns - это папка, которую нельзя удалить. Теперь мне кажется, что мы можем создать символическую ссылку на папку?
Vinay
1
да, мы можем создать символическую ссылку на папку. Если это папка, вы можете сделать: sudo rm -r / usr / bin / ns
Pawełkowy
@Pawel Я успешно создал символическую ссылку на папку. Я даже могу удалить, как ты сказал выше. Но когда я набираю в терминале имя fold [созданная символическая ссылка для папки], это выдает ошибку. На самом деле я подумал, что, создав символическую ссылку на папку и просто введя терминал с именем ссылки, можно открыть ее в nautilus. Я не уверен, возможно ли это или нет ..?
Vinay
1
@Vinaychalluru, если вы хотите открыть эту папку, попробуйте ввести: cd fold - она ​​откроется в терминале. Если вы хотите открыть его в nautilus, введите:
nautilus
63

lnИмеет -fпереключатель, который «заставляет» создать символическую ссылку независимо от того, существует она или нет.

sudo ln -sf /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns
Финли
источник
Это должен быть принятый ответ.
Рони Варгезе
28

Я пробовал ln -sfво время замены, но у меня это не сработало, но работало ln -sfn directory link_name как надо root.

user712092
источник
Без -nменя была проблема с бесконечным циклом. Спасибо!
Кристофер Маркиета
3

Чтобы добавить ко всем ответам выше, символическая ссылка во многих случаях может рассматриваться как обычный файл (ссылка, а не цель).

rmпо символической ссылке удалит его. Если ссылка принадлежит пользователю root, вам потребуется sudo.

Вы должны быть в состоянии rm /usr/bin/nsили, скорее sudo rm /usr/bin/ns, не забывать владение.

Дмитрий Лихтен
источник