创建目录的符号链接

创建目录的符号链接

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

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都显示为红色。我做错了什么?build-tools/20.0.0/lib/platform-tools/lib

答案1

感谢大家的建议。我发现最容易理解如何做到这一点(尽管我仍然不明白其背后的逻辑):

cd ~/workspace_b4a
cd android-sdk-linux
cd platform-tools
ln -sv ../build-tools/20.0.0/lib/ .

答案2

假设您在目录中/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。为了确保您不会出错(并且因为您可以使用方便的制表符补全),有两个选项:

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

$ 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

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

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/不存在时,您的链接将被断开。

答案4

我假设你在一个目录中

/媒体/约翰/Android/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

也将会改变。

相关内容