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

时间:2009-07-17 13:46:47

标签: shell audio

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

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

有什么想法吗?我可以安装任何我可以安装的CLI实用程序,这些实用程序可以在需要时执行播放声音。

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

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

问题解决了。

8 个答案:

答案 0 :(得分:85)

这将在bash中发出哔哔声

echo -en "\007"

答案 1 :(得分:33)

试试这个:

回音^ G

(^ G由ctrl + G获得。)

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

echo ^ G> beep.txt

(同样,^ G通过ctrl + G获得)。

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

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

答案 2 :(得分:5)

  

copy con beep.bat [Enter]

     

@echo off [Enter]

     

echo [Ctrl + G] [Enter]

     

[Ctrl + Z] [Enter]

     

beep.bat [Enter]

答案 3 :(得分:5)

通过设置此变量如下

PROMPT_COMMAND="echo -en '\a'"

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

unset PROMPT_COMMAND

答案 4 :(得分:5)

<强> spd-say

sleep 2; spd-say 'get back to work'

如果您需要额外的动力,请使用-w进行无限循环:

sleep 2; while true; do spd-say -w 'get back to work'; done

我想通过软件包speech-dispatcher预先安装在Ubuntu 14.04上: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)" & )

然后:

super-slow-command;b

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

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

相关:How to show a GUI message box from a bash script in linux?

倾听你的冷静

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

答案 5 :(得分:4)

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

say "I'm done"

例如:

sleep 5 && say "I'm done waiting 5 seconds"

答案 6 :(得分:3)

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

rundll32 user32.dll,MessageBeep

它适用于所有版本的Windows。

答案 7 :(得分:0)

在我的bash个人资料中,我已经使用上述@GregReynolds解决方案在脚本中添加了BEEP,然后将其添加到PS1

GREEN="\[\033[0;32m\]"
BEEP=$(echo -en "\007")
export PS1="$GREEN : ${BEEP}"

source ~/.bash_profile-命令提示符返回后,您应该听到哔哔声

我通常使用git-autocomplete,因此我在上面提供了一个简化得多的版本