Ruby中的规范文件路径

时间:2010-08-17 12:58:00

标签: ruby path

Ruby中是否有一种简单的方法可以从凌乱的文件路径中找到规范的文件路径?

例如:

  • a/b/../c/xa/c/x
  • 相同
  • a/./b/c/xa/b/c/x
  • 相同
  • a/./b/../../c/xc/x
  • 相同

有任何简单的方法吗?

2 个答案:

答案 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"