Ruby中是否有一种简单的方法可以从凌乱的文件路径中找到规范的文件路径?
例如:
a/b/../c/x
与a/c/x
a/./b/c/x
与a/b/c/x
a/./b/../../c/x
与c/x
有任何简单的方法吗?
答案 0 :(得分:30)
require 'pathname'
Pathname.new("a/b/../c/x").cleanpath
答案 1 :(得分:22)
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"