STDOUTとSTDINを接続することはどういう意味ですか?

STDOUTとSTDINを接続することはどういう意味ですか?

私は本を​​読んでいますが、次のように書かれています。

各プロセスには、「標準入力」(STDIN)、「標準出力」(STDOUT)、および「標準エラー」(STDERR)の3つの使用可能な通信チャネルがあります。

ほとんどのコマンドはSTDINの入力を受け入れ、その出力をSTDOUTに書き込みます。 STDERRにエラーメッセージを書き込みます。このルールを使用すると、ビルディングブロックのようにコマンドを一緒にリンクして複合パイプラインを作成できます。

シェルは、シンボル<とコマンドの入力または出力をファイルに再ルーティングするためのガイドライン>として解釈します。>>

あるコマンドのSTDOUTを別のコマンドのSTDINに接続するには、通常| パイプというシンボルを使用します。

ps -ef | grep httpd

したがって、基本的にこれは、標準入力はユーザーがファイルに書き込むことを可能にするコマンドであり、標準出力はbashシェルが出力をシェルに書き込むことを可能にするコマンドであり、標準エラーは出力と同じですが、呼び出し時にファイルシステムにエラーが発生したのみ。その後、STDOUTとSTDINを接続する部分を始めましたが、迷子になりました。

ベストアンサー1

標準入力と標準出力はコマンドではありません。

命令を組立ラインがある工場の機械と考えなさい。ほとんどの機械は、入力データ用のコンベアベルトと出力データ用のコンベアベルトで設計されています。これらはそれぞれ標準入力と標準出力です。標準誤差は、スクラップが排出される可能性がある機械の側面の開口部です。

+-------+     +------------------+       +------------------+     +------+
| input |     |    machine A     |       |    machine B     |     |output|
| reser ­­­|=====|<stdin     stdout>|=======|<stdin     stdout>|=====|bucket|
| ‑voir |  →  |      stderr      |   →   |      stderr      |  →  |      |
+-------+     +------------------+       +------------------+     +------+
                      ||                          ||

上の画像は、2台の機械を通過するコンベアベルトを示しています。データは左側の入力リポジトリから取得され、マシンAに供給され、次の出力は(入力用)マシンBに渡され、このマシンBの出力は右側の出力バケットに格納されます。

Unixの用語でこれをこう呼ぶ。管路。たとえ話はパイプに似ています。パイプは機械Aを機械Bに接続する。上記のパイプのシェル構文は次のとおりです。

<input-file.txt commandA | commandB >output-file.txt

これ< リダイレクト記号は、シェルが開始する前にcommandA標準入力をファイルに接続するように指示します。 (コマンド名の前または後ろにリダイレクトを配置できます。)リダイレクトシンボルは、シェルに標準出力を。中央のパイプ(" ")記号は、シェルが起動する前に標準出力を標準入力に接続するように指示します。input-file.txtcommandA>commandBoutput-file.txt|commandAcommandB

コマンドには複数の入力と複数の出力がありますが、コマンドには必ずしも必要ではありません。先日

おすすめ記事