Obrigado a todos por suas sugestões. Eu achei mais fácil entender como fazer isso (embora eu ainda não entenda a lógica por trás disso) com:
cd ~/workspace_b4a
cd android-sdk-linux
cd platform-tools
ln -sv ../build-tools/20.0.0/lib/ .
Eu tenho um diretório para o qual eu quero criar um link simbólico. Os comandos que usei foram:
cd workspace_b4a
cd android-sdk-linux
ln -sv build-tools/20.0.0/lib/ platform-tools/lib
A saída foi:
‘platform-tools/lib’ -> ‘build-tools/20.0.0/lib/’
No entanto, o Nautilus diz que platform-tools/lib
é um link quebrado e ls -l platform-tools/lib
mostra os dois build-tools/20.0.0/lib/
e platform-tools/lib
em vermelho. O que estou fazendo errado?
Obrigado a todos por suas sugestões. Eu achei mais fácil entender como fazer isso (embora eu ainda não entenda a lógica por trás disso) com:
cd ~/workspace_b4a
cd android-sdk-linux
cd platform-tools
ln -sv ../build-tools/20.0.0/lib/ .
Supondo que você esteja no diretório /path/to/common/root
:
$ pwd
/path/to/common/root
que tem um subdiretório build-tools/20.0.0/lib
:
$ readlink -e build-tools/20.0.0/lib
/path/to/common/root/build-tools/20.0.0/lib
e subdiretório platform-tools
, mas nenhum arquivo ou diretório platform-tools/lib
:
$ ls -d platform-tools
platform-tools
$ ls platform-tools/lib
ls: cannot access platform-tools/lib: No such file or directory
e você deseja tornar platform-tools/lib
um link simbólico para build-tools/20.0.0/lib
, então você pode torná-lo um link absoluto :
$ 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
ou você pode torná-lo um link relativo :
$ 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
notando que o link relativo deve ser relativo ao próprio arquivo de link simbólico , não ao local onde você executa o comando ln -s
. Para ter certeza de que você não está errado (e porque você obtém uma conclusão conveniente da tabulação com ele), há duas opções:
Primeiro, vá ao diretório do symlink e crie o symlink lá:
$ cd platform-tools
$ ln -s ../build-tools/20.0.0/lib lib # The last lib is optional
Ou use a opção -r
para tornar ln
descobrir o caminho relativo enquanto você especifica os caminhos relativos ao seu diretório atual:
$ ln -sr build-tools/20.0.0/lib platform-tools/lib
Você pode vincular a um PATH não existente (arquivo ou diretório)
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
Por que alguém faria isso?
Mais tarde, posso criar foo file / dir e o link funcionará.
enquanto o diretório build-tools/20.0.0/lib/
não exsistir, seu link será quebrado.
Eu diria que você está em um diretório
/ media / john / android / workspace_b4a / android-sdk-linux /
e você deseja criar um link simbólico para o diretório '/build-tools/20.0.0/lib'. Você pode fazer isso por
ln -sv /media/john/android/workspace_b4a/android-sdk/build-tools/20.0.0/lib platform-tools/lib
EDITAR : a saída de
ls -l platform-tools/lib
Também será alterado.