버퍼링되지 않은 출력을 지원하는 cat 대안이 있습니까?

버퍼링되지 않은 출력을 지원하는 cat 대안이 있습니까?

cat -v제어 문자(예: )를 표시하면서 EOF(입력은 a에서 입력됨 tail -f) 를 기다리지 않고 stdin을 stdout으로 복사하는 프로그램을 찾고 있습니다 . 저는 GNU|Linux를 가지고 있습니다. cat설치된 것은 플래그를 무시 합니다 -u.

답변1

GNU는 출력이 다음과 같기 때문에 cat무시합니다 .-u항상 버퍼링되지 않음. 따라서 를 사용하여 버퍼링되지 않은 출력을 요청하면 -u얻을 수 있습니다(그러나 요청하지 않은 경우에도 얻을 수 있습니다).

GNU는 tail항상 버퍼링되지 않은 동일한 동작을 가지고 있습니다.

이를 증명하기 위해 하나의 쉘에서 다음을 수행했습니다.

while :; do echo -ne "hello\t"; sleep 1;done > testtail

매초마다 'hello'라는 단어와 탭이 추가됩니다(개행 없음).

내가 한 다른 셸에서는 다음 cat -T과 유사합니다 cat -v. 탭은 ^I로 표시됩니다.

tail -f testtail | cat -T

그것은 나에게 다음을 제공합니다 :

hello^Ihello^Ihello^Ihello^I ...

매초마다 업데이트됩니다.

답변2

BSD cat-u옵션이 출력 버퍼링을 비활성화했습니다. 에서 man cat:

-u      Disable output buffering.

관련 정보