¿Cómo puedo hacer sonar la campana de audio dentro de un script bash que se ejecuta bajo la pantalla gnu?


19

En una ventana de terminal de konsole fuera de la pantalla ejecutando un shell bash con TERM establecido en konsole-256color si escribo:

echo -n $ '\ a' o
echo -n $ '\ eg' o
./ringbell donde el contenido de ./ringbell es

#! / bin / bash
echo -n $ '\ eg'; echo -n $ '\ a'

Todos dan como resultado que suene la campana de audio configurada. Si entro en una sesión de pantalla (mi .screenrc también establece el término en konsole-256color) solo el segundo de los 3 comandos anteriores (echo -n $ '\ eg') hace que se escuche la campana de audio. ¿Tengo que modificar el script o es un problema con la pantalla?

La versión ubuntu del paquete de pantalla que tengo es 4.1.0 ~ 20120320gitdb59704-9.


1
Consulte también esta pregunta , aunque en realidad prefiero la respuesta de Keith.
Franklin Yu

Respuestas:


25

De memoria, Ctrl-G es el personaje de la campana, así que creo que por eso funcionó el segundo. Pero la pantalla puede ser exigente con los caracteres que acepta, ya que toma Ctrl-A como código de comando.

Prueba esto

#!/bin/sh
# Ring the terminal bell
# echo "\a" # does not work in some shells
tput bel

Encontré esto en rosettacode , espero que te dé algunas opciones


Esto no funciona ni dentro ni fuera de la pantalla. Si uso infocmp, me muestra que la capacidad bel no está definida para TERM konsole-256color, por lo que tiene sentido. Aunque la entrada de terminfo de pantalla define bel a tput -T screen bel tampoco funciona.
Bob

1
Después de más pruebas, parece que tput -T screen bel funciona después de todo. Mi prueba inicial falló porque estaba ejecutando una pantalla dentro de una pantalla y la pantalla externa no tenía vbell apagado. Gracias por el consejo.
Bob

0

Mejor solución: printf '\a'

Esto se debe a que la función printfintegrada en la mayoría de los shells funciona bien, y también hay una versión ejecutable equivalente printfinstalada con sistemas Linux / Mac.

Otras opciones: si tiene maldiciones instaladas, también puede usar: tput bel Si usa una versión reciente de bash, puede usar:echo -n '\a'

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.