53

標準のmsys機能を使用して、 Windowsのdirパス(たとえばc:/libs/Qt-static)を正しいPOSIX dirパス( )に変換するにはどうすればよいですか?およびその逆?/c/libs/Qt-static

4

8 に答える 8

58

Cygwin、Git Bash、およびMSYS2には、cygpath.exeそれを行うためだけに呼び出される既製のユーティリティがあります。

出力タイプオプション:
  -d、-dos DOS(短縮)形式のNAME(C:\ PROGRA〜1 \)を出力します
  -m、--windowsと同様に混合されますが、通常のスラッシュが使用されます(C:/ WINNT)
  -M、-modeファイルのモードに関するレポート(binmodeまたはtextmode)
  -u、-unix(デフォルト)UNIX形式のNAMEを出力します(/ cygdrive / c / winnt)
  -w、-windowsはWindows形式のNAME(C:\ WINNT)を出力します
  -t、-type TYPE print TYPE form:'dos'、'mixed'、'unix'、または'windows'
于 2012-12-04T12:16:44.600 に答える
49

わかりませんがmsys、グーグルで簡単に検索すると、sedユーティリティが含まれていることがわかりました。したがって、ネイティブ Linux での動作と同様に動作すると仮定すると、msysその方法の 1 つを次に示します。

Windows から POSIX へ

すべてのバックスラッシュをスラッシュに置き換え、ドライブ文字の後の最初のコロンを削除し、先頭にスラッシュを追加する必要があります:

echo "/$pth" | sed 's/\\/\//g' | sed 's/://'

または、xaizek が指摘したように、

echo "/$pth" | sed -e 's/\\/\//g' -e 's/://'

POSIX から Windows へ

セミコロンを追加し、最初のスラッシュを削除して、すべてのスラッシュをバックスラッシュに置き換える必要があります:

echo "$pth" | sed 's/^\///' | sed 's/\//\\/g' | sed 's/^./\0:/'

またはより効率的に、

echo "$pth" | sed -e 's/^\///' -e 's/\//\\/g' -e 's/^./\0:/'

ここ$pthで、それぞれ Windows または POSIX パスを格納する変数です。

于 2012-12-04T11:06:44.243 に答える