Як видалити або замінити вже створене символічне посилання?


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 - це папка, її неможливо видалити. Тепер для мене двозначні, чи можемо ми створити символьну посилання на папку?
Винай

1
так, ми можемо створити символьне посилання на папку. Якщо це папка, ви можете зробити: sudo rm -r / usr / bin / ns
Pawełkowy

@Pawel Я створив симпосилання на папку успішно. Я навіть можу видалити, як ви сказали вище. Але, коли я набираю ім'я fold [створене символьне посилання для папки] у терміналі, це дає помилку. Що я насправді думав, створивши симпосилання до папки та просто ввівши термінал імені посилання, це відкриє це у наутилусі. Я не впевнений, це можливо чи ні ..?
Винай

1
@Vinaychalluru, якщо ви хочете відкрити цю папку, спробуйте ввести: cd fold - вона відкриється в терміналі. Якщо ви хочете відкрити його в nautilus, введіть: nautilus fold
Pawełkowy

63

lnмає -fперемикач, який 'змушує' створювати символьне посилання, існує він чи ні.

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

Це має бути прийнятою відповіддю.
Rony Varghese

28

Я намагався ln -sfпід час заміни, але у мене це не вийшло, але робив так, ln -sfn directory link_name як rootпрацював.


Без -nмене виникала нескінченна проблема циклу. Дякую!
Крістофер Маркієта

3

Щоб додати до всіх відповідей вище, символічне посилання може трактуватися як звичайний файл у багатьох випадках (посилання, а не ціль).

rmна символічному посиланні видалить його. Якщо посилання належить root, вам потрібно буде судо.

Ви повинні мати можливість, rm /usr/bin/nsа точніше sudo rm /usr/bin/ns, не забувати право власності.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.