Comment puis-je faire sonner la cloche audio dans un script bash exécuté sous l'écran gnu?

19

Dans une fenêtre de terminal konsole en dehors de l'écran exécutant un shell bash avec TERM défini sur konsole-256color si je tape:

echo -n $ '\ a' ou
echo -n $ '\ eg' ou
./ringbell où le contenu de ./ringbell est

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

Ils entraînent tous la sonnerie audio configurée. Si j'entre dans une session d'écran (mon .screenrc définit également le terme sur konsole-256color), seule la seconde des 3 commandes ci-dessus (echo -n $ '\ eg') fait entendre la cloche audio. Dois-je modifier le script ou est-ce un problème d'écran?

La version Ubuntu du package d'écran que j'ai est 4.1.0 ~ 20120320gitdb59704-9.

Bob
la source
1
Référez-vous également à cette question , bien que je préfère en fait la réponse de Keith.
Franklin Yu

Réponses:

25

De mémoire, Ctrl-G est le caractère de cloche, donc je pense que c'est pourquoi le second a fonctionné. Mais l'écran peut être difficile sur les caractères qu'il accepte car il prend Ctrl-A comme code de commande.

Essaye ça

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

J'ai trouvé cela sur rosettacode , j'espère que cela vous donnera quelques options

Keith Muggleton
la source
Cela ne fonctionne ni à l'intérieur ni à l'extérieur de l'écran. Si j'utilise infocmp, cela me montre que la capacité bel n'est pas définie pour TERM konsole-256color, donc cela a du sens. Bien que l'entrée terminfo de l'écran définisse bel, un bel écran tput -T ne fonctionne pas non plus.
Bob
1
Après plus de tests, il semble que tput -T screen bel fonctionne après tout. Mon test initial a échoué car j'exécutais un écran dans un écran et l'écran extérieur n'avait pas de sonnerie. Merci pour l'astuce.
Bob
0

Meilleure solution: printf '\a'

C'est parce que la printfplupart des shells intégrés fonctionnent bien, et il existe également une version exécutable équivalente printfinstallée avec les systèmes Linux / Mac.

Autres options: Si vous avez installé des curses, vous pouvez également utiliser: tput bel Si vous utilisez une version récente de bash, vous pouvez utiliser:echo -n '\a'

Pi Marillion
la source