Обновление (август 2016 г.):
Этот вопрос больше не актуален, поскольку msys2 теперь поставляется с cygpath
в своей установке.
...
Я резюмирую свои исследования здесь.
Эквивалент cygpath в MSYS - использовать эту команду:
{ cd /c/some/path && pwd -W; } | sed 's|/|\\|g'
Проблема с этим подходом в том, что он требует существующего пути, например c:\some\path
должен быть существующим каталогом; однако настоящий cygpath поддерживает несуществующие пути.
Итак, если вам нужно получить путь к несуществующему каталогу, вы можете вернуться к преобразованию пути в sed:
{ cd 2>/dev/null /c/some/path && pwd -W ||
echo /c/some/path | sed 's|^/\([a-z,A-Z]\)/|\1:/|'; } | sed 's|/|\\|g'
Множество косых черт призвано удовлетворить правила цитирования sed
. Итак, если c:\some\path
не существует на вашем компьютере, он попытается преобразовать прямую косую черту в обратную и заменить /c/
на c:\
(или любую другую букву диска). Единственным недостатком для этого является то, что он не будет работать правильно с несуществующими путями, которые содержат смонтированный компонент, например /bin/does-not-exist
или /usr/bin/does-not-exist
.
Еще один подход - использовать cygpath из cygwin в MSYS. Похоже, что cygwin устанавливает глобальную переменную окружения CYGPATH, то есть ее можно использовать из обычного cmd.exe:
%CYGPATH% -w /c/some/path
C:\some\path
или из MSYS:
$CYGPATH -w /c/some/path
C:\some\path
до тех пор, пока вы установили точки с /c
по /cygdrive/c
в cygwin. Но этот подход напечатает вас /usr
, находящимся в установке cygwin, а не в MSYS.
Короче говоря, я думаю, что msys действительно должна включать реальный cygpath в набор инструментов по умолчанию только для некоторых случаев, которые не обрабатываются автоматически логикой преобразования аргументов командной строки msys.
person
Pavel P
schedule
21.08.2012
cygpath
. Если мы добавимcygpath.exe
из ответа @ user1307996 в корзину MSYS, это сработает. - person Evgeni Sergeev   schedule 25.12.2013\Windows
в posix с помощью этих сложных скриптов. Нет смысла не использовать cygpath на cygwin - person Pavel P   schedule 07.01.2015cygpath
в наличии ... - person Tobias Kienzler   schedule 07.01.2015