У меня есть каталог, на который я хочу создать символьную ссылку. Команды, которые я использовал, были:
cd workspace_b4a
cd android-sdk-linux
ln -sv build-tools/20.0.0/lib/ platform-tools/lib
Вывод был:
‘platform-tools/lib’ -> ‘build-tools/20.0.0/lib/’
Однако Наутилус говорит это platform-tools/lib
неработающая ссылка и ls -l platform-tools/lib
показывает оба build-tools/20.0.0/lib/
и platform-tools/lib
в красном. Что я делаю неправильно?
Спасибо все для Ваших предложений. Я нашел самым легким понять, как сделать это (хотя я все еще не понимаю логику позади него) с:
cd ~/workspace_b4a
cd android-sdk-linux
cd platform-tools
ln -sv ../build-tools/20.0.0/lib/ .
Принятие Вас находится в каталоге /path/to/common/root
:
$ pwd
/path/to/common/root
который имеет подкаталог build-tools/20.0.0/lib
:
$ readlink -e build-tools/20.0.0/lib
/path/to/common/root/build-tools/20.0.0/lib
и подкаталог platform-tools
, но никакой файл или каталог platform-tools/lib
:
$ ls -d platform-tools
platform-tools
$ ls platform-tools/lib
ls: cannot access platform-tools/lib: No such file or directory
и Вы хотите сделать platform-tools/lib
символьная ссылка на build-tools/20.0.0/lib
, затем можно или сделать это абсолютной ссылкой:
$ ln -s /path/to/common/root/build-tools/20.0.0/lib platform-tools/lib
$ ls -l platform-tools/lib
lrwxrwxrwx 1 user user 72 Sep 16 12:57 platform-tools/lib -> /path/to/common/root/build-tools/20.0.0/lib
$ readlink -e platform-tools/lib
/path/to/common/root/build-tools/20.0.0/lib
или можно сделать это относительной ссылкой:
$ ln -s ../build-tools/20.0.0/lib platform-tools/lib
$ ls -l platform-tools/lib
lrwxrwxrwx 1 user user 25 Sep 16 12:58 platform-tools/lib -> ../build-tools/20.0.0/lib
$ readlink -e platform-tools/lib
/path/to/common/root/build-tools/20.0.0/lib
при отмечании, что относительная ссылка должна быть относительно самого файла символьной ссылки, не к местоположению, куда Вы работаете ln -s
команда. Для проверки Вы не понимаете это превратно (и потому что Вы получаете удобное заполнение клавишей Tab с ним), существует две опции:
Любое движение к каталогу символьной ссылки сначала, и создает символьную ссылку там:
$ cd platform-tools
$ ln -s ../build-tools/20.0.0/lib lib # The last lib is optional
Или используйте -r
опция сделать ln
выясните относительный путь при определении путей относительно текущего каталога:
$ ln -sr build-tools/20.0.0/lib platform-tools/lib
Можно ли связаться с не существующим ПУТЕМ (любой файл или каталог)
abox $ ls
abox $ ln -s foo bar
abox $ ls
bar (<- in red)
abox $ ls -l
total 0
lrwxrwxrwx 1 archemar archemar 3 sept. 16 10:47 bar -> foo ## both foo and bar in red
, Почему кто-то сделал бы это?
Последний, я могу создать файл/dir нечто, и ссылка будет работать.
, в то время как каталог build-tools/20.0.0/lib/
не делает exsists, Ваша связь будет разорвана.
Я предположил бы, что Вы находитесь в каталоге
/media/john/android/workspace_b4a/android-sdk-linux /
, и Вы хотите создать символьную ссылку для '/build-tools/20.0.0/lib' dir он. Можно сделать это
ln -sv /media/john/android/workspace_b4a/android-sdk/build-tools/20.0.0/lib platform-tools/lib
РЕДАКТИРОВАНИЕ : вывод
ls -l platform-tools/lib
будет также изменен.