在Ruby中,有没有一种简单的方法可以从一个混乱的文件路径中找到规范的文件路径?
例如:
a/b/../c/x
等同于a/c/x
a/./b/c/x
等同于a/b/c/x
a/./b/../../c/x
等同于c/x
有没有简单的方法实现这个功能呢?
require 'pathname'
Pathname.new("a/b/../c/x").cleanpath
File.expand_path(file_name [, dir_string] ) → abs_file_name
将文件路径名转换为绝对路径名。如果未提供dir_string,则相对路径是从进程的当前工作目录引用的,否则会将其用作起始点。给定的路径名可能以~
开头,它会扩展为进程所有者的主目录(必须正确设置环境变量HOME
)。~user
会扩展为指定用户的主目录。
File.expand_path("~oracle/bin") #=> "/home/oracle/bin"
File.expand_path("../../bin", "/tmp/x") #=> "/bin"
File.realpath
代替。 - undefined
canonicalFilePath
),那么请使用realpath
而不是cleanpath
。 - Erik Sandbergcleanpath
不同,realpath
访问文件系统并在路径不存在时失败。 - hagello