Как передать вывод tail -F на OS X?

Как передать вывод tail -F на OS X?

Недавно я перешел с 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-in-say-in-terminalчто предполагает

 tail -f xyzzy.log | while read line ; do echo $line | say ; done

Связанный контент