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

NES*_*NES 101 sound command-line scripts

我想在 shell 脚本中使用哔声。不幸的是,我通过 Google 找到的所有方法都不适合我。

我试过

echo -e '\a'

echo -ne '\007'
Run Code Online (Sandbox Code Playgroud)

以及beep我通过apt安装后的命令。

可能是什么原因?

yuv*_*lio 108

我不是 pcspkr 哔哔声的粉丝,我使用来自系统声音之一的哔哔声和已安装的pulseaudio 服务器的 paplay 命令。

首先找到您喜欢的声音(例如,您可以浏览 /usr/share/sounds 以获得一些可用的声音)并创建对它的引用

export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg
Run Code Online (Sandbox Code Playgroud)

然后将其作为命令可用

alias beep='paplay $BEEP'
Run Code Online (Sandbox Code Playgroud)

现在只需beep在需要时运行即可。例如,要在命令完成时提醒您:

find . | grep treasure ; beep
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的解决方案!现在我可以做`run-my-long-test-suite.sh; beep` 并读取 stackoverflow 直到系统准备就绪。 (7认同)
  • 播放这些 ogg 文件可能导致延迟数量级大于内部 PC 扬声器蜂鸣声的延迟数量级。不仅延迟似乎高度可变。我承认大多数人并不关心,但是当您需要实时或接近实时的响应时,PC 扬声器可能是声音反馈的最佳选择。 (5认同)
  • 好的!我现在使用 `export BEEP=/usr/share/sounds/ubuntu/stereo/dialog-information.ogg` 和 `alias beep='paplay $BEEP --volume=32768'`,这对我来说效果很好。(请注意,您可以使用 `beep` 别名覆盖音量,例如 `beep --volume=15000` 以 -12dB 的音量播放。) (4认同)
  • 当有人运行 `echo -e '\a'` 时,你能让它播放这个声音吗? (2认同)

812*_*128 104

首先运行sudo modprobe pcspkr,然后beep应该工作。

这不是因为默认情况下 Ubuntu 不再加载产生蜂鸣声的硬件驱动程序。

如果这对你有用,那么启用 pcspkr 的加载永久编辑/etc/modprobe.d/blacklist.conf文件(gksudo gedit可能使用)并注释掉这样说的行,blacklist pcspkr它看起来像这样:

# 丑陋的巨响,让人心烦;这应该由一个
# 不错的pulseaudio bing(Ubuntu:#77010)
# 黑名单 pcspkr

  • 这在 Ubuntu 14 中对我不起作用。 (5认同)
  • 如果我评论`blacklist pcspkr`,我必须执行`modprobe -r pcspkr && modprobe pcspkr` 才能使其工作。同样让蜂鸣器工作_not_与让可听铃工作相同,因此 http://askubuntu.com/questions/22168/how-do-i-enable-the-terminal-bell 应该仍然打开。 (4认同)

Mes*_*ion 28

由于这是 google 上评分非常高的问题,我将添加在控制台和 X11 中重新启用哔声的步骤:


对于Linux控制台(CTRL+ ALT+ F1... F6):

为什么它默认不起作用

正如已经回答的那样pcspkrPC Speaker的内核驱动程序在 Ubuntu 中被列入黑名单。

暂时启用直到重新启动:

sudo modprobe pcspkr
Run Code Online (Sandbox Code Playgroud)

在启动时自动启用:

sudo nano /etc/modprobe.d/blacklist.conf
Run Code Online (Sandbox Code Playgroud)

(删除或注释pcspkr行,在前面加上#


对于 X11 终端(如默认gnome-terminal

为什么它默认不起作用

在 X 下,就像使用 Unity、KDE、Gnome Shell 时一样,由于 PulseAudio 会捕获哔声事件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
Run Code Online (Sandbox Code Playgroud)

您还可以尝试其他合适的示例/usr/share/sounds,例如在/usr/share/sounds/gnome/default/alerts/

请注意,该beep程序并不是真正必要的。但如果安装了,它会使用 PC 扬声器。这是我能找到的在 X 下启用蜂鸣器的唯一方法:

sudo apt-get install beep
Run Code Online (Sandbox Code Playgroud)

要在启动时自动启用,只需在您的~/.profile或系统范围内添加上述行/etc/profile


要测试它:

printf '\a'
Run Code Online (Sandbox Code Playgroud)

嘟!

beep
Run Code Online (Sandbox Code Playgroud)

嗡嗡声!


小智 22

我以前遇到过这个问题。据我所知,问题是终端铃声试图让内部计算机扬声器响起(如在老式台式机中),但笔记本电脑和一些较新的计算机缺少这样的东西。

我当时找到的唯一解决方案是

sudo apt-get install sox
Run Code Online (Sandbox Code Playgroud)

play -n synth <duration in seconds> sine <freq in Hz> vol <volume (0-1)>
Run Code Online (Sandbox Code Playgroud)

例如

 play -n synth 0.1 sine 880 vol 0.5
Run Code Online (Sandbox Code Playgroud)

  • 你也可以有一个很好的吉他弹拨音:`play -q -n synth 2 pluck C5`。C5 是音符。 (2认同)

jdt*_*ood 22

要持久解决此问题:

  • 运行gconf-editor,如果desktop | gnome | peripherals | keyboard | bell_mode设置存在,则将其更改offon
  • 运行dconf-editor,如果org | gnome | settings-daemon | peripherals | keyboard | bell-mode设置存在,则将其更改offon
  • 添加pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.ogg到文件~/.xprofile(你需要gnome-control-center-dataglass.ogg
  • 添加[ "$DISPLAY" ] && xset b 100到文件~/.bashrc

激活此解决方案的最简单方法是重新启动。

此外,要立即为已经打开的终端窗口实施此解决方案,请运行该pactl命令并xset在相关终端窗口中运行该命令。


Ell*_*iew 6

只有当您的 PC 具有传统的旧式“扬声器”时蜂鸣声才能工作,而且可能大多数(如果不是所有)笔记本电脑和小型设备都没有。

然而,他们通常拥有的是一个声音芯片和一个或多个扬声器,可用于发出您想要的任何声音。

因此,当您没有旧式扬声器硬件时,安装beep命令和/或内核模块的过时建议pcspkr将永远不会起作用。

相反: 当您想要哔哔声时尝试播放这样的声音:

paplay /usr/share/sounds/sound-icons/capital
Run Code Online (Sandbox Code Playgroud)

注意这里使用了paplayP ulse一个UDIO播放)命令,混合与其他用户级别(用户应用程序)的声音更好地在系统上,而不是旧的aplay一个LSA播放)命令,它一般只能在同一时间播放一个声音。但请注意,PulseAudio 调用 ALSA 来实际播放声音。

我之前使用的建议play可能仍然有效,但是运行其中播放的 SoX 是矫枉过正的。


当所有其他方法都失败时对我有用。感谢:特里迪加hk_centos等。