如何在 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 的完整输出发送到 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

相关内容