我最近從 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