명령은 호출기를 호출할 시기를 어떻게 결정합니까?

명령은 호출기를 호출할 시기를 어떻게 결정합니까?

예를 들어 많은 양의 출력을 생성하는 일부 셸 명령은 git diff출력이 너무 길면 교묘하게 호출기를 던지는 것처럼 보이지만 출력이 매우 작은 경우에는 그렇게 하지 않습니다.

어떻게 작동하나요? 각 개별 프로그램에는 출력을 측정하고 호출기를 호출하는 자체 코드가 있습니까? 출력이 너무 길다는 것을 인식하면 이미 stdout에 무언가를 인쇄하고 반환할 수 없습니까? 아니면 명시적으로 프로그래밍되지 않은 경우에도 모든 프로그램에서 활용할 수 있는 일반적인 셸 기능입니까?

분명히 하자면, foo | less물론 호출기를 의무적으로 사용해야 하며, foo | cat호출기를 의무적으로 사용하지 않는 것은 없을 것입니다. foo임의의 동작을 수행 할 수 있는 방법이 있는지 궁금합니다 . 그리고 말 그대로 구현 (아마도 bash의 2~3줄로 수행될 수 있음)과 실행을 foo | pager_if_needed의미하는 것은 아닙니다. 이는 , 그리고 다른 모든 것에 적용되지 않기 때문입니다 .pager_if_neededalias foo="foo | pager_if_needed"barbaz

답변1

쉘은 호출기를 호출할 시기를 어떻게 결정합니까?

그러나 실제로는 그렇지 않습니다.

각 개별 프로그램에는 출력을 측정하고 호출기를 호출하는 자체 코드가 있습니까?

예.

출력이 너무 길다는 것을 인식하면 이미 stdout에 무언가를 인쇄하고 반환할 수 없습니까?

간단합니다. 출력물 인쇄를 시작하세요.뒤쪽에너무 긴지 확인하세요.

관련 정보