真实路径:--relative-base 和 --relative-to

真实路径:--relative-base 和 --relative-to

来自 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
  1. “此选项与”一起使用时有效--relative-to是否意味着 没有指定--relative-base就无法工作--relative-to

    那为什么后面还说“如果--relative-to没有指定,则基数的后代将相对于基数打印”,这意味着--relative-base不指定也可以工作 --relative-to

  2. “如果--relative-to未指定,则 base 的后代将相对于 base 打印。如果--relative-to指定,则该目录必须是 base 的后代才能使此选项生效。”

    有指定和没有指定的两种情况有什么区别 --relative-to

    在引用中,两种情况是否相同,即只有 base 的后代相对于 base 打印,而其他则打印为绝对路径名?

谢谢。

答案1

开发人员发现这一点很晦涩,并在四年多前对其进行了更改:

不需要为每条被访问的路径重新计算基点是否是相对位置的前缀。

大多数时候,如果有人想要过滤哪些路径是相对的,同时保留所有其他路径是绝对的,他们也想基于相同的过滤--relative-to目录。使这一点更容易指定。

但文档为--relative-base并且--relative-to似乎有没有被改写来澄清如果--relative-to未指定,则默认为 给定的值--relative-base

相关内容