web-dev-qa-db-ja.com

gnu画面で実行されているbashスクリプト内でオーディオベルを鳴らすにはどうすればよいですか?

次のように入力すると、TERMがkonsole-256colorに設定されたbashシェルを実行している画面外のkonsoleターミナルウィンドウで:

echo -n $ '\ a'または
echo -n $ '\ eg'または
./ ringbell ./ringbellの内容

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

これらはすべて、構成済みのオーディオベルがオフになるという結果になります。スクリーンセッションに入ると(上記の.screenrcもtermをkonsole-256colorに設定します)、上記の3つのコマンドの2番目(echo -n $ '\ eg')のみがオーディオベルが聞こえます。スクリプトを変更する必要がありますか、それとも画面の問題ですか?

私が持っている画面パッケージのubuntuバージョンは4.1.0〜20120320gitdb59704-9です。

19
Bob

記憶上では、Ctrl-Gがベル文字であるため、2つ目が機能したのはそのためだと思います。ただし、Ctrl-Aをコマンドコードとして取るため、画面はどの文字を受け入れるかを選択する場合があります。

これを試して

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

私はこれを rosettacode で見つけました、うまくいけばいくつかのオプションが得られます

26
Keith Muggleton

最善の解決策:printf '\a'

これは、ほとんどのシェルに組み込まれているprintfが適切に機能し、Linux/Macシステムにインストールされているprintfの同等の実行可能バージョンもあるためです。

その他のオプション:cursesがインストールされている場合は、次も使用できます:tput bel最近のバージョンのbashを使用している場合は、次を使用できます:echo -n '\a'

0
Pi Marillion