如何在过程完成后发出声音?

如何在过程完成后发出声音?

我已经通过终端启动了一个很长的过程。是否可以让 Ubuntu 终端在过程完成后发出声音?这样,我就不需要继续检查,而是通过声音通知我。

答案1

我用

make; spd-say done

将“make”替换为您使用的任何长时间运行的命令。

答案2

至少有三种命令行方式可以实现这一点,通过将适合的命令放在脚本的末尾,您可以在漫长的过程中调用这些命令:

  1. 播放声音的“经典”方式是使用

    哔声会通过 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]
    
  2. 我们还可以使用 aplay(默认安装)播放任何 wav 格式的声音文件:

     aplay /usr/share/sounds/alsa/Side_Right.wav
    
  3. 另一种方法是使用 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)。

相关内容