当前位置: 首页>>技术教程>>正文


在shell脚本中发出哔声不起作用?

, , ,

问题描述

我想在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 + F1F6):

为什么默认情况下它不起作用

作为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-bellmodule-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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/990.html,未经允许,请勿转载。