Usando bash, ¿cómo puedo hacer que el altavoz de la PC emita un pitido?
Algo así echo 'beepsound' > /dev/pcspkr
sería bueno.
command-line
Stefan
fuente
fuente
Respuestas:
Usualmente uso la pequeña utilidad
beep
instalada en muchos sistemas. Este comando intentará diferentes enfoques para crear un sonido de sistema.Hay 3 formas de crear un sonido desde la página de
beep
manual:El método tradicional de producir un pitido en un script de shell es escribir un carácter
ASCII BEL
(\007
) en la salida estándar, mediante un comando de shell comoEsto solo funciona si la salida estándar del shell de llamada se dirige actualmente a un dispositivo terminal de algún tipo; de lo contrario, el pitido no producirá ningún sonido e incluso podría causar daños no deseados en cualquier archivo al que se dirija la salida.
Hay otras formas de provocar un pitido. Un método un poco más confiable es abrir
/dev/tty
y enviar su personaje BEL allí. Esto es robusto contra la redirección de E / S, pero aún falla en el caso en que el script de shell que desea generar un pitido no tiene un terminal de control, por ejemplo, porque se ejecuta desde un administrador de ventanas X.Un tercer enfoque es conectarse a su pantalla X y enviarle un comando de campana. Esto no depende de un dispositivo terminal Unix, pero sí (por supuesto) requiere una pantalla X.
beep
simplemente intentará estos 3 métodos.fuente
beep
comando es: johnath.com/beep En Ubuntu / Debian, puede instalarlo conapt-get install beep
.pcspkr
módulo, cargue elsnd-pcsp
, y ahora tiene una tarjeta de sonido alsa que utiliza trucos de la vieja escuela para transmitir sonido digital a su altavoz interno. Da resultados malos con los altavoces internos piezoeléctricos, pero en los altavoces internos clásicos, la calidad es bastante buena para lo que es. De esta manera, puede ser mucho más creativo para sus pitidos;)pcspkr
ysnd-pcsp
son módulos, no paquetes. usemodprobe
/modprobe -r
/lsmod
para manipularlos. Para su información, están en ellinux-image-something
paquete, que con suerte ya está instalado (de lo contrario, no tendría un kernel de Linux).modprobe snd-pcsp
pitido ahora funciona!Simplemente haciendo eco
\a
o\07
funciona para mí.Esto probablemente requerirá
pcspkr
que se cargue el módulo del núcleo. Solo he probado esto en RHEL, así que YMMV.ACTUALIZAR
Como Warren señaló en los comentarios, esto puede no funcionar cuando se inicia sesión de forma remota a través de SSH. Una solución rápida sería redirigir la salida a cualquiera de los dispositivos TTY (idealmente uno que no se use). P.ej:
fuente
sudo modprobe pcspkr
fue suficiente para habilitar pitidos en el VT, ya sea a través deprintf "\a"
obeep
utilidad.Ubuntu 16.04.1 LTS
NOTA: Esta solución emite pitidos desde los altavoces , no desde la placa base .
ALSA viene con prueba de altavoz , un generador de tono de prueba de altavoz de línea de comandos, que se puede utilizar para generar un pitido:
Vea este hilo del foro de Arch Linux .
Sin embargo, la duración del pitido será arbitraria, pero se puede controlar de la siguiente manera:
Podemos ir un paso más allá y emitir un pitido con esta función:
que se llama con argumentos de frecuencia y duración:
Con esto en mente, es posible crear música simple con
speaker-test
. Ver este script de shell .fuente
timeout ${2} speaker-test --frequency ${1} --test sine
speaker-test -t sine -f 1000 -l 1 & sleep .2 && kill -9 $!
hace lo mismo. De todos modos, el método de @ user569825 es más agradable.porque terminfo define
bel
comofuente
Para usar la tarjeta de sonido si
sox
está instalada y el altavoz de la PC si no está:sox
está disponible para la mayoría de las distribuciones.fuente
then
bloque dentrowatch
para notificarme una vez que se cumplió una determinada condición. Incluso me permite mantener mis auriculares puestos. Esto fue muy útil para mí.sudo -u USER play...
play
utiliza pulseaudio, como usuario. Supongo que depende de la configuración del sistema.Algunas distribuciones tienen utilidades de línea de comandos para lograr esto. Tal vez podría decirnos en qué distribución se encuentra o buscar (por ejemplo,
emerge -s beep
en gentoo).Yendo más allá de las utilidades "disponibles", también puede hacer un script de Perl que emita un pitido, todo lo que necesita hacer es incluir:
Si terminas recibiendo un "pitido", prueba lo siguiente:
fuente
echo -e "\007"
funcionaría en bash en lugar deprint "\007
en perl?printf '\007'
lugar deecho
." Beep solo funciona si su PC tiene un" altavoz ". Muchas computadoras portátiles modernas / dispositivos pequeños no tienen uno". - Tredegar .
Intenta reproducir un sonido en su lugar:
Funcionó para mí, cuando todo lo demás falló.
Referencias
fuente
Tratar
La desventaja es que esto solo funcionará cuando el dispositivo de salida sea un terminal, por lo que puede no funcionar dentro de un trabajo cron, por ejemplo. (Pero si usted es root, es posible que pueda redirigir
/dev/console
para un pitido inmediato).fuente
En Linux, herramientas como
beep
pueden usar un ioctl en el dispositivo de la consola para emitir un sonido dado. Para ser más específico,beep
usará elKIOCSOUND
ioctl, pero también hay unKDMKTONE
ioctl que puede usarse para generar sonido.Según tengo entendido, el primero emite un sonido que dura hasta que se cancela explícitamente, mientras que el segundo crea un pitido de duración predeterminada. Consulte la
console_ioctl
página del manual (4) para obtener más detalles.Entonces, si no está satisfecho con lo que
beep
hace, podría escribir algunas líneas de código para acceder a estos ioctls directamente. Suponiendo que tiene acceso completo a/dev/console
, que bien podría requerir privilegios de root.fuente
En una terminal, presione Ctrl+ Gy luegoEnter
fuente