Создание символьной ссылки на каталог

У меня есть каталог, на который я хочу создать символьную ссылку. Команды, которые я использовал, были:

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 в красном. Что я делаю неправильно?

4
задан 16 September 2014 в 13:32

4 ответа

Спасибо все для Ваших предложений. Я нашел самым легким понять, как сделать это (хотя я все еще не понимаю логику позади него) с:

cd ~/workspace_b4a
cd android-sdk-linux
cd platform-tools
ln -sv ../build-tools/20.0.0/lib/ .
4
ответ дан 17 November 2019 в 13:54

Принятие Вас находится в каталоге /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
3
ответ дан 17 November 2019 в 13:54

Можно ли связаться с не существующим ПУТЕМ (любой файл или каталог)

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, Ваша связь будет разорвана.

2
ответ дан 17 November 2019 в 13:54

Я предположил бы, что Вы находитесь в каталоге

/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

будет также изменен.

0
ответ дан 17 November 2019 в 13:54

Другие вопросы по тегам:

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