Ответ 1
Pathname.new("a/b/../c/x").cleanpath
Есть ли простой способ в Ruby найти путь к каноническому файлу из путаного пути к файлу?
Например:
a/b/../c/x
совпадает с a/c/x
a/./b/c/x
совпадает с a/b/c/x
a/./b/../../c/x
совпадает с c/x
Любой простой способ сделать это?
Pathname.new("a/b/../c/x").cleanpath
File.expand_path (имя_файла [, dir_string]) → abs_file_name
Преобразует путь к абсолютному пути. Относительные пути ссылаются на текущий рабочий каталог процесса, если не указана dir_string, и в этом случае он будет использоваться в качестве отправной точки. Данное имя пути может начинаться с ~
, который расширяется до домашнего каталога владельца процесса (переменная среды HOME
должна быть установлена правильно). ~user
расширяется в домашний каталог именованного пользователя.
File.expand_path("~oracle/bin") #=> "/home/oracle/bin"
File.expand_path("../../bin", "/tmp/x") #=> "/bin"