Wie kann ich die Audio-Klingel innerhalb eines Bash-Skripts klingeln, das unter GNU-Bildschirm ausgeführt wird?

10798
Bob

In einem Konsole-Terminal-Fenster außerhalb des Bildschirms, das eine Bash-Shell mit TERM auf konsole-256color ausführt, wenn ich Folgendes eingebe:

echo -n $ '\ a' oder
echo -n $ '\ eg' oder
./ringbell wo der Inhalt von ./ringbell ist

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

Sie alle führen dazu, dass die konfigurierte Audioklingel erlischt. Wenn ich eine Bildschirmsitzung eingebe (mein .screenrc setzt auch Begriff auf konsole-256color ein), führt nur der zweite der obigen 3 Befehle (echo -n $ '\ eg') dazu, dass die Klingel ertönt. Muss ich das Skript ändern oder ist dies ein Problem mit dem Bildschirm?

Die Ubuntu-Version des Bildschirmpakets, das ich habe, ist 4.1.0 ~ 20120320gitdb59704-9.

12
Siehe auch [diese Frage] (http://unix.stackexchange.com/q/1974), obwohl ich eigentlich Keith's Antwort vorziehen möchte. Franklin Yu vor 7 Jahren 0

1 Antwort auf die Frage

13
Keith Muggleton

Aus dem Gedächtnis ist Ctrl-G die Glocke, deshalb denke ich, dass der zweite funktionierte. Der Bildschirm kann jedoch wählerisch sein, welche Zeichen er akzeptiert, da er Strg-A als Befehlscode verwendet.

Versuche dies

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

Ich habe dies auf Rosettacode gefunden, hoffentlich gibt es einige Optionen

Dies funktioniert weder innerhalb noch außerhalb des Bildschirms. Wenn ich infocmp verwende, zeigt es mir, dass die bel-Fähigkeit nicht für TERM konsole-256color definiert ist. Dies macht also Sinn. Obwohl der Bildschirmterminfo-Eintrag definiert, funktioniert ein Tput-Screen auch nicht. Bob vor 9 Jahren 0
Nach mehr Tests scheint es, dass Tput -T Screen doch funktioniert. Mein anfänglicher Test ist fehlgeschlagen, weil ich einen Bildschirm innerhalb eines Bildschirms ausgeführt habe und der äußere Bildschirm nicht vbell ausgeschaltet hatte. Danke für den Tipp. Bob vor 9 Jahren 0