问题描述
我想在 shell 脚本中使用哔声。不幸的是,我通过 Google 找到的任何方法都不适合我。
我试过
echo -e '\a'
echo -ne '\007'
以及通过apt安装后的命令beep
。
可能是什么原因?
最佳回答
我不是 pcspkr 哔哔声的粉丝,我使用来自系统声音之一的哔哔声和已安装的pulseaudio 服务器的 paplay 命令。
首先找到您喜欢的声音(例如,您可以浏览 /usr/share/sounds 以获得一些可用的声音)并创建对它的引用
export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg
然后将其作为命令使用
alias beep='paplay $BEEP'
现在只要你需要就运行 beep
。例如,要在命令完成时提醒您:
find . | grep treasure ; 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
第三种回答
由于这是一个在 google 上评分非常高的问题,我将在控制台和 X11 中添加我对 re-enable beep 所做的步骤:
对于 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 时一样,由于 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
的 system-wide 中添加上述行
要测试它:
printf '\a'
嘟!
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
(你需要gnome-control-center-data
为glass.ogg
) -
将
[ "$DISPLAY" ] && xset b 100
添加到文件~/.bashrc
激活此解决方案的最简单方法是重新启动。
此外,要立即为已经打开的终端窗口实施此解决方案,请在相关终端窗口中运行 pactl
命令并运行 xset
命令。
第五种回答
我以前遇到过这个问题。据我所知,问题是终端铃试图使内部计算机扬声器响起(如在 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 880 vol 0.5
第六种回答
“只有当您的 PC 具有传统的旧式 “speaker” 时,Beep 才能工作,而且可能大多数(如果不是所有)笔记本电脑和小型设备都没有。
然而,他们通常拥有的是一个声音芯片和一个或多个扬声器,可用于发出您想要的任何声音。
因此,当您没有旧式扬声器硬件时,安装 beep
命令和/或内核模块 pcspkr
的过时建议将永远不会起作用。
相反:当您想要哔哔声时尝试播放这样的声音:
paplay /usr/share/sounds/sound-icons/capital
请注意,这使用了 paplay
(脉冲音频播放)命令,它可以与系统上的其他用户级别(用户应用程序)声音更好地混合,而不是旧的 aplay
(ALSA 播放)命令,它通常只能同时播放一种声音。但请注意,PulseAudio 调用 ALSA 来实际播放声音。
我之前使用 play
的建议可能仍然有效,但运行其中播放的 SoX 是矫枉过正的。
当所有其他方法都失败时,它对我有用。感谢:tredegar & hk_centos 等。
第七种回答
我终于找到了一个解决方案,它不需要 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
每个 this bug ,运行 pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg