终端程序运行完毕时发出警报?

终端程序运行完毕时发出警报?

我正在运行 Xubuntu 15.04,但也许这个问题对所有 Ubuntu 版本都有一个通用的解决方案。

我通常会在终端窗口中运行长时间的计算,这可能需要几分钟、几小时或几天的时间。如果能在终端完成执行命令时以某种方式提醒我,那就太好了。这应该只对最小化的终端是必要的。

有没有办法设置这样的功能?理想情况下,终端窗口可以闪烁,或者可能会出现通知。

答案1

有几种方法,都使用&&(逻辑 AND)运算符(仅在最后一个命令成功时运行)。如果您想无论命令成功还是失败都运行通知,请使用分号;代替&&

  1. 图形化

    myscript.sh && notify-send 'DONE'
    
  2. 声音的:

    myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav
    

    请注意,您可以使用任何音频文件,而不是我在此处使用的音频文件。

  3. 两个都:

     myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav && notify-send 'DONE !'
    

答案2

您可以使用禅意显示弹出窗口。

在 shell 命令之后附加

&& zenity --info --text "STRING"

答案3

我建议使用 libnotifynotify-send进行通知。我创建了以下脚本来执行此操作:

#!/bin/bash
$1 && \
notify-send -u critical -i info 'Command execution finished' "The command '$1' terminated successfully" || \
notify-send -u critical 'Command execution failed' "The command '$1' exited with errors"

如果你将上述脚本保存在名为 eg 的文件中nexec,并使用 使其可执行chmod +x nexec,并将程序移动到 shellPATH变量中的目录(例如/usr/local/bin/),则可以使用

nexec 'long-time-command some arguments'

例如

nexec 'sudo apt-get update && apt-get dist-upgrade'

libnotify 将(至少在我的系统上是这样的,我假设不同的桌面可能会有所不同)显示标记为“关键”的通知,直到手动关闭它们(例如通过单击它们)。正如您从代码中可以看出的那样,如果命令返回非零结果,您将收到不同的通知。

答案4

你可曾听说不分散我的注意力?它似乎符合您的需求,并且它的代码在github

我认为该软件包在官方的 Ubuntu 存储库中,所以应该足够了

sudo apt-get install undistract-me

然后你必须关闭并重新打开任何终端,只是为了让更改生效,你可以用一个简单的

sleep 11

记得更改您的活动窗口,否则您将看不到任何通知。

相关内容