一般的なケースでの取り扱いは非常に複雑だからです。次の例を考えてください。
プログラムは、ファイルを1行ずつ読み取り、各行を2回出力します。これが2番目のファイルなしで(つまり、同じファイル上で)動作するためには、読み取る前に上書きされるため、プログラムは読み取る行のほとんど(すべて)をバッファリングする必要があります。
単純なプログラムでは、問題を解決するために、通常、セカンダリの一時ファイルを使用します。一時ファイルは、終了すると元のファイルに移動します。これは、たとえばsed -i
(インライン)の動作方法です。
cat < first > temp
うまく動作します。