从Linux终端发送桌面通知和提醒
有时从脚本中获得视觉反馈很有用。例如,当脚本或 cron 作业完成时,长时间运行的构建失败,或者脚本执行期间出现紧急问题。桌面应用程序可以通过弹出通知来做到这一点,但也可以通过脚本来完成!您可以使用脚本命令向自己发送桌面通知和提醒。
图片来源:
(Tomasz Waraksa,CC BY-SA 4.0)
以下代码已在 Linux 上编写和测试。也可以通过一些努力在 macOS 上完成。有关的一些提示和技巧,请参见最后一节。
从Linux终端发送通知
要从 Linux 终端发送通知,请使用notify-send
命令。它通常已作为桌面的一部分安装,但您可以运行which ``notify-send
进行确认。如果尚未安装,请使用您选择的包管理器进行安装。
在 Fedora 和类似的发行版上,输入:
$ sudo dnf 安装 libnotify
在基于 Debian 的发行版上,输入:
$ sudo apt install notify-send
简单通知的几个示例:
$ notify-send "晚餐准备好了!"
$ notify-send "每日小贴士" "小睡一下怎么样?"
您可以使用紧急级别、自定义图标等选项自定义通知。通过man notify-send
了解更多信息。您可以在通知正文中使用一小组 HTML 标记,以使您的消息具有良好的触感。最重要的是,URL 被呈现为可点击的。例如:
$ 通知发送 -u 关键 \
“构建失败!” \
“有 <b>123</b> 个错误。单击此处查看结果:http://buildserver/latest”
图片来源:
(Tomasz Waraksa,CC BY-SA 4.0)
发送的通知会被桌面环境拾取并像任何其他通知一样显示。它们将具有相同的一致外观、感觉和行为。
将 notify-send 与 at 结合使用
Cron 通常用于定期安排命令。at
命令调度一个命令在指定时间的单次执行。如果您像这样运行它,它会以交互模式启动,您可以在其中输入要在给定时间执行的命令:
$ at 12:00
这对脚本没有用。幸运的是,at
接受来自标准输入的参数,因此我们可以这样使用它:
$ echo "npm run build" |现在 + 1 分钟
$ echo "备份数据库" | 13:00
指定时间的方法有很多种。从绝对时间(例如10:00
)到相对时间(例如now + 2 hours
),再到特殊时间(例如noon
或midnight
)。我们可以将它与notify-send
结合起来,在未来的某个时间向自己展示提醒。例如:
$ echo "notify-send 'Stop it and go home now?' 'Enough work for today.' -u critical" | at now
图片来源:
(Tomasz Waraksa,CC BY-SA 4.0)
提醒命令
现在,构建一个自定义 Bash 命令来向自己发送提醒。像这样简单且人性化的东西怎么样:
$ 现在提醒“我还在这里”
$提醒“该起床了!” 5分钟内
$ 1 小时后提醒“晚餐”
$ 提醒中午“休息一下”
$ 提醒“现在是星期五品脱时间!” 17:00
更多 Linux 资源
-
Linux 命令备忘单
-
高级 Linux 命令备忘单
-
免费在线课程:RHEL 技术概述
-
Linux 网络备忘单
-
SELinux 备忘单
-
Linux常用命令备忘单
-
什么是 Linux 容器?
-
我们最新的 Linux 文章
这比 Alexa 好!怎样才能得到这份美好?
请参阅下面的代码。它定义了一个名为 remind 的 shell 函数,它支持上述语法。实际工作在最后两行完成。其余的负责帮助、参数验证等,这与任何大型应用程序中有用代码与必要白噪声的比例大致匹配。
将代码保存在某处,例如,在~/bin/remind
文件中,并在您的.bashrc
配置文件中获取该函数,以便在您登录时加载它:
$ source ~/bin/remind
重新加载终端,然后输入提醒查看语法。享受!
#!/usr/bin/env bash
功能提醒(){
本地 COUNT\u003d"$#"
本地命令\u003d"$1"
本地消息\u003d"$1"
本地 OP\u003d"$2"
班次 2
本地 WHEN\u003d"$@"
# 如果没有参数或帮助命令,则显示帮助
如果 [[ $COUNT -eq 0 || "$COMMAND" u003du003d "帮助" || "$COMMAND" u003du003d "--帮助" || "$COMMAND" u003du003d "-h" ]];然后
回声“命令”
echo " 提醒 <消息> <时间>"
echo " 提醒 <command>"
回声
回声“描述”
echo " 在指定时间显示通知"
回声
回声“示例”
echo ' 现在提醒“你好”
echo ' 提醒“5分钟后醒来”
echo ' 1 小时后提醒“晚餐”'
echo ' 提醒中午“休息一下”
echo ' 提醒“你准备好了吗?” 13:00'
echo ' 提醒列表'
echo ' 提醒清楚'
echo ' 提醒帮助'
回声
返回
菲
# 检查是否存在 AT 命令
如果 !在 >/dev/null;然后
echo "提醒:AT 实用程序是必需的,但未安装在您的系统上。使用您选择的包管理器安装它,例如 'sudo apt install at'。"
返回
菲
# 运行命令:list、clear
如果 [[ $COUNT -eq 1 ]];然后
如果 [[ "$COMMAND" u003du003d "列表" ]];然后
在 -l
elif [[ "$COMMAND" u003du003d "清除" ]];然后
在 -r $(atq | cut -f1)
别的
echo "remind: unknown command $COMMAND. 输入 'remind' 不带任何参数来查看语法。"
菲
返回
菲
# 确定通知时间
如果 [[ "$OP" u003du003d "在" ]];然后
本地时间\u003d"现在 + $WHEN"
elif [[ "$OP" u003du003d "at" ]];然后
本地时间\u003d"$WHEN"
elif [[ "$OP" u003du003d "现在" ]];然后
本地时间\u003d"现在"
别的
echo "提醒:无效的时间运算符 $OP"
返回
菲
# 安排通知
echo "notify-send '$MESSAGE' '提醒' -u 关键" |在 $TIME 2>/dev/null
echo "预定在 $TIME 的通知"
}
简易通知
通过这几个简单的开源命令,您可以将自己的脚本、应用程序和任务与您的桌面集成。试试看!
本文经作者许可改编自原文,在此处找到.
更多推荐
所有评论(0)