パイプラインからの出力はどのように入力に渡されますか?

パイプラインからの出力はどのように入力に渡されますか?

|私はパイプがどのように機能するか、特に左側のコマンドの出力が右側のコマンドの入力に渡される方法を理解したいと思います。左コマンドの出力が右コマンドに引数として渡されたファイルとして扱われるかどうか、つまり

a | b

そして

a > a_output
b a_output

これはb、ファイル名を入力としてインポートして読み取ることを意味します。しかし、これを行うと、状況は次のようになります。

cat wonderfulfile | tr 'a-z' 'A-Z'

trファイル名を入力として使用しないため、できません。または、左コマンドの出力を右コマンドの標準入力として扱います。つまり、

a

印刷

f
g
h

画面に、うん

a | b

そして

b
f
g
h
^D

おそらく

b f g h

または

b 'f g h'

これは以下の内容と矛盾するようです。

who | less

なぜなら、less(少なくともオプションのどれも)はファイル名を必要としないからです。ご協力ありがとうございます。

ベストアンサー1

これは2番目のオプションです。

a | b

標準出力に出力されるすべてはa標準入力として提供されます。b

あなたが認識する矛盾は一つではありません。lessファイル名を要求せずに標準入力から読み取るオプションはありません(ターミナルでない場合は失敗します)。

おすすめ記事