ln 中的路径包含硬链接和软链接

ln 中的路径包含硬链接和软链接

相对路径如何工作ln (-s or not)?例如,如果我输入ln -s foo bar/banana.txt这是什么意思? foo 与什么相关?因为它似乎与当前路径无关。另外,删除-s与不删除有什么不同吗?我已经测试过了,结果对我来说没有意义,并且手册页似乎没有解释这一点。有人能解释一下吗?

答案1

有和没有是不一样的-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目录(此处是通过其路径访问时)。linksome/dirsome/dir/linksome/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/Lb/c/L是同一个文件:相同的 inode 但链接到两个不同的目录。它们都是带有 target 的符号链接../a。但是当b/L被解析时,它指向./awhile 当 时b/c/L,它指向./b/a

相关内容