来自 coreutils 关于realpath
--relative-to=file
打印相对于指定文件的解析文件名。请注意,此选项遵循与文件存在相关的-m
和选项。-e
--relative-base=base
该选项与 一起使用时有效--relative-to
,并且将限制 的输出,--relative-to
以便仅当文件是基本文件的后代时才输出相对名称。否则输出绝对文件名。如果--relative-to
未指定,则将相对于基数打印基数的后代。如果--relative-to
指定,则该目录必须是该目录的后代才能使该选项生效。注意:此选项遵循与文件存在相关的-m
和选项。-e
例如:realpath --relative-to=/usr /tmp /usr/bin ⇒ ../tmp ⇒ bin realpath --relative-base=/usr /tmp /usr/bin ⇒ /tmp ⇒ bin
“此选项与”一起使用时有效
--relative-to
是否意味着 没有指定--relative-base
就无法工作--relative-to
?那为什么后面还说“如果
--relative-to
没有指定,则基数的后代将相对于基数打印”,这意味着--relative-base
不指定也可以工作--relative-to
?“如果
--relative-to
未指定,则 base 的后代将相对于 base 打印。如果--relative-to
指定,则该目录必须是 base 的后代才能使此选项生效。”有指定和没有指定的两种情况有什么区别
--relative-to
?在引用中,两种情况是否相同,即只有 base 的后代相对于 base 打印,而其他则打印为绝对路径名?
谢谢。
答案1
开发人员发现这一点很晦涩,并在四年多前对其进行了更改:
- realpath:优化 --relative-base 用法(2012-03-15)
不需要为每条被访问的路径重新计算基点是否是相对位置的前缀。
- 真实路径:让
--relative-to
默认为--relative-base
(2012-03-15)
大多数时候,如果有人想要过滤哪些路径是相对的,同时保留所有其他路径是绝对的,他们也想基于相同的过滤
--relative-to
目录。使这一点更容易指定。
但文档为--relative-base
并且--relative-to
似乎有没有被改写来澄清如果--relative-to
未指定,则默认为 给定的值--relative-base
。