이 최소한의 예를 들어
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; )
이는 출력 LINE 1
하고 1 초 후, 출력은 LINE 2
, 예상대로 .
이것을 파이프하면 grep LINE
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | grep LINE
동작은 예상 한대로 이전 경우와 동일 합니다.
다른 방법으로 파이프를 cat
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | cat
예상대로 동작이 다시 동일 합니다.
그러나을 파이프 grep LINE
한 다음 cat
,
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | grep LINE | cat
이 일초 통과 할 때까지 출력이없고, 두 라인은 즉시 출력에 나타 나는 기대하지 않았다 .
왜 이런 일이 발생하며 마지막 세 버전을 처음 세 명령과 같은 방식으로 작동하게 할 수 있습니까?
cat
간단히 읽고 stdin
출력합니다 stdout
. 물론, 내가 대신 복잡한 물건의 많은이 질문에 내놓았다 echo
하고 cat
, 그러나이 최대 훨씬 간단 예제와 함께 문제 쇼 이후, 관련이없는 것으로 밝혀졌다.
cat
파일을 연결합니다. 배관으로 무엇을하려고cat
합니까?