OS X에서 tail -F의 출력을 파이프하는 방법은 무엇입니까?

OS X에서 tail -F의 출력을 파이프하는 방법은 무엇입니까?

최근 Ubuntu에서 OS X로 옮겼는데 'tail' 명령이 다르게 동작하는 것을 발견했습니다.

우분투에서는 실행할 수 있습니다

tail -f xyzzy.log | espeak

(예를 들어 컴퓨터가 IRC에서 무슨 일이 일어나고 있는지 읽어주도록 하려면.)

그러나 OS X에서는

tail -F xyzzy.log | say

(동등할 것으로 예상됨) 결과가 생성되지 않습니다.

아마도 이는 파이프가 tail의 전체 출력을 보내려고 하기 때문일 것입니다. 그러나 tail은 -f를 사용하여 지속적으로 실행되기 때문에 결코 프로세스의 끝에 도달하지 않으므로 출력이 say로 전달되지 않습니다. 솔직히 말해서, 내가 이것을 올바르게 이해하고 있다면 이 동작은 Ubuntu에서 했던 동작보다 더 의미가 있습니다. 단지 덜 유용할 뿐입니다.

그렇다면 동일한 결과를 얻을 수 있는 다른 방법이 있습니까? (그리고 왜 이런 일이 일어나고 있는지에 대한 나의 추측이 맞습니까?)

답변1

보다https://apple.stackexchange.com/questions/9673/how-to-corrightly-pipe-output-into-say-in-terminal이는 암시한다

 tail -f xyzzy.log | while read line ; do echo $line | say ; done

관련 정보