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.