来自 coreutils 手册
-L
--logical
符号链接在指定的文件名中解析,但它们在..
处理任何后续组件之后解析。
-P
--physical
符号链接在指定的文件名中解析,并且在..
处理任何后续组件之前解析它们。这是默认的操作模式。
我是否正确地认为两个选项之间的区别在于处理符号链接和处理的顺序..
?
您能否解释一下这两个选项有何不同,并提供一些示例?
谢谢。
答案1
是的,区别在于处理顺序..
和符号链接。
下面是一个示例,说明这将如何产生影响。我在 处安装了一个外部磁盘/root/Archives
,并且有一个从我家指向它的符号链接:
$ pwd
/home/katsura
$ ls -ld Archives
lrwxrwxrwx 1 root root 14 Oct 23 2013 Archives -> /root/Archives
realpath
解析符号链接:
$ realpath Archives
/root/Archives
$ realpath -L Archives
/root/Archives
然而:
$ realpath Archives/../foo
/root/foo
$ realpath -L Archives/../foo
/home/katsura/foo
如果没有选项(或使用-P
),首先解析符号链接,因此Archives
变为/root/Archives
,然后..
应用。
-L
首先应用..
,因此Archives/..
变为/home/katsura
,然后其余的符号链接已解决。由于没有留下符号链接,因此结果只是/home/katsura
.