Cygwin cygpath无法将Windows路径转换为Linux路径

Cygwin cygpath无法将Windows路径转换为Linux路径,cygwin,cygpath,Cygwin,Cygpath,我正在尝试在Windows计算机上转换与Linux和Windows之间的文件路径 到windows的unix路径工作正常 $ cygpath -w /cygdrive/c/CYGWIN/CYGBuild/build.mak C:\CYGWIN\CYGBuild\build.mak 但是windows到Linux的路径给出了错误的输出。i、 e缺少“/”和cygdrive $ cygpath -u c:\cygwin\cygbuild\build.mak c:cygwincygbuildbuil

我正在尝试在Windows计算机上转换与Linux和Windows之间的文件路径

到windows的unix路径工作正常

$ cygpath -w /cygdrive/c/CYGWIN/CYGBuild/build.mak
C:\CYGWIN\CYGBuild\build.mak
但是windows到Linux的路径给出了错误的输出。i、 e缺少“/”和cygdrive

$ cygpath -u c:\cygwin\cygbuild\build.mak
c:cygwincygbuildbuild.mak
有人面临这个问题吗??分享你的经验


谢谢,我得到了这个问题的答案

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

i、 e路径应以单引号给出。

据我所知,实际上;在cygwin中使用的路径中需要正斜杠。如果路径中有空格(我猜在本例中是使用反斜杠而不是正斜杠),单引号会有所帮助。否则,反斜杠类似于转义字符,而空格(尽管不是在您的情况下)本身需要转义字符。因此,引用路径有助于消除此类麻烦

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

  • opencv(使用cygwin)教程,第4页,其中有一个使用的路径示例,带引号和不带引号,指示何时可能需要它们
  • 也是 非常有用;Cygwin的常见问题列表,包括如何处理 空格(或者在本例中,在添加引号的路径中使用反斜杠)

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


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

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

      您可以通过在参数前加反斜杠或引用(单引号)来阻止shell解释反斜杠,方法是:
      c:\\cygwin\\cygbuild\\build.mak
      'c:\cygwin\cygbuild\build.mak'

      在这种情况下,双引号没有帮助。双引号停止在空格上打断参数,但不停止转义(
      \
      )或美元(
      $
      )扩展的解释

      注意,这不是Linux(也不是WFL)。他们是Gnu。Cygwin使用一个名为
      Cygwin.dll
      的dll来完成Unix内核(如Linux)将要完成的工作。(Gnu+Linux)-Linux+dll=Gnu+dll
      $ cygpath -m /cygdrive/c/CYGWIN/CYGBuild/build.mak
      
      C:/Cygwin/CYGBuild/build.mak