3

Я недавно перешел с Ubuntu на OS X и обнаружил, что команда tail работает по-другому.

На Ubuntu я мог бежать

tail -f xyzzy.log | espeak

(Например, чтобы компьютер читал мне, что происходит на IRC.)

Однако на OS X

tail -F xyzzy.log | say

(который я ожидал, чтобы быть эквивалентным) не дает результата.

Предположительно, это потому, что канал хочет отправить полный вывод tail, чтобы сказать, но так как tail работает постоянно (с -f), он никогда не достигает конца процесса, и поэтому вывод никогда не передается, чтобы сказать. Честно говоря, если я правильно понимаю, это поведение имеет больше смысла, чем поведение, которое я имел в Ubuntu, - оно просто менее полезно.

Так есть ли другой способ достичь того же результата? (И правильны ли мои предположения о том, почему это происходит?)

1 ответ1

5

См. 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .