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

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

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

echo -n $'\a'

o

echo -n $'\eg'

o

./ringbell.sh

donde el contenido de ringbell.shes

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

Todos ellos provocan que suene la campana de audio configurada. Si entro en una sesión de pantalla (mi ~/.screenrctambién configura TERM=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 screen?

Yo uso screen 4.1.0~20120320gitdb59704-9desde Ubuntu.

Respuesta1

De memoria, Ctrl-G es el carácter de 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 encódigo rosetta, con suerte te dará algunas opciones.

Respuesta2

Mejor solución:printf '\a'

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

Otras opciones: Si tienes curses instalados, también puedes usar: tput bel Si usas una versión reciente de bash, entonces puedes usar:echo -e '\a'

información relacionada