web-dev-qa-db-ja.com

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

私はWindowsを使用しており、Babun(POSIX API)で実行するシェルスクリプトを作成しています。

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

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

8
Vituel

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

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

WindowsまたはDOSスタイルのフォーマットパスとの間で変換できます。 WindowsパスのUnix形式を出力するには:

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

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

11