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

4362
Vituel

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

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

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

8

1 ответ на вопрос

9
Anthony Geoghegan

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базовой информации об использовании.