最近、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