Как преобразовать путь Windows (с обратной косой чертой) в формат Unix на Babun / Cygwin

8

Я использую Windows и пишу сценарии оболочки для работы на Babun (API POSIX).

Мне нужно прочитать путь из переменной среды $ USERPROFILE и преобразовать его в стиль Unix (заменить \ на /, c: \ на / c /), чтобы я мог использовать его позже в сценарии.

Проблема в том, что всякий раз, когда я повторяю содержимое $ USERPROFILE, обратные слеши интерпретируются как экранирующие символы, и я получаю неожиданный результат (буквы «случайным образом» превращаются в специальные символы, такие как \ n, \ f и т. Д.). Так что я не могу повторить это в SED например.

Vituel
источник

Ответы:

11

Cygwin предоставляет очень полезную cygpathутилиту для преобразования путей форматов Unix и Windows. Из руководства пользователя Cygwin

cygpathПрограмма представляет собой утилиту , которая преобразует собственные имена файлов Windows , в Cygwin POSIX-путевых имен типа и наоборот. Его можно использовать, когда программе Cygwin необходимо передать имя файла в собственную программу Windows или если она ожидает получить имя файла из собственной программы Windows. Кроме того, cygpathможет выводить информацию о расположении важных системных каталогов в любом формате.

Он может конвертировать в / из путей в формате Windows или в стиле DOS, например, для печати формата Unix пути Windows:

$ cygpath -u "$USERPROFILE"
/cygdrive/c/Users/anthony

См. Руководство пользователя Cygwin для получения полной информации и cygpath --helpбазовой информации об использовании.

Энтони Геогеган
источник