使用bash,如何让电脑扬声器发出蜂鸣声?
像这样的东西echo 'beepsound' > /dev/pcspkr
就很好了。
答案1
beep
我通常使用许多系统上安装的小实用程序。该命令将尝试不同的方法来创建系统声音。
从联机帮助页有 3 种创建声音的方法beep
:
在 shell 脚本中产生蜂鸣声的传统方法是通过 shell 命令将
ASCII BEL
( ) 字符写入标准输出,例如\007
echo -ne '\007'
仅当调用 shell 的标准输出当前定向到某种终端设备时,这才有效;如果没有,蜂鸣声将不会发出声音,甚至可能会导致输出定向到的任何文件出现不必要的损坏。
还有其他方法可以引起蜂鸣声。稍微更可靠的方法是打开
/dev/tty
您的 BEL 角色并将其发送到那里。这对于 I/O 重定向来说是稳健的,但在希望生成蜂鸣声的 shell 脚本没有控制终端的情况下仍然会失败,例如因为它是从 X 窗口管理器运行的。第三种方法是连接到 X 显示器并向其发送响铃命令。这不依赖于 Unix 终端设备,但(当然)需要 X 显示器。
beep
将简单地尝试这 3 种方法。
答案2
注意:此解决方案会发出蜂鸣声扬声器,不是母板。
ALSA 附带说话者测试,一个命令行扬声器测试音调生成器,可用于生成蜂鸣声:
$ speaker-test -t sine -f 1000 -l 1
然而,蜂鸣声持续时间是任意的,但可以按如下方式控制:
$ ( speaker-test -t sine -f 1000 )& pid=$! ; sleep 0.1s ; kill -9 $pid
我们可以更进一步,使用此函数输出蜂鸣声:
_alarm() {
( \speaker-test --frequency $1 --test sine )&
pid=$!
\sleep 0.${2}s
\kill -9 $pid
}
使用频率和持续时间参数调用:
$ _alarm 400 200
考虑到这一点,就可以用 创作简单的音乐speaker-test
。看这个 shell 脚本。
答案3
只是回响\a
或\07
为我工作。
$ echo -e "\a"
这可能需要pcspkr
加载内核模块。我只在 RHEL 上测试过这个,所以 YMMV。
更新
正如 Warren 在评论中指出的那样,当通过 SSH 远程登录时,这可能不起作用。一个快速的解决方法是将输出重定向到任何 TTY 设备(最好是未使用的设备)。例如:
$ echo -en "\a" > /dev/tty5
答案4
如果已安装则使用声卡sox
,如果未安装则使用 PC 扬声器:
$ play -q -n synth 0.1 sin 880 || echo -e "\a"
sox
适用于大多数发行版。