LoginSignup
6
5

More than 5 years have passed since last update.

ファイルのオーバーライド

Posted at

相変わらず 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 は影響を受けない。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5