Canonical File Path in Ruby

Is there an easy way in Ruby to find a canonical file path out of a messy file path?

For example:

  • a/b/../c/x is the same as a/c/x
  • a/./b/c/x is the same as a/b/c/x
  • a/./b/../../c/x is the same as c/x

Any simple way to do this?

22
задан Lance Roberts 18 February 2013 в 23:27
поделиться

2 ответа

require 'pathname'

Pathname.new("a/b/../c/x").cleanpath
31
ответ дан 29 November 2019 в 04:06
поделиться

File.expand_path (file_name [, dir_string]) → abs_file_name

Преобразует путь в абсолютный путь. Относительные пути ссылаются на текущий рабочий каталог процесса, если не указана dir_string, и в этом случае он будет использоваться в качестве отправной точки. Указанный путь может начинаться с ~ , который расширяется до домашнего каталога владельца процесса (переменная среды HOME должна быть установлена ​​правильно). ~ пользователь расширяется до домашнего каталога указанного пользователя.

File.expand_path("~oracle/bin")           #=> "/home/oracle/bin"
File.expand_path("../../bin", "/tmp/x")   #=> "/bin"
22
ответ дан 29 November 2019 в 04:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: