终端程序运行结束时发出警报?

bec*_*cko 25 xubuntu command-line xfce4-terminal

我正在运行 Xubuntu 15.04,但也许这个问题有适用于所有 Ubuntu 风格的通用解决方案。

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

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

Ser*_*nyy 34

有几种方法,都使用&&(逻辑与)运算符(仅在最后一个命令成功时运行)。如果你想不管命令是成功还是失败都运行通知,请使用分号;而不是&&.

  1. 图形化

    myscript.sh && notify-send 'DONE'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 声音的:

    myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,您可以使用任何音频文件,而不是我在这里使用的那个。

  3. 两个都:

     myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav && notify-send 'DONE !'
    
    Run Code Online (Sandbox Code Playgroud)


Bac*_*con 12

您可以使用zenity来显示弹出窗口。

在您的 shell 命令之后,追加

&& zenity --info --text "STRING"
Run Code Online (Sandbox Code Playgroud)


s3l*_*lph 5

我建议使用 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"
Run Code Online (Sandbox Code Playgroud)

如果将上面的脚本保存在名为 例如 的文件中,nexec并使用 使其可执行chmod +x nexec,并将程序移动到 shellsPATH变量中的目录(例如/usr/local/bin/),则可以使用以下命令运行任何命令

nexec 'long-time-command some arguments'
Run Code Online (Sandbox Code Playgroud)

例如

nexec 'sudo apt-get update && apt-get dist-upgrade'
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢!“-u critical”使通知持续存在,直到我们单击它。 (2认同)

Max*_*nni 5

你听说过“不分散我的注意力”吗?看来它符合您的需求,并且其代码位于github上。

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

sudo apt-get install undistract-me
Run Code Online (Sandbox Code Playgroud)

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

sleep 11
Run Code Online (Sandbox Code Playgroud)

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