在bash脚本/命令中,如何使PC发出蜂鸣声或播放声音文件?

scu*_*ffe 44 audio shell

我有一些长时间运行的脚本需要输入/交互才能继续,但是当我切换到另一个窗口时,我希望(通过声音)通知任务已完成并且现在正在等待输入.

我更喜欢能够播放音频片段(*.mp3,*.ogg等),但是如果唯一的解决方案是使PC扬声器发出蜂鸣声,则无关紧要.

有任何想法吗?我可以安装任何我可以安装的CLI实用程序播放声音,反过来我可以在需要时执行.

仅供参考:我的系统正在运行WinXP Pro.

更新: Doh!我的Windows>控制面板>声音>默认蜂鸣声:设置为(无).哎呀...

问题解决了.

Gre*_*lds 88

这将在bash中发出哔哔声

echo -en "\007"
Run Code Online (Sandbox Code Playgroud)

  • 稍微简单的替代方案:`echo -ne'\ a'`和`printf'\ a'`.另请注意,在某些Linux发行版(例如,Ubuntu)中,可能会抑制铃声 - 请参阅http://askubuntu.com/questions/19906/beep-in-shell-script-not-working (13认同)
  • 更短的 `printf \\a` (3认同)
  • 在Cygwin中,您必须在终端oprtions中启用蜂鸣声. (2认同)

FWH*_*FWH 35

试试这个:

回声^ G.

(^ G由ctrl + G获得).

注意:您无法将此代码复制并粘贴到批处理文件中,它将无法正常工作.要在文件中获取^ G字符,请键入cmd窗口:

echo ^ G> beep.txt

(再次,^ G通过ctrl + G获得).

然后你将有一个名为beep.txt的文件,用记事本打开它,会有一个方形字符.一旦将其保存在文件中,这就是我们的^ G.

然后,您可以将其复制并粘贴到批处理文件中以发出声音(不要忘记在其前面放置"echo").

  • 在大多数shell中(但不是命令/ cmd),您需要Ctrl-V Ctrl-G才能键入^ G. (25认同)

Cir*_*四事件 7

spd-say

sleep 2; spd-say 'get back to work'
Run Code Online (Sandbox Code Playgroud)

-w如果你需要额外的动力,无限循环:

sleep 2; while true; do spd-say -w 'get back to work'; done
Run Code Online (Sandbox Code Playgroud)

通过软件包预装在Ubuntu 14.04上speech-dispatcher:http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-amd64.manifest 我认为是盲人吗?

另见:https://askubuntu.com/questions/277215/how-to-make-a-sound-once-a-process-is-complete

还添加一个弹出窗口

这个组合是一个救生员,b代表beep:

b() ( spd-say 'done'; zenity --info --text "$(date);$(pwd)" & )
Run Code Online (Sandbox Code Playgroud)

然后:

super-slow-command;b
Run Code Online (Sandbox Code Playgroud)

如果我在房间的某个地方,我会听到它,并知道长期工作已经完成.

否则,当我回到计算机时,我会看到弹出窗口.

相关:如何在linux中的bash脚本中显示GUI消息框?

听听你的冷却器

我当然是在开玩笑,但是为了编译,我注意到我经常使用这个队列下意识地使用这个队列.当冷却器停止哼唱一段时间后,就意味着编译结束了!


小智 5

copy con beep.bat [Enter]

@echo off [Enter]

echo [Ctrl + G] [Enter]

[Ctrl + Z] [回车]

beep.bat [Enter]


am7*_*m70 5

通过设置此变量如下

PROMPT_COMMAND="echo -en '\a'"

然后bash每次显示提示时都会发出哔哔声.当你不再需要它时

unset PROMPT_COMMAND


小智 5

要从 Windows 命令行播放系统声音,您可以运行:

rundll32 user32.dll,MessageBeep
Run Code Online (Sandbox Code Playgroud)

它应该适用于所有版本的 Windows。


Jay*_*ake 5

我知道您的问题是针对 Window 的,但只是将其放在此处供遇到本文的任何Mac OSX用户使用。OSX 10+ 附带say命令:

say "I'm done"
Run Code Online (Sandbox Code Playgroud)

例如:

sleep 5 && say "I'm done waiting 5 seconds"
Run Code Online (Sandbox Code Playgroud)