Wie kann ich die Audioklingel in einem Bash-Skript läuten, das unter GNU Screen ausgeführt wird?

Wie kann ich die Audioklingel in einem Bash-Skript läuten, das unter GNU Screen ausgeführt wird?

In einem Konsolen-Terminalfenster außerhalb des Bildschirms, in dem eine Bash-Shell mit TERM auf konsole-256color eingestellt ausgeführt wird, gebe ich Folgendes ein:

echo -n $'\a'

oder

echo -n $'\eg'

oder

./ringbell.sh

wobei der Inhalt von ringbell.shist

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

Sie alle führen dazu, dass der konfigurierte Signalton ertönt. Wenn ich eine Bildschirmsitzung starte (meine ~/.screenrcsetzt auch TERM=konsole-256color), führt nur der zweite der drei obigen Befehle ( echo -n $'\eg') dazu, dass der Signalton ertönt. Muss ich das Skript ändern oder ist das ein Problem mit screen?

Ich verwende es screen 4.1.0~20120320gitdb59704-9von Ubuntu.

Antwort1

Soweit ich mich erinnere, ist Strg-G das Glockenzeichen, deshalb funktionierte vermutlich das zweite. Aber der Bildschirm kann wählerisch sein, was die Zeichen angeht, die 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 fand dies aufrosettacode, hoffentlich gibt es Ihnen einige Optionen

Antwort2

Beste Lösung:printf '\a'

Dies liegt daran, dass die in den meisten Shells integrierte Version gut funktioniert und auf Linux-/Mac-Systemen printfauch eine entsprechende ausführbare Version installiert ist .printf

Andere Optionen: Wenn Sie Curses installiert haben, können Sie auch Folgendes verwenden: tput bel Wenn Sie eine aktuelle Version von Bash verwenden, können Sie Folgendes verwenden:echo -e '\a'

verwandte Informationen