perl - 将相对路径转换为绝对路径?

标签 perl unix shell path absolute-path

我不确定这些路径是否重复。给定相对路径,如何使用 shell 脚本确定绝对路径?

示例:

relative path: /x/y/../../a/b/z/../c/d

absolute path: /a/b/c/d

最佳答案

我在unix中遇到的最可靠的方法是readlink -f:

$ readlink -f /x/y/../../a/b/z/../c/d
/a/b/c/d

一些注意事项:

  1. 这还有解析所有符号链接(symbolic link)的副作用。这可能是理想的,也可能不是,但通常是理想的。
  2. 如果您引用不存在的目录,
  3. readlink 将给出空白结果。如果您想支持不存在的路径,请改用readlink -m。不幸的是,2005 年之前发布的 readlink 版本中不存在此选项。

关于perl - 将相对路径转换为绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4045253/

相关文章:

perl - 检查模块与不同 Perl 版本的兼容性

regex - 如何在 Perl 中使用正则表达式检查字符串是否符合精确模式

c - 为什么 Perl 的本地时间函数(和 C 的 tm 结构)中的年份值相对于 1900 年?

linux - 搜索和替换(多行)

java - 每 5 分钟间隔使用 grep 解析日志文件

python - 使用命令行参数打开 Python 文件

perl - perl 的 Docker 基础镜像; E : Package 'libssl1.0.0' has no installation candidate

linux - “-”文件在我的主目录中是什么意思?

regex - 正则表达式查找命令cygwin?

linux - 使用 SNMP 协议(protocol)通过 SNMP 命令运行脚本会给出不同的输出,因为脚本独立执行