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


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

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.


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

3

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.