Есть ли способ создать программную ссылку с использованием относительного пути? (не относительно дома или абсолютного)

Используйте вариант сортировки по версиям.

sort -V source > destination
1
18.04.2017, 15:58
2 ответа

Вы можете создать символическую ссылку, используя относительный путь

, например. (вы хотите создать символическую ссылку из папки bb , которая находится в ../../ bb , относящейся к текущему рабочему каталогу, на mylink

ln -s ../../bb/ mylink

$ ls -lsa mylink
0 lrwxrwxrwx 1 user user 9 Apr 18 15:51 mylink -> ../../bb/

Другой пример, где mylink находится в папке, связанной с pwd

mkdir ../../tst
$ ln -s ../../bb/ ../../tst/mylink
$ ls -lsa ../../tst/mylink
0 lrwxrwxrwx 1 user user 9 Apr 18 16:08 ../../tst/mylink -> ../../bb/
1
27.01.2020, 23:19

Относительная символическая ссылка относится к своему родительскому каталогу и не имеет отношения к текущему каталогу любого процесса или домашнему каталогу любого пользователя.

Например, если /some/dir/link является символической ссылкой на ../foo/bar, то это символическая ссылка на /some/dir/. ./foo/bar (/some/foo/bar, если /some/dir не является символической ссылкой), независимо от того, какой у вас текущий или домашний каталог.

Если вы хотите создать новую символическую ссылку на файл относительно текущего каталога (например, файл bin/ls в вашем текущем каталоге /home/stephane), то вы можете сделать (в POSIX-подобных оболочках или fish):

ln -s -- "$PWD/bin/ls" /some/dir/link

Это создаст абсолютную символическую ссылку (на /home/stephane/bin/ls). Чтобы создать относительную символическую ссылку, вам потребуется:

ln -s ../../home/stephane/bin/ls /some/dir/link

(при условии, что /some и /some/dir сами по себе не являются символическими ссылками)

GNU ln имеет опцию -r, которая поможет вам вычислить этот путь:

ln -rs bin/ls /some/dir/link

(что создаст ту же символическую ссылку на ../../home/stephane/bin/ls) .

3
27.01.2020, 23:19

Теги

Похожие вопросы