5

我试图在 Windows 机器上将文件路径转换为/从 Linux 和 Windows 转换。

Windows 的 unix 路径工作正常。

$ cygpath -w /cygdrive/c/CYGWIN/CYGBuild/build.mak
C:\CYGWIN\CYGBuild\build.mak

但是 Linux 的 windows 路径给出了错误的输出。即缺少'/'和cygdrive

$ cygpath -u c:\cygwin\cygbuild\build.mak
c:cygwincygbuildbuild.mak

有人遇到过这个问题吗??分享你的经验。

谢谢

4

4 回答 4

14

我得到了这个问题的答案。

cygpath -u 'c:\cygwin\cygbuild\build.mak'

即路径应该用单引号给出。

于 2012-09-27T12:08:46.457 回答
2

实际上据我所知;您需要在 cygwin 中使用的路径中使用正斜杠。单引号有助于路径中有空格(在这种情况下我的猜测是使用反斜杠而不是正斜杠)。否则反斜杠就像转义字符,而空格(虽然不是你的情况)需要转义字符本身。因此,引用路径往往会消除此类麻烦。

以下是帮助我理解这一点的链接:

  • 这个opencv(使用cygwin)教程,第4页,其中有一个使用的路径示例,带引号和不带引号,指示何时可能需要它们。
  • 非常有用;Cygwin 的常见问题解答列表,包括如何处理空格(或者在这种情况下,添加引号会有所帮助的路径中的反斜杠)。
于 2012-10-14T20:49:45.467 回答
0

cygpath 的-m选项可能是最简单的解决方案。Windows 软件一般接受/以及\. (可能有一些例外,但我使用的开发工具都很好。)

$ cygpath -m /cygdrive/c/CYGWIN/CYGBuild/build.mak

C:/Cygwin/CYGBuild/build.mak
于 2018-03-25T14:55:51.327 回答
0

似乎没有人解释为什么,我们这里是一个解释。

Cygpath将接受斜杠和反斜杠:c:/cygwin/cygbuild/build.mak c:\cygwin\cygbuild\build.mak. 然而,shell 将解释反斜杠,因此您需要阻止 shell 解释反斜杠。

您可以阻止 shell 解释参数中的反斜杠,方法是在它们前面加上一个反斜杠,或者通过引用(用单引号):c:\\cygwin\\cygbuild\\build.mak'c:\cygwin\cygbuild\build.mak'.

在这种情况下,双引号无济于事。双引号停止在空间上的参数中断,但不会停止对转义 ( \) 或美元 ( $) 扩展的解释。

于 2018-09-13T08:25:10.833 回答