Bashを使ってコンピュータのスピーカーからビープ音を鳴らすにはどうすればよいですか?
こんなのがecho 'beepsound' > /dev/pcspkr
いいでしょう。
答え1
beep
私は通常、いくつかのシステムにインストールされている小さなユーティリティを使用します。このコマンドは、システムサウンドを生成するためにさまざまな方法を試みます。
マンページでサウンドを生成する方法は3つありますbeep
。
シェルスクリプトでビープ音を生成する従来の方法は、
ASCII BEL
シェルコマンドを介して標準出力に()文字を書き込むことです。\007
echo -ne '\007'
これは、コールシェルの標準出力が現在ある種の端末デバイスに渡される場合にのみ機能します。そうしないと、ビープ音が鳴らず、出力が転送されるすべてのファイルが不必要に破損する可能性があります。
ビープ音を発生させる別の方法があります。より安定した方法は、BELの役割を開いて
/dev/tty
そこに送ることです。これは、I / Oリダイレクトには強力ですが、ビープ音を生成したいシェルスクリプトに制御端末がない場合(たとえば、Xウィンドウマネージャで実行されているため)はまだ失敗します。3番目の方法は、Xディスプレイに接続してリングコマンドを送信することです。これはUnix端末デバイスに依存しませんが、(もちろん)Xモニタが必要です。
beep
簡単にこの3つの方法を試してみましょう。
答え2
注:この回避策はビープ音を鳴らします。スピーカー、いいえマザーボード。
ALSAが付属スピーカーテスト、ビープ音を生成するために使用できるコマンドラインスピーカーテストトーンジェネレータ:
$ speaker-test -t sine -f 1000 -l 1
バラよりこのアーチLinuxフォーラムのトピック。
ただし、ビープ音の持続時間は任意ですが、次のように制御できます。
$ ( speaker-test -t sine -f 1000 )& pid=$! ; sleep 0.1s ; kill -9 $pid
もう一歩進んで、この関数を使ってビープ音を鳴らすことができます。
_alarm() {
( \speaker-test --frequency $1 --test sine )&
pid=$!
\sleep 0.${2}s
\kill -9 $pid
}
頻度パラメータと期間パラメータを使用して呼び出されます。
$ _alarm 400 200
これを念頭に置いて簡単な音楽を作ることが可能ですspeaker-test
。バラよりこのシェルスクリプト。
答え3
ただエコー\a
したり、\07
私のために働いてください。
$ echo -e "\a"
pcspkr
カーネルモジュールをロードする必要があるかもしれません。私はこれをRHELでのみテストしたので、YMMVです。
修正する
Warrenがコメントで指摘したように、SSH経由でリモートでログインすると機能しない可能性があります。迅速な修正は、出力をTTYデバイス(可能な限り使用しないデバイス)にリダイレクトすることです。たとえば、
$ echo -en "\a" > /dev/tty5
答え4
インストールされている場合はサウンドカードを使用しsox
、インストールされていない場合はPCスピーカーを使用してください。
$ play -q -n synth 0.1 sin 880 || echo -e "\a"
sox
ほとんどのディストリビューションで動作します。