web-dev-qa-db-ja.com

OS Xでtail -Fの出力をパイプする方法は?

最近、UbuntuからOS Xに移行しましたが、「tail」コマンドの動作が異なることがわかりました。

Ubuntuで実行できます

tail -f xyzzy.log | espeak

(たとえば、コンピューターにIRCで何が起こっているかを読み取らせるため。)

ただし、OSXでは

tail -F xyzzy.log | say

(私は同等だと思っていました)結果は得られません。

おそらくこれは、パイプがテールの完全な出力を送信したいためですが、テールは常に(-fを使用して)実行されているため、プロセスの最後に到達することはなく、出力が渡されることはありません。正直なところ、私がこの権利を理解している場合、この動作は、Ubuntuでの動作よりも理にかなっています。

それで、私が同じ結果を達成することができる別の方法はありますか? (そして、なぜこれが正しいのかについての私の推測は正しいですか?)

3
Nick Loewen

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
5
RedGrittyBrick