如何在 OS X 上透過管道輸出 tail -F?

如何在 OS X 上透過管道輸出 tail -F?

我最近從 Ubuntu 遷移到 OS X,我發現「tail」指令的行為有所不同。

在 Ubuntu 上我可以運行

tail -f xyzzy.log | espeak

(例如,讓電腦讀 IRC 上發生的事情。)

然而在 OS X 上

tail -F xyzzy.log | say

(我期望是等價的)不會產生任何結果。

大概這是因為管道想要發送 tail to say 的完整輸出,但由於 tail 不斷運行(使用 -f ),它永遠不會到達進程的末尾,因此輸出永遠不會被傳遞到 say 。老實說,如果我理解正確的話,這種行為比我在 Ubuntu 上的行為更有意義——只是沒那麼有用。

那麼有其他方法可以達到相同的結果嗎? (我對為什麼會發生這種情況的假設正確嗎?)

答案1

https://apple.stackexchange.com/questions/9673/how-to- Correctly-pipe-output-into-say-in-terminal這表明

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

相關內容