【发布时间】:2016-07-25 17:42:47
【问题描述】:
如何消除路径中的冗余组件?
比如我想改造
/foo/../foo/bar
到
/foo/bar
【问题讨论】:
-
请注意,在支持符号链接的类 Unix 系统上,'/X/../Y' 并不总是与 '/Y' 相同。在这个问题的例子中,如果你有目录'/bar/foo/bar'和'/bar/qux/bar',并且'/foo'是'/bar/qux'的符号链接,那么'/foo/ ../foo/bar' 实际上是 '/bar/foo/bar' 而 '/foo/bar' 实际上是 '/bar/qux/bar'。所有仅在路径上进行文本替换的尝试解决方案都是错误的。 (但在 Windows 上做这种事情是可以的,因为 '..' 在那里意味着不同的东西。)