我想在shell脚本中使用提示音。不幸的是,我在Google上发现的所有方法都无法满足我的要求。
我试过了
echo -e '\a'
echo -ne '\007'
和beep
通过apt安装后的命令。
可能是什么原因?
我想在shell脚本中使用提示音。不幸的是,我在Google上发现的所有方法都无法满足我的要求。
我试过了
echo -e '\a'
echo -ne '\007'
和beep
通过apt安装后的命令。
可能是什么原因?
Answers:
首先运行sudo modprobe pcspkr
,然后beep
应该可以工作。
这样做不是因为默认情况下,Ubuntu不再加载会发出哔声的硬件驱动程序。
如果这对您有用,则要启用pcspkr的加载,请永久编辑该/etc/modprobe.d/blacklist.conf
文件(gksudo gedit
也许使用)并注释掉提示如下的行blacklist pcspkr
:
#丑陋而响亮的声音,触动所有人的神经;这应该由 #不错的pulseaudio bing(Ubuntu:#77010) #黑名单pcspkr
blacklist pcspkr
我必须做得到modprobe -r pcspkr && modprobe pcspkr
工作。发出蜂鸣声也不同于发出声音的铃铛,因此askubuntu.com/questions/22168/how-do-i-enable-the-terminal-bell应该仍然打开。
我不是pcspkr哔哔声的粉丝,而是通过安装的Pulseaudio服务器的paplay命令使用系统声音之一发出的哔哔声。
首先找到您喜欢的声音(例如,您可以浏览/ usr / share / sounds以获得一些可用的声音)并创建对该声音的引用
export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg
然后将其作为命令使用
alias beep='paplay $BEEP'
现在,beep
只要需要就可以运行。例如,要在命令完成时提醒您:
find . | grep treasure ; beep
echo -e '\a'
run-my-long-test-suite.sh; beep
读取系统中的stackoverflow,直到系统就绪为止。
export BEEP=/usr/share/sounds/ubuntu/stereo/dialog-information.ogg
,alias beep='paplay $BEEP --volume=32768'
对我来说效果很好。(请注意,您可以使用beep
别名覆盖音量,例如beep --volume=15000
以-12dB的音量播放。)
要永久解决此问题:
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
在相关的终端窗口中运行命令。
pactl upload-sample
命令放在shell脚本中,但是您的方法更加井井有条。谢谢!
pactl
命令放入其中,~/.xprofile
则它将在GUI会话开始时执行。
dconf-editor
版本bell-mode
似乎是org.gnome.settings-daemon.peripherals.keyboard
。
glass.ogg
安装包含软件包
由于这是Google上的一个非常高评分的问题,我将添加我在控制台和X11中重新启用蜂鸣声的步骤:
正如已经回答的那样,pcspkr
在Ubuntu中将PC Speaker 的内核驱动程序列入黑名单。
暂时启用直到重启:
sudo modprobe pcspkr
在启动时自动启用:
sudo nano /etc/modprobe.d/blacklist.conf
(pcspkr
通过在前面加上来删除或添加注释行#
)
gnome-terminal
)在X下,就像使用Unity,KDE,Gnome Shell一样,由于PulseAudio捕获了蜂鸣事件,感谢module-x11-bell
,默认情况下将其加载/usr/bin/start-pulseaudio-x11
。并且bell.ogg
默认情况下,声音样本PulseAudio会发出哔哔声,为空白。此外,铃声音量可能会静音。
要暂时启用当前会话,
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
嗡嗡声!
pcspkr
和bell.ogg
是独立的方法。beep
尝试使用各种方法(例如,ioctl(console_fd, KIOCSOUND, period)
使用pcspkr
(声音来自主板上的PC扬声器)发出蜂鸣声),而printf '\a'
基于方法的方法可能不使用它而仅使用bell.ogg
(声音来自普通扬声器)。在pulseaudio服务启动和/或xset b on
运行之前
pactl upload-sample ...
对我来说是黄金。永久重新配置样品加载的方式是什么?
~/.profile
或系统范围内,即/etc/profile
load-sample bell.ogg /usr/share/sounds/ubuntu/stereo/bell.ogg
在/etc/pulseaudio/default.pa
。
我以前遇到过这个问题。从我记得的情况来看,问题在于终端机铃会尝试振铃内置计算机的扬声器(例如在老式台式机中),但是笔记本电脑和一些较新的计算机却缺少这种东西。
我发现当时唯一的解决办法是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
play -q -n synth 2 pluck C5
。C5是笔记。
我终于找到了一种解决方案,不需要alsamixer
PC Beep选项。我想我记得我所有的改变:
在中取消注释以下内容/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
Connection failure: Connection refused pa_context_connect() failed: Connection refused
。
Failed to open module "module-esound-protocol-unix": file not found
。由于我正在运行13.04,因此可能不值得在此处进行讨论,尽管我希望能够验证您的解决方案。
如果您有与计算机连接的实际扬声器,但没有发出哔声,则可能是因为您正在使用compiz。Compiz依靠Pulseaudio捕捉蜂鸣声并播放蜂鸣声,而metacity绕过常规设置并使用libcanberra播放蜂鸣声。如果它适用于metacity而不是compiz,那是您的问题,否则htorque给出的答案是正确的。
据我所知,这是一个错误:尽管进行了英勇的努力,但Karmic中的系统蜂鸣声还是坏了。
modprobe pcsprk
(在控制台中)或pactl upload-sample ...
在X11中,然后