我在Windows上運行Ruby,但我不知道是否應該有所作爲。我想要做的就是獲取當前工作目錄的絕對路徑。這可能來自irb嗎?顯然,使用File.expand_path(__FILE__)
如何從irb獲取當前工作目錄的絕對路徑
一個腳本這是可能的,但是從IRB我嘗試以下,並得到了「Permission denied」錯誤:
File.new(Dir.new(".").path).expand
我在Windows上運行Ruby,但我不知道是否應該有所作爲。我想要做的就是獲取當前工作目錄的絕對路徑。這可能來自irb嗎?顯然,使用File.expand_path(__FILE__)
如何從irb獲取當前工作目錄的絕對路徑
一個腳本這是可能的,但是從IRB我嘗試以下,並得到了「Permission denied」錯誤:
File.new(Dir.new(".").path).expand
Dir.pwd
似乎這樣的伎倆。
File.expand_path File.dirname(__FILE__)
將返回相對於這個命令是從所謂的文件目錄。
但Dir.pwd
返回工作目錄(結果等同於你的終端執行pwd
)
「Dir.pwd」等同於'pwd -P'。'exec('pwd -L')'將在終端中獲得相當於pwd的值(pwd通常是bash內建的,並且不會解析符號鏈接)。 – 2014-01-26 03:27:09
請看看經常被遺忘的Pathname類:http://www.ruby-doc.org/stdlib-2.1.1/libdoc/pathname/rdoc/Pathname.html – awenkhh 2014-06-27 19:26:19
有一個問題,Dir.pwd會打印運行腳本的工作目錄 - 這可能不是你想要的。 – Brandon 2014-10-13 20:24:59
這會給你當前文件的工作目錄。
File.dirname(__FILE__)
實施例:
current_file: 「/Users/nemrow/SITM/folder1/folder2/amazon.rb」
結果: 「/用戶/ nemrow/SITM/folder1中/文件夾2」
請注意,工作目錄不能與實際文件相同。所以'Dir.pwd'和你的建議可能會有所不同。 – Besi 2015-02-02 13:41:59
至於相對於當前正在執行腳本的路徑,因爲紅寶石2.0你也可以使用
__dir__
因此,這是基本相同
File.dirname(__FILE__)
如果你想獲得當前的RB文件的目錄的完整路徑:
File.expand_path('../', __FILE__)
通過這個,你可以得到的任何絕對路徑文件位於任何目錄中。
File.join(Dir.pwd,'some-dir','some-file-name')
這將返回
=> "/User/abc/xyz/some-dir/some-file-name"
現在的問題是實際上沒有清楚:你想一)當前工作目錄(這是'Dir.pwd'),或者你想要的目錄,目前正在運行腳本(它是'File.dirname(__ FILE __)')?想象一下,在其他任何地方調用腳本(比如'ruby testdirectory/testscript.rb'),這兩者將會不同! – amenthes 2015-03-22 21:13:51
@amenthes您聲稱我的問題不清楚,然後問「你想要一個)當前的工作目錄....」和我的問題狀態「我想要做的就是獲取*當前工作目錄的*絕對路徑... 」。什麼不清楚? – 2015-07-18 23:57:51
由於「很明顯從腳本中可以使用'File.expand_path(__ FILE __)'」 - 因爲'__FILE__'的位置與當前工作目錄(它是'Dir.pwd')是不同的動物。 – amenthes 2015-07-19 09:06:17