【问题标题】:how to evaluate a given path within a bash shell如何评估 bash shell 中的给定路径
【发布时间】:2009-05-27 06:32:22
【问题描述】:

是否有一个 bash 命令将文件路径作为输入并返回绝对文件路径? 更具体地说,我想要一个将路径作为输入的命令,例如:

/tmp/yaneeve/kit/linux/../../output/kit/SOURCES//usr//apps/myapp/lib

并返回路径:

/tmp/yaneeve/output/kit/SOURCES/usr/apps/myapp/lib

谢谢!

【问题讨论】:

    标签: linux bash unix filepath


    【解决方案1】:

    如果路径存在,有一种可移植的方式(甚至在 linux 上)更可靠:

    canonicalPath=$(cd "$path"; pwd)
    

    【讨论】:

    • 好收获。是否需要使用外部 pwd 程序?内部的遵循逻辑路径,不需要匹配“物理”路径。
    • mkdir a "dir1",创建一个链接 "dir2" 到它,cd dir2,比较 pwd 和命令 pwd。
    【解决方案2】:

    尝试(Linux)

    readlink -f
    

    【讨论】:

    • 大家好,请注意,我在 readlink 中发现了一个错误 (?)。当路径并不真正存在时,它只会将第一部分附加到其输出中。例如:假设输入是 /tmp/yaneeve/apps/newapp/guide/eng 并且说存在的这条路径的最深部分是 /tmp/yaneeve/apps 输出将是 /tmp/yaneeve/apps/newapp 任何cmets 对此发现有何看法?
    • 对于不存在的路径,这里不输出任何内容(我完全使用了你的示例)。
    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 2018-05-02
    • 1970-01-01
    • 2021-06-30
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    相关资源
    最近更新 更多