ファイルとして出力し、ファイルを入力として使用する

ファイルとして出力し、ファイルを入力として使用する

短く書く方法はありますか?デフォルトでは、コマンドをファイルに出力し、そのファイルを次のコマンドの入力として使用します。後で見るためにファイルをアーカイブしたいと思います。

cmd1 > verylong.txt; cmd2 < verylong.txt

私もできることを知っています

cmd1 | tee verylong.txt | cmd2

しかし、「verylong.txt」は巨大なファイルになると予想しているので、パイプを使用するとファイル全体がメモリに保存されるため、効率が悪くなると思います。一方、ファイル入力を使用すると、一度に1行ずつ処理されます。 (それとも私の推測は間違っていますか?)

こんなエレガントなことができればとても良いと思います。

cmd1 > verylong.txt > cmd2

ベストアンサー1

私が知っている限り、cmd1 | tee verylong.txt | cmd2ファイル全体はメモリに保存されません。実際にcmd2入力を消費する前に待機しすぎると、cmd1呼び出しをブロックしwritecmd2再読み込みを開始したときにのみロックを解除できます。

その理由は、パイプに基本的にバッファがあるからです。特定の合理的なサイズに制限

もちろん、コマンドが出力を書き込む前に入力全体を読み取る必要がある場合(または同様の場合)、状況はcmd2異なる場合がありますsort。この場合、ファイル全体の内容はcmd2メモリに保持されますが、これはコマンドへの入力としてパイプまたは中間ファイルが使用されているかどうかには関係ありません。

おすすめ記事