我已经通过终端启动了一个很长的过程。是否可以让 Ubuntu 终端在过程完成后发出声音?这样,我就不需要继续检查,而是通过声音通知我。
答案1
我用
make; spd-say done
将“make”替换为您使用的任何长时间运行的命令。
答案2
至少有三种命令行方式可以实现这一点,通过将适合的命令放在脚本的末尾,您可以在漫长的过程中调用这些命令:
播放声音的“经典”方式是使用嘟。
哔声会通过 PC 扬声器发出声音。但是,这并非在所有情况下都有效(例如,在我的系统中,PC 扬声器完全被禁用)您可能需要删除
pcspkr
并/etc/modprobe/blacklist.conf
加载pcspkr
内核模块:sudo sed -i 's/blacklist pcspkr/#blacklist pcspkr/g' /etc/modprobe.d/blacklist.conf sudo modprobe pcspkr beep [optional parameters]
我们还可以使用 aplay(默认安装)播放任何 wav 格式的声音文件:
aplay /usr/share/sounds/alsa/Side_Right.wav
另一种方法是使用 pulseaudio 命令行界面来启用系统(在 中
libsndfile
)在默认音频输出上识别的任何声音文件的播放:paplay /usr/share/sounds/freedesktop/stereo/complete.oga
我们可以使用来自的默认声音文件/usr/share/sounds/
,或者我们可能在不同位置拥有的任何其他声音文件。
顺便提一下,还有另一种很好的方法来实现这一点,那就是滥用说话,在 Ubuntu <= 12.04 中默认安装。请参阅或听以下示例:
#! /bin/bash
c=10; while [ $c -ge 0 ]; do espeak $c; let c--; done; sleep 1 ## here lengthy code
espeak "We are done with counting"
在 Ubuntu >= 12.10 中,Orca 使用 talk-dispatcher。然后我们可以安装说话,或者使用spd-say "Text"
。
答案3
根据这该\a
字符转义 ASCII 代码 7,这是计算机的哔声。
因此,echo $'\a'
即使它是在通过 PuTTY 等终端界面连接到的计算机上运行的 bash shell 上执行的,也可以在我的本地机器上发出哔哔声。
答案4
扩展 Michael Curries 的答案,您可以让 Bash 通过以下方式打印BEL
( \a
) 字符PROMPT_COMMAND
:
PROMPT_COMMAND='printf \\a'
这样设置PROMPT_COMMAND
将使 Bashprintf \\a
在每个命令结束时执行,这将使终端播放声音(尽管正如 muru 指出的那样,只需触发提示的重新绘制就会使终端播放声音,即每次绘制新的提示时都会播放声音,例如即使只是点击ENTER)。
这是一个终端功能,因此它可能无法在所有终端上运行;例如它在控制台中不起作用(但我确信它在gnome-terminal
和 中起作用xterm
)。