简化包含“..”的路径

简化包含“..”的路径

我想简化包含父目录 ( ..) 引用的路径,但不使其绝对。

例如,像这样的路径foo/bar/../baz应该简化为,foo/baz因为该bar/..部分抵消了1


1严格来说,如果bar是其他地方的符号链接,则这是不正确的 - 但请随意忽略这一点:我不在乎简化返回的结果是否与存在符号链接的原始路径不同。

答案1

我想您正在寻找的是realpath

$ realpath --relative-to="$PWD" "foo/bar/../baz"
foo/baz

它也适用于符号链接,使用-s忽略它们:

-s, --strip, --no-symlinks 不扩展符号链接

相关内容