かなり前からそうで、マイナーバグだと思っていたのだが、今のバージョンでも起こるようだ。どこかに報告したほうがよいだろうか?
zshで
# cat =(df)
としてみてほしい。zshが戻ってこなくなる。ずっとRunning状態のまま。不思議なのは、cat =(df -T)
だとOKだったりすることだ。
私はこの現象を説明できる気がしない。
zshを知らない人のためのメモ。=(cmd)
というのはcmdの標準出力をテンポラリファイルに書き込んでファイル名を返します。なので、cat =(cmd)
というのはcmdの標準出力をテンポラリファイルに書き込んで、catの引数にテンポラリファイルの名前を与えます。viとかは標準入力を編集できなかったりするし、複数のコマンドを書けるので、2つのコマンドの出力のdiffをとったりするときにものスゴく便利ですよ!!
テンポラリファイルは当然のように勝手に消えます。偉い。
(追記) 2004-04-12 21:21
そうだ思い出した。=(cmd)
を一番使うのはnetpbmを使うときだ。
pnmcat -lr =(jpegtopnm hoge1.jpg) =(jpegtopnm hoge2.jpg) =(pngtopnm hoge3.png)
とかって。生活の知恵だ。良い子のみんなは覚えておこうね。
(追記) 2004-05-07 14:22
思いついてdfのaliasを解いてcat =(df)
をやったらちゃんと戻ってきた。なんなんだろう。=(cmd)
の中ではaliasが無限ループしてんのかな。私のdfはなんとなく以下のようにaliasしてある。
# alias C='LC_ALL=C LANG=C' df='C df'
zshってbashに対して完全にUpper Compatibleなんでしょうか。僕は現在Red Hat Linux 9 on ThinkPad X23なんで、何も考えずにbash2.05bなんですけど。
そうそう、それと一方的に僕だけがわたなべさんのサイトを知っているってのも卑怯っぽいんで、晒しておきますね(まあアクセスログから、すでにバレていそうなものですが:-)
http://dead.seesaa.net/
あ、どうも。サイトは知ってました。退職の挨拶のメールに書いてあったURLからたどりました。
zshとbashは完全な互換性はないでしょうけど、bashからならほとんど違和感はないと思いますよ。ただ、コマンド行に日本語を入れてくとまだ変な挙動になるので、日本語入りで編集するときはbashを使ってます。—–