Bashで大量のデータをパイプする方法は?

Bashで大量のデータをパイプする方法は?

次のコンテンツをクロールするとしましょう。とても大きいファイルですが、一度に複数の部分を見たいです。次のことを行うとしましょう。

$ cat /dev/sda1 | less

JavaやActionScriptなどの言語を使用するプログラマーとして、このコードを見ると、Bashが最初にコマンドを実行する様子を想像していますcat /dev/sda1すべてコマンドをRAMに保存してから、表示されるless非常に大きな「ダミー変数」にアクセスできるコマンドを実行します-

これがBashが何をするのか(つまり、特に悪いファイルがシステムのRAM容量より大きい場合は、別のコマンドを使用する必要があると思いますか?または、大容量データに合わせてパイプラインを最適化する方法はありますか?

ベストアンサー1

いいえ、すべてをメモリにロードするわけではなく、設計には非現実的な方法です。バッファを使用してパイプの左側の出力をバッファリングし、これらのバッファをパイプの右側のコマンド入力に接続します。

マニュアルページには、man 7 pipe次のタイトルのその他のU&L Q&Aだけでなく、すべての詳細が含まれています。パイプバッファはどれくらい大きいですか?

おすすめ記事