shell脚本中的蜂鸣声不起作用?

我想在shell脚本中使用哔声。 不幸的是,我通过Google找到的方法都不适合我。

我试过了

echo -e '\a' echo -ne '\007' 

我通过apt安装后beep命令beep

可能是什么原因?

首先运行sudo modprobe pcspkr然后beep应该工作。

这不是因为默认情况下Ubuntu不再加载产生蜂鸣声的硬件驱动程序。

如果这对您有用,那么启用pcspkr的加载永久编辑/etc/modprobe.d/blacklist.conf文件(也许使用gksudo gedit )并注释掉blacklist pcspkr行,所以它看起来像这样:

  #丑陋的声音,让每个人都感到紧张; 这应该由a完成
 #good pulseaudio bing(Ubuntu:#77010)
 #blacklist pcspkr 

不是pcspkr蜂鸣器的粉丝,我使用已安装的pulseaudio服务器的paplay命令从其中一个系统声音中发出蜂鸣声。

首先找到你喜欢的声音(你可以浏览/ usr / share /声音,例如一些可用的声音)并创建一个引用它

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

然后将它作为命令提供

 alias beep='paplay $BEEP' 

现在只需在需要时beep 。 例如,要在命令完成时提醒您:

 find . | grep treasure ; beep 

要持久解决此问题:

  • 运行gconf-editor ,如果是desktop | gnome | peripherals | keyboard | bell_mode desktop | gnome | peripherals | keyboard | bell_mode desktop | gnome | peripherals | keyboard | bell_mode设置存在然后将其从off更改为on
  • 运行dconf-editor并且如果是org | gnome | settings-daemon | peripherals | keyboard | bell-mode org | gnome | settings-daemon | peripherals | keyboard | bell-mode 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 for glass.ogg
  • [ "$DISPLAY" ] && xset b 100~/.bashrc文件中

激活此解决方案的最简单方法是重新启动。

此外,要立即为已打开的终端窗口实现此解决方案,请运行pactl命令并在相关终端窗口中运行xset命令。

由于这是谷歌上一个非常高评价的问题,我将添加我在控制台和X11中重新启用蜂鸣声的步骤:


对于Linux控制台( CTRL + ALT + F1F6 ):

为什么它默认不起作用

正如已经回答的pcspkr ,PC扬声器的pcspkr内核驱动程序在Ubuntu中被列入黑名单。

暂时启用,直到重启:

 sudo modprobe pcspkr 

在启动时自动启用:

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

(删除或评论pcspkr行, 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 

巴斯!

我之前遇到过这个问题。 从我记忆中,问题是终端铃声试图敲响内部计算机扬声器(如在旧式桌面),但笔记本电脑和一些较新的计算机都缺少这样的东西。

我当时发现的唯一解决方案是sudo apt-get install sox

 play -n synth  sine  vol  

例如

  play -n synth 0.1 sine 880 vol 0.5 

如果您将实际扬声器连接到计算机并且没有发出蜂鸣声,则可能是因为您正在使用compiz。 Compiz依靠pulseaudio捕捉哔哔声并播放它们,而metacity绕过通常的设置并使用libcanberra发出哔哔声。 如果它与metacity合作而不是compiz那是你的问题,否则htorque给出的答案是正确的。

据我所知,这是一个错误: 尽管英勇努力修复它,但在Karmic中系统发出哔哔声 。

我终于找到了一个解决方案,它不需要alsamixer有一个PC Beep选项。 我想我记得我的所有变化:

取消注释/etc/pulse/default.pa的以下/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

只有当你的电脑有’扬声器’时才会发出蜂鸣声。许多现代笔记本电脑/小型设备都没有”。

尝试播放这样的声音: play xxxxx.wav我发现了一个很好的wav文件似乎很短而且很甜,但你也可以选择自己的。 一切都失败了,对我有用。


感谢: tredegar和hk_centos