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


465

Я устанавливаю P4V в /opt, но /usr/binнаходится на моем пути. Можно ли создать мягкую или символическую ссылку для p4v из /optto /usr/bin, чтобы я мог просто ввести «p4v», поскольку /usr/binон у меня на пути?


Ответы:


666

См man ln.

Чтобы создать символическую ссылку, на /usr/bin/barкоторую ссылается исходный файл /opt/foo, используйте:

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

Вы должны будете применить вышеупомянутую команду как root (то есть с 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». Будет ли приведенное выше решение создать символическую ссылку в соответствии с запросом OP?
Tanay

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


Обратите внимание на ведущую foreslash /
булаву

Спасибо, я полностью пропустил, что мне нужен абсолютный путь к связанному файлу.
Анди Р

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 всей системы.
Михал Шрайер

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.