创建指向目录的符号链接

我有一个目录,我想创建一个符号链接。 我使用的命令是:

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/' 

但是,Nautilus说platform-tools/lib是一个断开的链接, ls -l platform-tools/lib 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 platform-tools/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命令的位置。 为了确保你没有弄错(并且因为你可以通过它获得方便的标签),有两种选择:

首先转到符号链接的目录,然后在那里创建符号链接:

 $ 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 

您可以链接到不存在的PATH(文件或目录)

 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 

为什么有人会这样做?

后者,我可以创建foo文件/目录,链接将工作。

目录build-tools/20.0.0/lib/不存在,您的链接将被破坏。

我假设你在一个目录中

/媒体/ JOHN /安卓/ workspace_b4a / Android的SDK-LINUX /

并且您想为’/build-tools/20.0.0/lib’创建一个符号链接。 你可以做到这一点

  ln -sv /media/john/android/workspace_b4a/android-sdk/build-tools/20.0.0/lib platform-tools/lib 

编辑 :输出

  ls -l platform-tools/lib 

也会改变。