问题描述
我想在shell脚本中使用嘟嘟声。不幸的是,我通过Google发现的所有方法都不适合我。
我试过了
echo -e '\a'
echo -ne '\007'
和通过apt安装后命令beep
。
可能是什么原因?
最佳解决办法
首先运行sudo modprobe pcspkr
,然后运行beep
。
这不是因为默认情况下,Ubuntu不再加载产生嘟嘟声的硬件驱动程序。
如果这适用于你,那么启用pcspkr的加载将永久编辑/etc/modprobe.d/blacklist.conf
文件(也许使用gksudo gedit
)并注释掉blacklist pcspkr
的行,如下所示:
# ugly and loud noise, getting on everyone's nerves; this should be done by a
# nice 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
设置,则将其从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
(对于glass.ogg
您需要gnome-control-center-data
) -
将
[ "$DISPLAY" ] && xset b 100
添加到文件~/.bashrc
激活此解决方案的最简单方法是重新启动。
此外,要立即为已打开的终端窗口实施此解决方案,请运行pactl
命令并在相关终端窗口中运行xset
命令。
第四种办法
由于这是一个非常高评价的问题,我将在控制台和X11中添加我对re-enable嘟嘟声的步骤:
对于Linux控制台(CTRL
+ ALT
+ F1
… F6
):
为什么默认情况下它不起作用
作为already answered,PC Speaker的pcspkr
内核驱动程序在Ubuntu中被列入黑名单。
临时启用,直到重新启动:
sudo modprobe pcspkr
在启动时自动启用:
sudo nano /etc/modprobe.d/blacklist.conf
(通过在#
中添加前缀来删除或注释pcspkr
行)
对于X11终端(例如默认gnome-terminal
)
为什么默认情况下它不起作用
在X下,就像使用Unity,KDE和Gnome Shell一样,PulseAudio会捕获蜂鸣事件,这要感谢module-x11-bell
,module-x11-bell
默认加载/usr/bin/start-pulseaudio-x11
。声音样本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
的system-wide中添加上述行
测试它:
printf '\a'
嘟!
beep
巴斯!
第五种办法
我以前遇到过这个问题。从我记得的问题来看,问题在于终端响铃试图打开内部计算机扬声器(如在old-school桌面中),但笔记本电脑和一些较新的计算机缺少这样的事情。
我当时发现的唯一解决方案是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 800 vol 0.5
第六种办法
如果您将实际的扬声器连接到电脑,并且没有发出哔声,那很可能是因为您正在使用compiz。 Compiz依靠pulseaudio捕捉嘟嘟声并播放它们,而metacity绕过通常的设置并使用libcanberra发出嘟嘟声。如果它与metacity一起使用,而不是compiz那是你的问题,否则答案htorque是正确的。
第七种办法
据我所知,这是一个错误:System beep broken in Karmic despite heroic efforts to fix it。
第八种办法
我终于找到了一个解决方案,它不需要alsamixer
有一个PC哔声选项。我想我记得我所有的改变:
在/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
根据this bug,运行pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg