좋아, 이것은 단지 나의 호기심과 비슷한 질문을하는 다른 사람을 만족시키기위한 것입니다. "나는 모르는 것을 모른다"는 부분적으로는 무지와 오랜 질문을 품어주십시오.리눅스 파이핑 동작
제 1
일부 임의의 콘텐츠를 갖는 fileToFollow.txt 가정한다.
row1
row2
row3
tail fileToFollow.txt | cat
을 실행하면 파일의 내용이 예상대로 생성됩니다.
고양이 C 프로그램은 것이라면 내가 하나 개의 프로그램의 출력을 얻기 때문에, 예를 들어 다른 (의 입력으로 공급으로 배관 상상 fileToFollow.txt
에 기록되어 아무것도하고 출력하기에 계속됩니다 tail -f fileToFollow.txt | cat
실행 main() 인수를 통해 해당 입력에 액세스 할 수 있어야합니다.
질문 1 : 여기에 무슨 일이 일어나고 있는지, 꼬리가 출력 될 때마다 호출되는 고양이입니까? 분명 고양이가 여기 자체가 어쨌든 터미널에 출력을하지 그렙으로 필요하지 않습니다
tail -f fileToFollow.txt | grep "whatever" | cat
: 2
섹션 나는 다음과 같은 설정 혼합으로 grep
를 던져하기로 결정했다. 그러나 파이핑이 하나의 프로그램에서 다른 프로그램으로 입력된다는 아이디어가 주어지면 나는 그것이 가능하다고 가정하고있었습니다. 그러나이 경우에는 터 L 널에 출력이 표시되지 않습니다.
물론 다음은 잘 작동 :
tail -f fileToFollow.txt | grep "whatever"
내가 가진 내가 배관이 실제로 작동하는 방법과 같은 조금 혼란 스러워요 직감 왜 내가 그들을 기대하는 것처럼 행동하지 않는 제시하는 경우 .
모든 종류의 깨우침을 환영합니다. 시간을내어 주셔서 감사합니다.
'| '의 적절한 사용을 상상하기가 힘듭니다. 고양이. 어떤 예에서도 확실히 필요하지 않습니다. –
그것뿐 아니라 | 고양이와 그 기능에 대해별로.이것은 이론적으로 (이론적으로 설명 된 모든 것이 실제로 설명대로 작동한다면) 그것이 작동하지 않는 이유에 대한 나의 이해를 향상시키는 것을 목표로하는 일반적인 질문이다. 그것의 탐구는 실용적이지 않습니다. –
정확하게 작동하지 않는 것은 완전히 불분명합니다. 다르게 행동 할 것으로 예상되는 명령은 무엇입니까? 그것은 무엇을합니까? 무엇을 기대합니까? 이 모든 것을 철자해야합니다. –