Babun / CygwinでWindowsパス(バックスラッシュを含む)をUnix形式に変換する方法


8

私はWindowsを使用していて、シェルスクリプトを記述してBabun(POSIX api)で実行しています。

環境変数$ USERPROFILEからパスを読み取り、UNIXスタイルに変換する必要があります(\を/に、c:\を/ c /に置き換えてください)。これを後でスクリプトで使用できるようにします。

問題は、$ USERPROFILEの内容をエコーすると、バックスラッシュがエスケープ文字として解釈され、予期しない結果が発生することです(文字が「ランダムに」\ n、\ fなどの特殊文字に変わります)。たとえば、sedにエコーすることはできません。

回答:


11

Cygwinは、cygpathUnixおよびWindows形式のパスを変換するための非常に便利なユーティリティを提供します。Cygwinのユーザガイド

このcygpathプログラムは、Windowsのネイティブファイル名をCygwin POSIXスタイルのパス名に、またはその逆に変換するユーティリティです。CygwinプログラムがネイティブWindowsプログラムにファイル名を渡す必要がある場合、またはネイティブWindowsプログラムからファイル名を取得する必要がある場合に使用できます。または、cygpath重要なシステムディレクトリの場所に関する情報をいずれかの形式で出力できます。

WindowsまたはDOSスタイルのフォーマットパスとの間で変換を行うことができます。たとえば、WindowsパスのUnixフォーマットを出力します。

$ cygpath -u "$USERPROFILE"
/cygdrive/c/Users/anthony

詳細と基本的な使用方法については、Cygwinユーザーガイドを参照しcygpath --helpてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.