相変わらず blog からの転載ネタですが(そろそろネタ切れ)
sort (1) の -o オプションの様に元ファイルのオーバライド指定ができる(この動作をスポンジ動作というらしい)コマンド以外で元ファイルを直接オーバーライドする方法。
sample
$ (rm ファイル; command > ファイル) < ファイル
先行する rm (1) は必須である。 rm (1) がない場合は外側のシェルが '<' により O_RDONLY で *open* (2) するファイルと内側のシェルが '>' により O_RDONLY|O_TRUNC で open (2) するファイルの inode が等しいので OS は同一ファイルと見做し、 command の標準入力は O_TRUC により truncate されたファイルとなってしまう。
対して rm (1) がある場合は外側のシェルが O_RDONLY で open (2) するファイルと内側のシェルが O_RDONLY|O_TRUNC で open (2) するファイルの inode が異なるので OS は別なファイルと見なすので O_TRUNC による truncate は影響を受けない。