创建指向目录的符号链接
我有一个目录,我想创建一个符号链接。 我使用的命令是:
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
也会改变。