Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇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 <


876● bashで一部の日本語ファイル名が扱えない[ JL ] 2002 12/29 01:52
一部の日本語ファイル名を bash で正しく扱うことができません。そのような場合、タブで補完しても一部の文字が化けてしまいますが、そのまま実行するとファイル名はきちんと渡るようです。しかし、逆にファイル名を正しく入力するとエラーになったりするので、ちょっと困っています。

(例) 段掛け.TXT
段 --(補完)--> 段浬|け.TXT

まだ Cygwin を使い始めて間もないので、LANG=ja_JP.SJIS くらいしか思いつかないんですが、この設定はあってもなくても変わらないようです。

ファイル名を ls (ls --show-control-chars) で表示する場合には正しく表示されます。何が問題なんでしょうか?

Windows 2000
Cygwin 1.3.18
bash 2.05b-8
スレッド一覧


877● Re:bashで一部の日本語ファイル名が扱えない[ な ] 2002 12/29 20:19
要するに、シェル上で日本語を入力したい、ということでしょうか。
であれば、"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
スレッド一覧


878● Re[2]:bashで一部の日本語ファイル名が扱えない[ JL ] 2002 12/29 21:39
レスありがとうございます。

> 要するに、シェル上で日本語を入力したい、ということでしょうか。

日本語入力ができないわけではなく、一部の日本語ファイル名を正しいファイル名で扱えないということです。
例に挙げた 段掛け.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
スレッド一覧


879● Re[3]:bashで一部の日本語ファイル名が扱えない[ MSだす。 ] 2002 12/29 23:38
問題のあるファイル名をクォートしてみる、というのはどうでしょう。

$ less '段掛け.txt'

または

$ less "段掛け.txt"

見た目には(2バイトの)日本語が扱えるようにみえていてもも実はそうではありません。問題の文字列のなかにパイプ"|"のasciiコードと一致するコードがあるため、bashはパイプラインとして処理しようとしてます。
スレッド一覧


880● Re[4]:bashで一部の日本語ファイル名が扱えない[ MSだす。 ] 2002 12/29 23:59
なお、補完の件は、bashが記号"|"から特別な意味を取り除くために自動的に"\"を入れるために起こるのでしょう(スペースを含むファイル名を補完させるときと同じだと思います)。

これはbashのバグでもなければ、日本語に関する設定ミスでもないでしょう(Cygwinのbashはもともと日本語が扱えない)。

多分日本語をちゃんと扱いたければ、日本語対応のbashを持ってきて、自分でビルドすることになるのではないでしょうか。
スレッド一覧


881● Re[5]:bashで一部の日本語ファイル名が扱えない[ JL ] 2002 12/30 03:46
お世話になります。

> 問題のあるファイル名をクォートしてみる、というのはどうでしょう。

少し試してみた範囲では、とりあえずこれでうまくいくようです。二重引用符 " では駄目で、代わりに ' を使うとうまくいく場合もありました。

> 多分日本語をちゃんと扱いたければ、日本語対応のbashを持ってきて、自分でビルドすることになるのではないでしょうか。

よくわかりました。.inputrc などの設定だけで日本語が扱えるのがちょっと不思議でしたが、やはりそう簡単ではないんですね。
日本語のファイル名を扱うことはそれほど多くはありませんが、日本語対応の bash もどこかで見かけたような気がするので、様子を見てあまり不便であれば試してみようと思います。ありがとうございました。
スレッド一覧


882● Re[6]:bashで一部の日本語ファイル名が扱えない[ MSだす。 ] 2002 12/30 07:31
> 少し試してみた範囲では、とりあえずこれでうまくいくようです。二重引用符 " では駄目で、代わりに ' を使うとうまくいく場合もありました。

bashの引用符の機能からいくと単引用符'のほうが、うまくいく可能性が高いのですが、それでもうまくいかないこともありえます。日本語文字列のコードのなかに単引用符のコードと一致するものがあれば、おそらくだめでしょう。

> 日本語のファイル名を扱うことはそれほど多くはありませんが、日本語対応の bash もどこかで見かけたような気がするので、様子を見てあまり不便であれば試してみようと思います。

おそらく最も一般的な解決方法は、”ファイル名に日本語を使わない”事だと思います。
スレッド一覧


883● Re[7]:bashで一部の日本語ファイル名が扱えない[ JL ] 2002 12/30 08:34
> おそらく最も一般的な解決方法は、”ファイル名に日本語を使わない”事だと思います。

とりあえず、自分で作成する場合には常にそうした方がよさそうですね。自由にファイル名を変更するわけにはいかない場合もあるかもしれませんが、そういう場合には当面今回の方法でしのいでおきます。

いろいろありがとうございました。
スレッド一覧


927● Re[2]:bashで一部の日本語ファイル名が扱えない[ hag ] 2003 01/26 15:57
参考までに。

k-squareさん
( http://www.hh.iij4u.or.jp/~k-square/cygwin.html )
の "日本語環境の作成" とかは如何でしょう。
"環境変数の設定" のところ以外は僕は試してないので、
なんとも言えないのですが(すいません無責任で)。
スレッド一覧

早田のホームページへ
CGIROOM