Bash:消除冗余路径组件?

时间:2016-04-05 16:36:17

标签: linux bash path sh

如何消除路径中的冗余组件?

例如,我想转换

HOME=""

/foo/../foo/bar

2 个答案:

答案 0 :(得分:2)

使用gnu realpath

p='/foo/../foo/bar'

realpath -m "$p"

<强>输出:

/foo/bar

根据realpath --help

-m, --canonicalize-missing   no components of the path need exist

您还可以使用更常用的readlink(感谢@pjh):

readlink -m "$p"

答案 1 :(得分:0)

你可能会通过以下方式进行管道:sed&#39; s - / .. / foo / - / - g&#39;替换路径名中的向上/向下引用。