我最近从 Ubuntu 转移到 OS X,我发现“tail”命令的行为有所不同。
在 Ubuntu 上我可以运行
tail -f xyzzy.log | espeak
Run Code Online (Sandbox Code Playgroud)
(例如,让计算机读取 IRC 上发生的事情。)
但是在 OS X 上
tail -F xyzzy.log | say
Run Code Online (Sandbox Code Playgroud)
(我希望它是等效的)不会产生任何结果。
大概这是因为管道想要发送 tail 的完整输出 to say,但由于 tail 不断运行(使用 -f),它永远不会到达进程的末尾,因此输出永远不会被传递给 say。老实说,如果我理解正确的话,这种行为比我在 Ubuntu 上的行为更有意义——只是没那么有用。
那么有没有另一种方法可以达到相同的结果?(我关于为什么会发生这种情况的假设是否正确?)