一尘不染

您如何规范Bash中的文件路径?

linux

我想转变/foo/bar/../foo

是否有执行此操作的bash命令?


编辑:在我的实际情况下,该目录确实存在。


阅读 258

收藏
2020-06-02

共1个答案

一尘不染

如果您想从路径中截取一部分文件名,则“ dirname”和“ basename”是您的朋友,并且“ realpath”也很方便。

dirname /foo/bar/baz 
# /foo/bar 
basename /foo/bar/baz
# baz
dirname $( dirname  /foo/bar/baz  ) 
# /foo 
realpath ../foo
# ../foo: No such file or directory
realpath /tmp/../tmp/../tmp
# /tmp

realpath 备择方案

如果realpath您的外壳不支持,则可以尝试

readlink -f /path/here/..

readlink -m /path/there/../../

与…相同

realpath -s /path/here/../../

因为不需要标准化路径。

2020-06-02