Como posso tocar a campainha de áudio em um script bash executado na tela gnu?


19

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

eco -n $ '\ a' ou
eco -n $ '\ eg' ou
./ringbell onde o conteúdo de ./ringbell é

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

Todos eles resultam na campainha de áudio configurada. Se eu entrar em uma sessão de tela (meu .screenrc também definirá o termo como konsole-256color), apenas o segundo dos 3 comandos acima (eco -n $ '\ eg') resultará na audição da campainha de áudio. Preciso modificar o script ou isso é um problema de tela?

A versão ubuntu do pacote de tela que tenho é 4.1.0 ~ 20120320gitdb59704-9.


1
Consulte também esta pergunta , embora eu prefira a resposta de Keith.
Franklin Yu

Respostas:


25

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

Tente isto

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

Achei isso no rosettacode , espero que ele dê algumas opções


Isso não funciona dentro ou fora da tela. Se eu usar o infocmp, isso mostra que o recurso bel não está definido para o TERM konsole-256color, portanto, isso faz sentido. Embora a entrada terminfo da tela defina bel, uma tela de tput -T também não funciona.
Bob

1
Depois de mais testes, parece que o tput -T screen bel funciona, afinal. Meu teste inicial falhou porque eu estava executando uma tela dentro de uma tela e a tela externa não tinha o vbell desativado. Obrigado pela dica.
Bob

0

Melhor solução: printf '\a'

Isso printfocorre porque o embutido na maioria dos shells funciona bem, e há também uma versão executável equivalente printfinstalada nos sistemas Linux / Mac.

Outras opções: Se você possui maldições instaladas, também pode usar: tput bel Se você usa uma versão recente do bash, pode usar:echo -n '\a'

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.