Ferus Asked: 2018-01-10 09:33:18 +0800 CST2018-01-10 09:33:18 +0800 CST 2018-01-10 09:33:18 +0800 CST ln 中带有硬链接和软链接的路径 772 相对路径如何工作ln (-s or not)?例如,如果我输入ln -s foo bar/banana.txt这是什么意思?foo 相对于什么?因为它似乎与当前路径无关。如果我删除-s或不删除,它也会有所不同吗?我已经对其进行了测试,结果对我来说没有意义,并且手册页似乎没有解释这一点。谁能解释一下? symlink hard-link 1 个回答 Voted Best Answer Stéphane Chazelas 2018-01-10T09:44:30+08:002018-01-10T09:44:30+08:00 有和没有是不同的-s。 在-s: ln -s path/to/file some/dir/link path/to/file设置为some/dir/link(或者some/dir/link/file如果link是目录)的符号链接目标。 符号链接是一种特殊类型的文件,它/包含/一个路径(可以是任何非 0 字节的数组,某些系统甚至允许空字符串),它是符号链接的目标。ln将其设置为第一个参数。 解析链接后(稍后使用链接时),path/to/file路径将相对于link(硬)链接到的目录(some/dir此处some/dir/link通过其some/dir/link路径访问时)。 请注意,在命令运行时(或曾经)path/to/file不需要存在。ln 而在: ln path/to/file some/dir/link 它类似于: cp path/to/file some/dir/link path/to/file相对于正在运行的进程的当前工作目录ln。 没有什么能阻止您创建指向符号链接的多个(硬)链接。例如: $ mkdir -p a b/c b/a $ ln -s ../a b/L # b/L a symlink to "a" $ ln b/L b/c/L b/L并且b/c/L是同一个文件:相同的 inode 但链接到两个不同的目录。它们都是与 target 的符号链接../a。但是当b/L解决时,那个指向./a当b/c/L,那个指向./b/a。
有和没有是不同的
-s
。在
-s
:path/to/file
设置为some/dir/link
(或者some/dir/link/file
如果link
是目录)的符号链接目标。符号链接是一种特殊类型的文件,它/包含/一个路径(可以是任何非 0 字节的数组,某些系统甚至允许空字符串),它是符号链接的目标。
ln
将其设置为第一个参数。解析链接后(稍后使用链接时),
path/to/file
路径将相对于link
(硬)链接到的目录(some/dir
此处some/dir/link
通过其some/dir/link
路径访问时)。请注意,在命令运行时(或曾经)
path/to/file
不需要存在。ln
而在:
它类似于:
path/to/file
相对于正在运行的进程的当前工作目录ln
。没有什么能阻止您创建指向符号链接的多个(硬)链接。例如:
b/L
并且b/c/L
是同一个文件:相同的 inode 但链接到两个不同的目录。它们都是与 target 的符号链接../a
。但是当b/L
解决时,那个指向./a
当b/c/L
,那个指向./b/a
。