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のFAQのリスト。
于 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。ただし、シェルはバックスラッシュを解釈するため、シェルがバックスラッシュを解釈しないようにする必要があります。

シェルがバックスラッシュを解釈しないようにするには、引数で、それらの前にバックスラッシュを付けるか、引用符で囲みます(一重引用符で):c:\\cygwin\\cygbuild\\build.makまたは'c:\cygwin\cygbuild\build.mak'

この場合、二重引用符は役に立ちません。\二重引用符は、スペースでの引数の分割を停止しますが、エスケープ( )またはドル($)展開の解釈を停止しません。

于 2018-09-13T08:25:10.833 に答える