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


464

Я встановлюю p4v в /opt, але /usr/binна моєму шляху. Чи можна створити м'яке або символічне посилання для p4v від /optдо /usr/bin, тож я можу просто набрати "p4v", оскільки /usr/binце на моєму шляху?


Відповіді:


666

Див man ln.

Щоб створити символьне посилання, на /usr/bin/barяке посилається вихідний файл /opt/foo, використовуйте:

ln -s /opt/foo /usr/bin/bar

Вам слід застосувати вищезазначену команду як корінь (тобто з sudo).


Я використовую: sudo ln –s /etc/apache2/sites-available/redmine /etc/apache2/sites-enabled/000-redmineпомилка отримання:ln: target '/etc/apache2/sites-enabled/000-redmine' is not a directory
RAJ ...

1
Документація Ubuntu говорить: "Створює жорсткі посилання за замовчуванням, символічні посилання за допомогою --symbolic." Чи створить вищезазначене рішення символічне посилання на запитання ОП?
Танай

4
Я хоч Сезар хотів помістити свої файли в / opt та / usr / bin, щоб мати символічне посилання, а не навпаки.
невдача

4
@mishap має рацію, наскільки я стурбований. Це навпаки.
Даніель Шмулевич

2
@kevinmicke після вашого пояснення нарешті зрозумів, що пояснення відповіді було викладено у зворотному порядку з команди, змусивши мій мозок (та інших людей) прочитати його назад
Андрій

40

Помилка в тому, що ви неправильно пишете команду. Правильний шлях

ln -s /<full>/<path>/<to>/<file> /usr/local/bin

http://ubuntuforums.org/showthread.php?t=2001697


Зверніть увагу на провідну косу рису /
булаву

Дякую, я зовсім пропустив, що мені потрібен абсолютний шлях до пов'язаного файлу.
Andi R

21

Якщо виконуваний файл "p4v" знаходиться в / opt / bin / p4v, ви можете просто запустити:

sudo ln -s /opt/bin/p4v /usr/bin/p4v
sudo chmod ugo+x /usr/bin/p4v

Було б краще додати / opt / bin (або там, де виконується файл) до вашого шляху:

echo "export PATH=\$PATH:/opt/bin" >> ~/.profile
reset

~/.profileбуло б краще для налаштування $PATH.
Лекенштейн

ви можете редагувати, /etc/environmentщоб змінити систему PATH в цілому.
Michał Šrajer

4

Перевірте розташування програмного забезпечення цим.

which application-name #replace for the application you are looking for

наприклад

which skype

вихід буде таким.

/usr/bin/skype 

Щоб створити м'яке посилання. наприклад, ви хочете створити м'яке посилання skypeна робочому столі

ln -s /usr/bin/skype ~/Desktop/

Для отримання додаткової інформації про ln.

man ln

або

ln --help

2
ln -s -n ./TargetDirectory ./Nickname

Зауважте, це працює, якщо обидва вузли розташовані нижче вас в одному дереві. Можна використовувати відносні позначення

  • Команда -s робить її символічною ланкою
  • -n дозволяє створити символьне посилання типу папки

Ласкаво просимо на askubuntu.com. У цьому випадку $командний рядок для вказівки на командний рядок є вибором стилю і, швидше за все, не буде проблемою. Однак майте на увазі, що включення речей у блок коду, окрім коду, та його вихід може викликати плутанину.
Дж. Старнес

1

Цей шаблон був більш корисним для мене, ніж наведені вище відповіді. Напевно, не правильніше, просто менш затуманено:

ln -s <path/to/real/file-or-folder> <symlink path>

Просто замініть деталі в <>s


0

Якщо він говорить target is not a folder, це означає, що у назвах вашої папки є пробіли, наприклад: New Folderє пробіл

Потрібно відредагувати шлях і додати зворотну косу рису \після кожного пробілу в контурах

наприклад:

ln -s /opt/bin /usr/var/New\ Folder

3
Це не відповідь на питання ОП. Зачекайте, поки у вас буде достатня репутація, щоб додати коментарі.
derHugo

0

Я виявив, що простіше зайти туди, де ви хочете, щоб було посилання, а потім створити посилання за допомогою sudo ln -s /path/to/source/file, ніж робити ln -s target source.

Так що у вашому випадку я б cd /usr/binтоді зробив sudo ln -s /opt/bin/pv4. Інший спосіб не працював у моєму випадку.

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