Como posso tocar a campainha de áudio em um script bash em execução na tela gnu?

Como posso tocar a campainha de áudio em um script bash em execução na tela gnu?

Em uma janela de terminal do konsole fora da tela, executando um shell bash com TERM definido como konsole-256color se eu digitar:

echo -n $'\a'

ou

echo -n $'\eg'

ou

./ringbell.sh

onde o conteúdo de ringbell.shé

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

Todos eles resultam no disparo da campainha de áudio configurada. Se eu entrar em uma sessão de tela (meu ~/.screenrctambém define TERM=konsole-256color), apenas o segundo dos 3 comandos acima ( echo -n $'\eg') fará com que a campainha de áudio seja ouvida. Preciso modificar o script ou isso é um problema screen?

Eu uso screen 4.1.0~20120320gitdb59704-9do Ubuntu.

Responder1

De memória, Ctrl-G é o caractere do sino, então acho que é por isso que o segundo funcionou. Mas screen pode ser exigente quanto aos caracteres que aceita, pois usa Ctrl-A como código de comando.

Experimente isso

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

Eu encontrei isso emcódigo roseta, espero que isso lhe dê algumas opções

Responder2

Melhor solução:printf '\a'

Isso ocorre porque o printfintegrado na maioria dos shells funciona bem e também há uma versão executável equivalente printfinstalada em sistemas Linux/Mac.

Outras opções: Se você tiver o Curses instalado, também poderá usar: tput bel Se usar uma versão recente do bash, poderá usar:echo -e '\a'

informação relacionada