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.conf
y cargar elpcspkr
mó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-say
utilidad está instalada por defecto y funciona en mi sistema.paplay /usr/share/sounds/freedesktop/stereo/complete.oga
yo 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-w
para 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
sn3
está 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
oks
que 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_ok
ysound_error
algunos otros sonidos.Puede experimentar con
sound
vssoundbg
y cambiarsound_ok
ysound_error
usar 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
sound
asoundbg
si 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
oks
pero 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é
ls
para que pudieras ver rápidamente cómo funciona.Puede usar en
ok
lugar deoks
para 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
soundloop
función al repositorio anterior. Reproduce un sonido y puede ser interrumpido por Ctrl + C (a diferencia de un simplewhile true; do paplay file.ogg; done
que 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 ...; done
para que el sonido se repita hasta que golpeeCtrl+C
, pero cuando lo hago, no se rompe. No puedo encontrar ninguna opción especialman paplay
para descubrir cómo hacer que esto funcione. ¿Algunas ideas?De acuerdo con esto, el
\a
personaje 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_COMMAND
esa manera, Bash se ejecutaráprintf \\a
al 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-terminal
yxterm
).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
noti
Descargue noti.sh y extráigalo al
noti
directorio anterior .Abra la Terminal y cambie el directorio a
noti
Haga 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