私は比較的経験豊富なLinuxユーザーです。 Unix / Linuxでパイプを使用するのがいつ適切かをよりよく理解したいと思います。
すべての書籍参照によると、パイプは|
コマンドを左から右に接続するために使用されます。ls
、、、などの一般的なコマンドps
と組み合わせて使用すると、以前のコマンドがバッファビューアなどの項目を開かずに出力のみを生成するため、パイプが非常にうまく機能することを簡単に理解できます。echo
less
したがって、 を実行すると、ls | tr -d 'a'
両方ともすべてがうまく動作することがわかります。しかし、実行すると、top -n 1 | grep 'average'
状況が少し変になり始めます。実際、パイプの左側に画面指向コマンドを使用すると、パイプ演算子自体がそのコマンドの出力をリダイレクトしようとし、時にはどの出力リダイレクトを理解するのが難しくなります。この場合、パイプ演算子を誤って使用したためだと思います。
問題は、「いつパイプ演算子を使用する必要がありますか?topやその他の画面指向コマンドなど、特定のコマンドに対してパイプの右側を使用しようとするとどうなりますか?」です。
ありがとうございます。
答え1
パイプ演算子(|
)は2つのコマンド(またはコマンドリスト)を連結します。出力(標準出力)は左から入力(標準入力)右です。最初の出力が2番目の入力と一致することを確認する必要があります。通常エラーチャンネル(標準エラー)はパイプを介してリダイレクトされませんが、パイプ内のすべてのプロセスで端末に直接書き込みます。
の場合、top
対話型セッションで端末に書き込んでいるとします。この-b
フラグを使用して、デプロイメント環境を採用する必要があることを通知できます。これにより、端末の位置決め順序、色、キーボード入力がオフになります。
top -b -n1 | grep average
top - 21:43:52 up 4 days, 9:49, 0 user, load average: 0.00, 0.00, 0.00
ls
端末または他の出力ストリームに直接書き込まれた場合を検出し、その出力を適切に変更するなどの特定のコマンドは、たとえば、複数のファイルを含むディレクトリでおよびをls
比較しますls | cat
。