Wie kann ich die Audio-Glocke in einem Bash-Skript läuten, das unter dem Gnu-Bildschirm ausgeführt wird?


19

In einem Konsolen-Terminalfenster außerhalb des Bildschirms wird eine Bash-Shell ausgeführt, bei der TERM auf konsole-256color gesetzt ist, wenn ich Folgendes tippe:

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

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

Sie alle führen dazu, dass die konfigurierte Audioklingel ertönt. Wenn ich in eine Bildschirmsitzung eintrete (mein .screenrc setzt den Begriff auch auf konsole-256color), führt nur der zweite der oben genannten 3 Befehle (echo -n $ '\ eg') dazu, dass die Audioklingel zu hören ist. Muss ich das Skript ändern oder liegt ein Problem mit dem Bildschirm vor?

Die Ubuntu-Version meines Bildschirmpakets ist 4.1.0 ~ 20120320gitdb59704-9.


1
Beziehe dich auch auf diese Frage , obwohl ich eigentlich Keiths Antwort bevorzuge.
— Franklin Yu

Antworten:


24

Aus dem Gedächtnis ist Strg-G die Glockenfigur, deshalb hat die zweite wohl funktioniert. Der Bildschirm kann jedoch hinsichtlich der Zeichen, die er akzeptiert, wählerisch sein, da Strg-A als Befehlscode verwendet wird.

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 Ihnen einige Optionen


Dies funktioniert weder innerhalb noch außerhalb des Bildschirms. Wenn ich infocmp verwende, wird mir angezeigt, dass die Bel-Funktion nicht für TERM konsole-256color definiert ist. Dies ist also sinnvoll. Obwohl der Bildschirmterminfo-Eintrag definiert, funktioniert ein tput -T-Bildschirmbel auch nicht.
— Bob

1
Nach weiteren Tests sieht es so aus, als würde tput -T screen bel doch funktionieren. Mein erster Test ist fehlgeschlagen, weil ich einen Bildschirm innerhalb eines Bildschirms ausgeführt habe und der äußere Bildschirm keine vbell ausgeschaltet hatte. Danke für den Tipp.
— Bob

0

Beste Lösung: printf '\a'

Das liegt daran, dass die printfmeisten Shells gut funktionieren und es auch eine entsprechende ausführbare Version von printfLinux / Mac-Systemen gibt.

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.