シェルはリダイレクト文字や正規表現をコマンドラインから解釈すると同様にパイプ
記号 |
も識別します。シェルはパイプ記号 |
をコマンドラインに
見つけるとその
前にあるコマンドの標準出力をその後ろにあるコマンドの標準入力に結合させます。
そしてシェルは両方のコマンドを同時に実行させます。次のコマンドラインを例にして
考えてみましょう。
まず、シェルはコマンドラインを解析してwhoとwcの間にあるパイプ記号$ who | wc -l
|
を
見つけます。
次にシェルは最初のコマンドwhoの標準出力をそれに続くコマンドwcの標準入力
と結合させて2つのコマンドの実行を開始します。コマンドwhoはログインしている
ユーザのリストを標準出力に書き出します。whoの標準出力はwcの標準入力につながれ
ていますから端末にwhoの出力は表示されません。whoと同時に起動されたwcはファイル
名の指定がないので標準入力からの行数を数えますので、whoの処理結果の行数を数え
ることになります。
リダイレクトの項目でも触れたので繰り返しになりますが、シェルにより起動された
各々のコマンドは自分の標準入出力が何に割り当てられているかは知りません。