8

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

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

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

1 ответ1

9

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .