![如何在 OS X 上透過管道輸出 tail -F?](https://rvso.com/image/1312944/%E5%A6%82%E4%BD%95%E5%9C%A8%20OS%20X%20%E4%B8%8A%E9%80%8F%E9%81%8E%E7%AE%A1%E9%81%93%E8%BC%B8%E5%87%BA%20tail%20-F%EF%BC%9F.png)
我最近從 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