web-dev-qa-db-ja.com

シェルスクリプトのビープ音が機能しませんか?

シェルスクリプトでビープ音を使用したいと思います。残念ながら、Googleで見つけた方法はどれも役に立ちません。

私は試した

echo -e '\a'

echo -ne '\007'

コマンドbeepは、apt経由でインストールした後です。

理由は何でしょうか?

85
NES

最初にSudo modprobe pcspkrを実行し、次にbeepが機能するはずです。

これが行われない理由は、デフォルトでは、Ubuntuがビープ音を出すハードウェアドライバーをロードしないためです。

これで問題がなければ、pcspkrの読み込みを有効にして/etc/modprobe.d/blacklist.confファイルを永続的に編集し(おそらくgksudo geditを使用)、blacklist pcspkrという行をコメントアウトして、次のようにします。

#andい大きな音、みんなの神経に乗る;これは、a 
#Nice pulseaudio bing(Ubuntu:#77010)
#blacklist pcspkrによって行われるべきです。
93
8128

Pcspkrのビープ音のファンではないので、インストールされたpulseaudioサーバーのpaplayコマンドでシステムサウンドのビープ音を使用します。

まず、好きなサウンドを見つけて(たとえば、/ usr/share/soundsを参照して、使用可能なサウンドを探してください)、それへの参照を作成します

export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg

次に、コマンドとして使用可能にします

alias beep='paplay $BEEP'

必要なときにbeepを実行するだけです。たとえば、コマンドが終了したときに警告するには:

find . | grep treasure ; beep
90
yuvilio

これはGoogleで非常に高い評価の質問なので、コンソールとX11の両方でビープ音を再度有効にするために行った手順を追加します。


Linuxコンソール(CTRL+ALT+F1...F6):

デフォルトで機能しない理由

すでに回答済み であるため、PCスピーカー用のpcspkrカーネルドライバーはUbuntuでブラックリストに登録されています。

再起動するまで一時的に有効にします。

Sudo modprobe pcspkr

起動時に自動的に有効にする:

Sudo nano /etc/modprobe.d/blacklist.conf

#を先頭に追加して、pcspkr行を削除またはコメントします)


X11端末の場合(デフォルトのgnome-terminalなど)

デフォルトで機能しない理由

Xの下では、Unity、KDE、Gnome Shellを使用するときのように、module-x11-bellがデフォルトで読み込まれる/usr/bin/start-pulseaudio-x11のおかげで、ビープイベントがPulseAudioによってキャプチャされます。また、PulseAudioがビープ音で再生するサウンドサンプルbell.oggは、デフォルトでは空白です。さらに、ベルの音量がミュートされる場合があります。

現在のセッションを一時的に有効にするには、

xset b 100  # perhaps not needed, on my system it was 40 by default
pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg

/usr/share/soundsで試すことができる他の適切なサンプルがあります。たとえば、/usr/share/sounds/gnome/default/alerts/でサンプルをチェックします

beepプログラムは実際には必要ないことに注意してください。ただし、インストールされている場合は、PCスピーカーが使用されます。 Xでブザーを有効にできる唯一の方法です。

Sudo apt-get install beep

起動時に自動的に有効にするには、上記の行を~/.profileに追加するか、/etc/profileでシステム全体に追加します


テストするには:

printf '\a'

ビープ音!

beep

バズ!

21
MestreLion

この問題を永続的に修正するには:

  • gconf-editorを実行し、desktop | gnome | peripherals | keyboard | bell_mode設定が存在する場合、offからonに変更します。
  • dconf-editorを実行し、org | gnome | settings-daemon | peripherals | keyboard | bell-mode設定が存在する場合、offからonに変更します。
  • pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.oggをファイル~/.xprofileに追加します(gnome-control-center-dataにはglass.oggが必要です)
  • [ "$DISPLAY" ] && xset b 100をファイルに追加~/.bashrc

このソリューションをアクティブにする最も簡単な方法は、再起動することです。

さらに、既に開いているターミナルウィンドウに対してこのソリューションをすぐに実装するには、pactlコマンドを実行し、問題のターミナルウィンドウでxsetコマンドを実行します。

21
jdthood

以前にこの問題に遭遇しました。私が覚えていることから、問題は、ターミナルベルが内部コンピューターのスピーカーを鳴らそうとすることです(古い学校のデスクトップのように)が、ラップトップやいくつかの新しいコンピューターにはそのようなものがありません。

私がその時に見つけた唯一の解決策は、Sudo apt-get install sox

play -n synth <duration in seconds> sine <freq in Hz> vol <volume (0-1)>

例えば.

 play -n synth 0.1 sine 880 vol 0.5
15
YodaDaCoda

私はついに解決策を見つけました。これは、PC [ビープ音]オプションを持つためにalsamixerを必要としません。私は私のすべての変更を覚えていると思います:

/etc/Pulse/default.paの次のコメントを外します。

load-sample-lazy x11-bell /usr/share/sounds/ubuntu/stereo/bell.ogg
load-module module-x11-bell sample=bell-windowing-system

このバグ ごとに、pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.oggを実行します

2
JoBu1324
2
htorque

コンピューターに実際のスピーカーが接続されていて、ビープ音が鳴らない場合は、compizを使用している可能性があります。 Compizは、pulsecityがビープ音をキャッチして再生し、metacityが通常のセットアップをバイパスし、libcanberraを使用してビープ音を再生することに依存しています。メタシティで動作し、compizではなく問題である場合、それ以外の場合、htorqueが与える答えはcorrentです。

2
Travis Watkins

ビープ音は、PCに「スピーカー」がある場合にのみ機能します。多くの最新のラップトップ/小型デバイスにはありません。」.

次のような音を再生してみてください:play xxxxx.wavNice wav 短くて甘いように見えますが、できますあなた自身も選んでください。他のすべてが失敗したときに私のために働く。


おかげで: tredegarhk_centos

2
Elliptical view

別のアプローチ-xterm/consoleを「Visual Bell」に設定して、ビープ音が鳴ったときにウィンドウの色が短時間だけ反転するようにします。

コマンドが終了したら注意を引くために、beepというbash関数があります。

beep ()  { while true; do  echo -en '\a'; sleep 1; done }

そして、それはこのように使用されます

longrun-command ; beep
1
Criggie