コマンド置換、プロセス置換、パイプのコマンドは標準入力入力を受け入れますか?

コマンド置換、プロセス置換、パイプのコマンドは標準入力入力を受け入れますか?

cat以下のコマンド置換、プロセス置換、パイプでstdin入力を許可すると予想しましたが、

  1. stdinを提供した後、なぜ何も出力されないのですか?hello

    $ echo $(cat)
    hello
    
  2. なぜ標準入力を提供できないのですか?

    $ echo <(cat)
    /dev/fd/63
    
  3. cat私のstdinを使ってhellostdoutにcat出力します。 hello

    $ cat | cat
    hello 
    hello
    

答え1

  1. EOF(Ctrl + d)で入力を終了する必要があります。それ以外の場合、cat は終了しません。

  2. echoはfdをエコーし​​て終了し、catの出力記述子を閉じ、それに応答してcatを終了します。

  3. 最初のcatの入力は標準入力であり、2番目のcatの出力は標準出力に接続されています。最初の猫の出力と2番目の猫の入力は一緒にパイプに接続されています。

関連情報