5 votos

Cómo canalizar correctamente la salida en "say" en el terminal

Me di cuenta de que el say puede ser muy bueno cuando se combina con otro comando/programa porque puede leerte la salida. He intentado canalizar la salida de leave a say escribiendo lo siguiente en la terminal, pero no funcionó.

leave +5 | say

¿Cuál es la forma correcta de hacerlo?

9voto

Mihai Lazar Puntos 790

Basado en la respuesta de mankoff, esto funciona:

leave +1 2>&1 | while read line ; do echo $line | say ; done

aunque la licencia ya no desaparece en el fondo y le permite seguir escribiendo. De la misma manera:

leave +1 2>&1 | while read line ; do echo $line | say ; done &

hará que se desvanezca en el fondo, pero también hablará un número de identificación de proceso (inofensivo). Así que ninguno es perfecto, pero ambos funcionan.

(Estaba buscando una solución a:

ping google.com | say

que sufre un problema similar, y alguien sugirió lo anterior como solución. No añadí esto como un comentario a la respuesta de mankoff porque no puedo averiguar cómo poner espacios y nuevas líneas en los comentarios).

2voto

365nice Puntos 11

Además, si quieres canalizar un archivo en curso, por ejemplo, la "receta" también funciona con la cola:

tail -f ~/Documents/activity.log | while read line ; do echo $line | say ; done

0voto

James Socol Puntos 146

Creo que simplemente no se puede utilizar leave para ello, en lugar de utilizar sleep con la cantidad correcta de segundos (ponlo en un breve script para convertir los segundos en minutos, horas):

sleep 60 && say -v Vicki 'Time to leave!' &

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X