He comenzado un largo proceso a través de una terminal. ¿Es posible hacer que el terminal de Ubuntu emita un sonido una vez que se completa el proceso? De esta manera, no necesito seguir revisando, sino que se me notificará a través de un sonido.
command-line
notification
Goaler444
fuente
fuente

Respuestas:
Hay al menos tres formas de línea de comando para lograr esto colocando el comando de adaptación al final de su script que puede invocar para su largo proceso:
La forma "clásica" de reproducir un sonido es usar un pitido a
través de los altavoces de la PC. Sin embargo, esto no funcionará en todos los casos (por ejemplo, en mi sistema, los altavoces de la PC están completamente deshabilitados) y deberá eliminar pscpkr
/etc/modprobe/blacklist.confy cargar elpcspkrmódulo del kernel.También podemos reproducir cualquier archivo de sonido en formato wav usando aplay (instalado por defecto):
Otra forma es usar la interfaz de línea de comandos de pulseaudio para permitir la reproducción de cualquier archivo de sonido que su sistema (en
libsndfile) reconozca en la salida de audio predeterminada:Podemos usar archivos de sonido predeterminados
/usr/share/sounds/o cualquier otro archivo de sonido que tengamos en una ubicación diferente.Solo por haberlo mencionado, hay otra buena manera de lograr esto haciendo un mal uso de espeak , que se instala de manera predeterminada en Ubuntu <= 12.04. Vea, o más bien escuche el siguiente ejemplo:
En Ubuntu> = 12.10, Orca usa speak-dispatcher. Entonces podemos instalar espeak
, o alternativamente usar
spd-say "Text".fuente
spd-say.spd-sayutilidad está instalada por defecto y funciona en mi sistema.paplay /usr/share/sounds/freedesktop/stereo/complete.ogayo suelo
Reemplace "make" con cualquier comando de larga duración que utilice.
fuente
spd-say 'get back to work'. Y también viene preinstalado: releases.ubuntu.com/trusty/… , para personas ciegas, supongo. Y-wpara los bucles infinitos:while true; do spd-say -w 'get back to work you lazy bum'; done.TL; DR
Para reproducir un sonido después de que termine el comando:
(donde
sn3está el número de sonido 3) pon esto en.bashrc:O lea a continuación para obtener más opciones:
Sonido diferente en caso de error y éxito.
Esto es lo que uso exactamente para lo que pides, con una diferencia: no solo reproduce un sonido cuando finaliza el comando, sino que reproduce un sonido diferente en caso de éxito y error. (Pero puede cambiarlo si no le gusta).
Tengo una función Bash llamada
oksque uso al final de los comandos de ejecución larga:Reproduce un sonido y muestra OK o ERROR (con código de error) cuando finaliza el comando anterior.
Código fuente
Aquí está esa función con dos ayudantes:
Instalación
Puede ponerlo en su ~ / .bashrc directamente o ponerlo en otro archivo y luego poner esta línea en su ~ / .bashrc:
Configuración
Cambio
sound_okysound_erroralgunos otros sonidos.Puede experimentar con
soundvssoundbgy cambiarsound_okysound_errorusar secuencias de muchos sonidos que le gusten para obtener el resultado que desea.Buenos sonidos
Para encontrar algunos buenos sonidos en su sistema, puede probar:
Aquí hay algunos sonidos que uso a menudo que están disponibles en Ubuntu de manera predeterminada que son buenos para las notificaciones: sn1 es ruidoso y agradable, sn2 es muy fuerte y sigue siendo bastante agradable, sn3 es extremadamente ruidoso y no tan agradable:
Nuevamente, puede cambiar
soundasoundbgsi desea reproducirlo en segundo plano sin esperar a que termine el sonido (por ejemplo, para no ralentizar sus guiones cuando reproduce muchos sonidos).Versión silenciosa
Y por si acaso, aquí está la misma función
okspero sin sonidos:Uso
Así es como lo usas:
Ejemplo con éxito:
ejemplo con error:
Por supuesto, en la práctica, los comandos son más como:
pero lo usé
lspara que pudieras ver rápidamente cómo funciona.Puede usar en
oklugar deokspara una versión silenciosa.O puede usar, por ejemplo:
para imprimir OK / ERROR pero siempre reproducir el mismo sonido, etc.
Actualizar
Puse esas funciones en GitHub, mira:
La fuente se puede descargar desde:
Actualización 2
Agregué una
soundloopfunción al repositorio anterior. Reproduce un sonido y puede ser interrumpido por Ctrl + C (a diferencia de un simplewhile true; do paplay file.ogg; doneque uno esperaría que funcione pero no funciona), como lo ha pedido Shadi en los comentarios. Se implementa como:Si cree que es complicado, dirija sus quejas a los desarrolladores de PulseAudio.
fuente
while true; do paplay ...; donepara que el sonido se repita hasta que golpeeCtrl+C, pero cuando lo hago, no se rompe. No puedo encontrar ninguna opción especialman paplaypara descubrir cómo hacer que esto funcione. ¿Algunas ideas?De acuerdo con esto, el
\apersonaje escapa al código ASCII 7, que es el pitido de la computadora.Así que
echo $'\a'funciona para hacer un pitido en mi máquina local, incluso cuando se ejecuta en un bash shell que se ejecuta en una computadora a la que estoy conectado a través de una interfaz de terminal como PuTTY.fuente
Ampliando la respuesta de Michael Curries, podría hacer que Bash imprima un carácter
BEL(\a) a través dePROMPT_COMMAND:Si se configura de
PROMPT_COMMANDesa manera, Bash se ejecutaráprintf \\aal final de cada comando, lo que hará que el terminal reproduzca un sonido (aunque, como señala muru, simplemente activando la redistribución del indicador hará que el terminal reproduzca el sonido, es decir, se reproducirá el sonido cada vez que se dibuja una nueva solicitud, por ejemplo, incluso cuando se está presionando ENTER).Esta es una función de terminal, por lo que podría no funcionar en todos los terminales; por ejemplo no funciona en la consola (pero estoy seguro de que funciona en
gnome-terminalyxterm).fuente
El comando
hace un ruido La solución más simple pero molesta. :-)
Consulte el manual de
speaker-test(1)opciones para configurar la señal de ruido.fuente
Esto no es lo que pediste, pero puedes usar una notificación para eso.
Reemplace el comando dado en las otras respuestas con
fuente
Ejemplo 1:
echo alik && (say done ; echo done) || (echo error ; say error)dará como resultado una palabra hecha.Ejemplo 2:
non_existing_command_error && (say done ; echo done) || (echo error ; say error)dará como resultado una palabra de error.* Necesidades
gnustep-gui-runtime-Salud.
fuente
Creé un script simple y casi nativo que reproduce sonido y muestra una notificación con un mensaje y hora dados para Ubuntu ( Gist ):
¿Cómo utilizar?
Primera ejecución - Configuración:
Cree un nuevo directorio en su hogar y llámelo
notiDescargue noti.sh y extráigalo al
notidirectorio anterior .Abra la Terminal y cambie el directorio a
notiHaga que noti.sh sea ejecutable emitiendo:
Ejecute una prueba como esta:
Ejemplos
Para notificar el final del proceso (ejemplo)
fuente
onda sinusoidal ffmpeg
Para los minimalistas, puedes jugar un seno de 1000 Hz durante 5 segundos:
o para siempre hasta que hagas Ctrl-C:
Más información en: https://stackoverflow.com/questions/5109038/linux-sine-wave-audio-generator/57610684#57610684
Probado en Ubuntu 18.04, ffmpeg 3.4.6.
fuente