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

我想将 /foo/bar/.. 转换为 /foo

有没有 bash 命令可以做到这一点?


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

最佳答案

如果你想从路径中选择文件名的一部分,“dirname”和“basename”是你的 friend ,“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 替代方案

如果你的shell不支持realpath,你可以试试

readlink -f /path/here/.. 

还有

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

工作原理与

相同
realpath -s /path/here/../../

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

https://stackoverflow.com/questions/284662/

相关文章:

python - 如何在 Python 中将字符串转换为 double 值?

linux - 如何将命令行参数传递给 unix/linux 系统上正在运行的进程?

linux - 更改用户默认主目录的命令

python - 输入()错误 - NameError : name '...' is not de

python - Pandas :从多级列索引中删除一个级别?

python - 让 virtualenv 从你的全局站点包中继承特定的包

python - Google 大量使用 Python

linux - 如何将 time 命令的输出重定向到 Linux 中的文件?

linux - 第一次如何配置postgresql?

python - 为什么需要在 Python 方法中显式使用 "self"参数?