在Ruby中获取当前目录的父目录

icn*_*icn 56 ruby directory

我知道我可以通过获取当前目录

$CurrentDir = Dir.pwd
Run Code Online (Sandbox Code Playgroud)

当前目录的父目录怎么样?

Rob*_*rco 110

File.expand_path("..", Dir.pwd)
Run Code Online (Sandbox Code Playgroud)

  • @Niklas:或``File.expand_path('..')`,[默认`dir_string`](http://ruby-doc.org/core-1.9.3/File.html#method-c-expand_path)是''.'` (13认同)
  • 上面提出的解决方案对我来说不适合使用`ruby 2.1.5`.以下做了...`File.dirname(File.expand_path('..',__ FILE __))` (5认同)

Mar*_*oda 13

也许最简单的解决方案:

puts File.expand_path('../.') 
Run Code Online (Sandbox Code Playgroud)

  • 为什么不只是`File.expand_path('..')`? (10认同)

Kei*_*ett 8

我认为更简单的解决方案是使用File.dirname:

2.3.0 :005 > Dir.pwd
 => "/Users/kbennett/temp"
2.3.0 :006 > File.dirname(Dir.pwd)
 => "/Users/kbennett"
2.3.0 :007 > File.basename(Dir.pwd)
 => "temp"
Run Code Online (Sandbox Code Playgroud)

File.basename返回File.dirname没有的路径的组件.

当然,这仅适用于filespec是绝对的而不是相对的.为了确保绝对可以做到这一点:

2.3.0 :008 > File.expand_path('.')
 => "/Users/kbennett/temp"
2.3.0 :009 > File.dirname(File.expand_path('.'))
 => "/Users/kbennett"
Run Code Online (Sandbox Code Playgroud)


aki*_*kim 5

在现代 Ruby 中,你绝对应该使用Pathname

Pathname.getwd.parent
Run Code Online (Sandbox Code Playgroud)