Как преобразовать путь Windows (с обратной косой чертой) в формат Unix на Babun/Cygwin
Я использую Windows и пишу сценарии оболочки для работы на Babun (API POSIX).
Мне нужно прочитать путь из переменной среды $USERPROFILE и преобразовать его в стиль Unix (заменить \ на /, c:\ на /c/), чтобы я мог использовать его позже в сценарии.
Проблема заключается в том, что всякий раз, когда я повторяю содержимое $USERPROFILE, обратные слеши интерпретируются как экранирующие символы, и я получаю неожиданный результат (буквы "случайным образом" превращаются в специальные символы, такие как \n, \f и т. Д.). Так что я не могу отразить это, например, в sed.
1 ответ
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
для базовой информации об использовании.