[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00022] Re: file name completion problems



 しらいです。

In Message-Id <86r8hmbhaj.wl@archon.local.idaemons.org>
        "Akinori MUSHA" <knu@iDaemons.org>さんwrites:
> > 共通部分「a」を補完した結果ですね。「ab」が存在しなければ、
> > 多分「a\ "a b"」と補完された筈です。
> 
>  そうですね、それは分かっていました。手元の tcsh, bash, zsh
> では補完できるので、 FDclone でもできるといいと思いました。

 補完出来るか否かだけなら、filename の先頭を探す際に「\」を
考慮していなかった点を改めるだけで済むのですが、その補完結果
を評価してちゃんとその filename を指し示すようにするための方
策が複数あるので、その辺りの仕様を詰める作業が悩ましいところ
ですね。
 事実、bash や tcsh でもこの辺りの詳細は文書化されておらず、
version によって微妙に挙動が異なったりします。誰しも最適解は
見つけられずにいるのではないでしょうかね。


> >  bash ではそうなっていませんが、FDclone ではそういう仕様に
> > しました。
> 
>  ずいぶん古い bash をお使いのようですね。bash 1.x でしょうか。
> 今では 2.x を reference とした方がいいような気もします。だいぶ
> 太っているので機能的な追随までは望みませんが。

 2.01.1 に日本語 patch をあてたものを使っています。OS 標準
のものだと 1.14.7 のようですね。RedHat 6.1 なので。
 主だったところでは bash の仕様を踏襲してはいますが、無意味
に追随している訳ではありませんので、「"」で括るという仕様は
bash のものではなくて FDclone のものです。
 FDclone に補完機能を搭載した頃の bash がそういう仕様だった
ので、それを踏襲したまま変えていないだけですが、この仕様でも
特に支障がないため、bash 側の仕様が変わった今でもそのままに
してあります。


> 	「"a\ 」->「"a b" 」
> 	「'a\ 」->「'a b' 」
> 
> となります。ちなみに zsh や tcsh では最後の二つは補完されません
> でした。内部で \ の展開(除去)を行っていないのでしょう。

 zsh は知りませんが、tcsh では「"a\ a"」という補完が出来る
ようですね。勿論「a\ a」という filename があった場合の話です
が。
 bash の仕様はどう考えても妥当性を見い出せないので、ここで
敢えて bash に合わせる必要はないと思います。

# fdsh には bash 仕様に合わせる compile option が幾つかあ
#りますが、その中にも bug じゃないかと思われる仕様も散見さ
#れます。どれも些細なものですが。
# bash は新機能の追加に懸命な余り、守りが甘くなってしまっ
#ている印象を受けますね。


> >  bash に合わせて三番目の仕様にしてみました。補完される対象
> > の filename が meta character を含み「"」で括ってやる必要が
> > ある時のみ、「~」を展開します。
> 
>  これで望みの結果が得られます。

 そんなに困ってました?余り一般的な状況だとも思えませんけど。

                                               しらい たかし