Bash変態文法最速マスター? 改め bashのプロセス置換
hirasawa@aspire-blue2:~$ echo <(ls) <(ls) /dev/fd/63 /dev/fd/62 hirasawa@aspire-blue2:~$
ってどゆ理屈?
ってしらべてて見つけたサイト一覧
Bash変態文法最速マスター?
https://sites.google.com/a/tatsuo.jp/programming/Home/bash/hentai-bunpou-saisoku-masuta
マサカさんのブログにヒットしたw
http://emasaka.blog65.fc2.com/blog-entry-708.html
で
結局 echo <(ls)はわからんw
(以下追記 2012/12/18)
ごぶさたです > マサかさん
[hirasawa@localhost ~]$ echo <(ls) /dev/fd/63
ここを出発として小学生レベルの試行錯誤
まずは < と ( を離してみた
[hirasawa@localhost ~]$ echo < (ls) bash: 期待してない token `(' のあたりにシンタックスエラー
結果は、シンタックスエラー
つづいて
[hirasawa@localhost ~]$ echo <( ls ) /dev/fd/63 [hirasawa@localhost ~]$ echo <( ls; ) /dev/fd/63
ああ、なるほど、そゆことデスカ。
マサかさんの説明を自分なりにかみくだいてみると、<( command ) はcommandの実行結果がfile(fd)のように見えるってことかな?かな?ってのはなんとなくわかった。
LINUXクイックリファレンス(2nd Edition)とか幾つか本棚から引っ張り出してみたがbash,cshあたりをみても載ってない。
とおもっていたら、
man bash | grep -A 10 -B 10 "<(" とかでみつけられた。(あほでした)
プロセス置換 プロセス置換 (process substitution) がサポートされるのは、 名前付きパイプ (FIFO) または名前付きオープンファイルの /dev/fd メソッドをサポー トしているシステムです これは <(list) または >(list) の形になります。 プロセス list は、その入力や出力が FIFO または /dev/fd 中の何らかのフ ァ イルに接続された状態で実行されます。
プロセス置換か