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.