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
forglass.ogg
) - 将
[ "$DISPLAY" ] && xset b 100
到~/.bashrc
文件中
激活此解决方案的最简单方法是重新启动。
此外,要立即为已打开的终端窗口实现此解决方案,请运行pactl
命令并在相关终端窗口中运行xset
命令。
由于这是谷歌上一个非常高评价的问题,我将添加我在控制台和X11中重新启用蜂鸣声的步骤:
对于Linux控制台( CTRL + ALT + F1 … F6 ):
为什么它默认不起作用
正如已经回答的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