Подтвердить что ты не робот

Канонический путь к файлу в Ruby

Есть ли простой способ в Ruby найти путь к каноническому файлу из путаного пути к файлу?

Например:

  • a/b/../c/x совпадает с a/c/x
  • a/./b/c/x совпадает с a/b/c/x
  • a/./b/../../c/x совпадает с c/x

Любой простой способ сделать это?

4b9b3361

Ответ 1

Pathname.new("a/b/../c/x").cleanpath

Ответ 2

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"