▼スレッド
│
└◇876:bashで一部の日本語ファイル名が扱えない [JL] 12/29 01:52
└◇877:Re:bashで一部の日本語ファイル名が扱えない [な] 12/29
├◇878:Re[2]:bashで一部の日本語ファイル名が扱えない [JL] 12/29
│└◇879:Re[3]:bashで一部の日本語ファイル名が扱えない [MSだす。] 12/29
│ └◇880:Re[4]:bashで一部の日本語ファイル名が扱えない [MSだす。] 12/29
│ └◇881:Re[5]:bashで一部の日本語ファイル名が扱えない [JL] 12/30
│ └◇882:Re[6]:bashで一部の日本語ファイル名が扱えない [MSだす。] 12/30
│ └◇883:Re[7]:bashで一部の日本語ファイル名が扱えない [JL] 12/30
└◇927:Re[2]:bashで一部の日本語ファイル名が扱えない [hag] 01/26 <
一部の日本語ファイル名を bash で正しく扱うことができません。そのような場合、タブで補完しても一部の文字が化けてしまいますが、そのまま実行するとファイル名はきちんと渡るようです。しかし、逆にファイル名を正しく入力するとエラーになったりするので、ちょっと困っています。スレッド一覧
(例) 段掛け.TXT
段 --(補完)--> 段浬|け.TXT
まだ Cygwin を使い始めて間もないので、LANG=ja_JP.SJIS くらいしか思いつかないんですが、この設定はあってもなくても変わらないようです。
ファイル名を ls (ls --show-control-chars) で表示する場合には正しく表示されます。何が問題なんでしょうか?
Windows 2000
Cygwin 1.3.18
bash 2.05b-8
要するに、シェル上で日本語を入力したい、ということでしょうか。スレッド一覧
であれば、"inputrc cygwin"あたりで検索してみてください。
参考:
http://www.docile.org/users/docile/cygwin/faq-j.html
http://www.mars.dti.ne.jp/~sohda/cygwin/faq.html#Q3
http://uenox.infoseek.livedoor.com/cygwin/japanese.html
レスありがとうございます。スレッド一覧
> 要するに、シェル上で日本語を入力したい、ということでしょうか。
日本語入力ができないわけではなく、一部の日本語ファイル名を正しいファイル名で扱えないということです。
例に挙げた 段掛け.TXT とというファイルの場合、次のように入力して実行するとエラーになってしまいます。無論 段掛け.TXT というファイルは存在しています。
>less 段掛け.TXT
段・ No such file or directory
bash: け.TXT: command not found
仕方がないので、「段」だけを入力して補完すると次のようにファイル名が化けてしまいますが、ファイル名はきちんと渡って実行できます。
>less 段浬|け.TXT
多くの日本語ファイル名は正しく扱えるようですが、一部の文字を含んでいる場合に発生します。
一応、.inputrc は次のようになっています。これ自体に問題はないと思うんですが。
set kanji-code sjis
set input-meta on
set output-meta on
set convert-meta off
set bell-style none
問題のあるファイル名をクォートしてみる、というのはどうでしょう。スレッド一覧
$ less '段掛け.txt'
または
$ less "段掛け.txt"
見た目には(2バイトの)日本語が扱えるようにみえていてもも実はそうではありません。問題の文字列のなかにパイプ"|"のasciiコードと一致するコードがあるため、bashはパイプラインとして処理しようとしてます。
なお、補完の件は、bashが記号"|"から特別な意味を取り除くために自動的に"\"を入れるために起こるのでしょう(スペースを含むファイル名を補完させるときと同じだと思います)。スレッド一覧
これはbashのバグでもなければ、日本語に関する設定ミスでもないでしょう(Cygwinのbashはもともと日本語が扱えない)。
多分日本語をちゃんと扱いたければ、日本語対応のbashを持ってきて、自分でビルドすることになるのではないでしょうか。
お世話になります。スレッド一覧
> 問題のあるファイル名をクォートしてみる、というのはどうでしょう。
少し試してみた範囲では、とりあえずこれでうまくいくようです。二重引用符 " では駄目で、代わりに ' を使うとうまくいく場合もありました。
> 多分日本語をちゃんと扱いたければ、日本語対応のbashを持ってきて、自分でビルドすることになるのではないでしょうか。
よくわかりました。.inputrc などの設定だけで日本語が扱えるのがちょっと不思議でしたが、やはりそう簡単ではないんですね。
日本語のファイル名を扱うことはそれほど多くはありませんが、日本語対応の bash もどこかで見かけたような気がするので、様子を見てあまり不便であれば試してみようと思います。ありがとうございました。
> 少し試してみた範囲では、とりあえずこれでうまくいくようです。二重引用符 " では駄目で、代わりに ' を使うとうまくいく場合もありました。スレッド一覧
bashの引用符の機能からいくと単引用符'のほうが、うまくいく可能性が高いのですが、それでもうまくいかないこともありえます。日本語文字列のコードのなかに単引用符のコードと一致するものがあれば、おそらくだめでしょう。
> 日本語のファイル名を扱うことはそれほど多くはありませんが、日本語対応の bash もどこかで見かけたような気がするので、様子を見てあまり不便であれば試してみようと思います。
おそらく最も一般的な解決方法は、”ファイル名に日本語を使わない”事だと思います。
> おそらく最も一般的な解決方法は、”ファイル名に日本語を使わない”事だと思います。スレッド一覧
とりあえず、自分で作成する場合には常にそうした方がよさそうですね。自由にファイル名を変更するわけにはいかない場合もあるかもしれませんが、そういう場合には当面今回の方法でしのいでおきます。
いろいろありがとうございました。
参考までに。スレッド一覧
k-squareさん
( http://www.hh.iij4u.or.jp/~k-square/cygwin.html )
の "日本語環境の作成" とかは如何でしょう。
"環境変数の設定" のところ以外は僕は試してないので、
なんとも言えないのですが(すいません無責任で)。