Cygwin bashコマンドラインのASCII以外の場合にエラーが発生する

Cygwin bashコマンドラインのASCII以外の場合にエラーが発生する

cmd.exeでbashをこのように呼び出します。

c:\cygwin\bin\bash --login -c "echo ф"

Cygwin 2.8.0を入手

/usr/bin/bash: echo ф: command not found

引数をコマンド名の一部として扱います。 Cygwin 2.5.2で同じことをすると、出力が表示されますф

ベストアンサー1

これは以前はうまくいき、Unicesでbashを実行している人にとってはうまくいったので(ここでDebianでテストしました)、Cygwinのバグを見つけたようです。 Cygwinプロジェクトには次のプロジェクトがあります。Cygwinのバグ報告。ここには有用な情報や手順がたくさんあり、ここにまとめるには長すぎます。

これまでキャラクターを脱出すればこの問題を解決できるようです。 Bashは、フラグがecho与えられたときに-e様々なエスケープシーケンスを解釈します。

c:\cygwin\bin\bash --login -c "echo -e '\xd1\x84'"

動作する必要があります。 16進数D1 84は、fのUTF-8エンコーディングです。ツールがある場合はunicodeこれを知らせますが、次の文字のみが表示されodますxxd

$ echo -n 'ф' | od -t x1
0000000 d1 84
0000002

$ echo -n 'ф' | xxd -p
d184

Cygwin FAQでは、デフォルトではUTF-8を使用しているので、うまく機能していることがわかります。しかし、もちろん、他のエンコーディングを使用することもできます。Windowsでは、主にUTF16leを使用しています。):

$ echo -n 'ф' | iconv -t utf16le | xxd -p
4404

おすすめ記事