명령 대체, 프로세스 대체 및 파이프의 명령이 표준 입력 입력을 허용합니까?

명령 대체, 프로세스 대체 및 파이프의 명령이 표준 입력 입력을 허용합니까?

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의 입력은 표준 입력이고, 두 번째 cat의 출력은 표준 출력에 연결됩니다. 첫 번째 고양이의 출력과 두 번째 고양이의 입력은 함께 파이프로 연결됩니다.

관련 정보