bec*_*cko 25 xubuntu command-line xfce4-terminal
我正在运行 Xubuntu 15.04,但也许这个问题有适用于所有 Ubuntu 风格的通用解决方案。
我通常会在终端窗口中运行长时间的计算,这可能需要几分钟、几小时或几天。如果终端完成执行命令时能以某种方式提醒我,那就太好了。这应该只对最小化的终端是必要的。
有没有办法设置这样的东西?理想情况下,终端窗口可能会闪烁,或者可能会出现通知。
Ser*_*nyy 34
有几种方法,都使用&&
(逻辑与)运算符(仅在最后一个命令成功时运行)。如果你想不管命令是成功还是失败都运行通知,请使用分号;
而不是&&
.
图形化
myscript.sh && notify-send 'DONE'
Run Code Online (Sandbox Code Playgroud)声音的:
myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav
Run Code Online (Sandbox Code Playgroud)
请注意,您可以使用任何音频文件,而不是我在这里使用的那个。
两个都:
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)
我建议使用 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 将(至少在我的系统上这样做,我认为不同的桌面之间可能有所不同)显示标记为“关键”的通知,直到它们被手动关闭(例如通过单击它们)。从代码中可以看出,如果命令返回非零结果,您将收到不同的通知。
你听说过“不分散我的注意力”吗?看来它符合您的需求,并且其代码位于github上。
我认为该软件包位于官方 Ubuntu 存储库中,所以应该足够了
sudo apt-get install undistract-me
Run Code Online (Sandbox Code Playgroud)
然后你必须关闭并重新打开你拥有的任何终端,只是为了让更改生效,你可以用一个简单的测试它
sleep 11
Run Code Online (Sandbox Code Playgroud)
请记住更改您的活动窗口,否则您将看不到任何通知。