小编典典

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

all

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

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


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


阅读 79

收藏
2022-05-19

共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你的 shell 不支持,你可以试试

readlink -f /path/here/..

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

工作方式与

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

因为路径不需要存在就可以标准化。

2022-05-19