6
Help us understand the problem. What are the problem?

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 は影響を受けない。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
6
Help us understand the problem. What are the problem?