Linux使用终端工具给你的电脑发送弹窗提醒!

2025-05-27 0 69

Linux使用终端工具给你的电脑发送弹窗提醒!

大家好,我是良许。

现在人手一部智能手机,这些智能手机都有个非常实用的功能,那就是弹窗提醒。当我们收到短信,或者微信信息时,手机就会弹窗显示信息的大致内容。有了这个功能你就不会错过重要信息了。

电脑上也有类似的功能,也很实用。但这个功能都是系统级别,我们能不能通过脚本方式去调用这个弹窗功能呢?

答案是肯定的!

例如,当脚本或 cron 任务完成时,长时间运行的编译任务失败,或者脚本执行过程中出现紧急问题,这些情况下如果能在电脑上弹出一条提醒,肯定会让隔壁的美女同事刮目相看!

Linux使用终端工具给你的电脑发送弹窗提醒!

以下代码已在 Linux 系统上编写并测试通过,也可以移植到 Mac 电脑上。

Linux 终端发送弹窗通知

要从 Linux 终端发送通知,需要使用 notify-send 命令。这个命令大部分发行版都没有默认安装,需要我们自行动手。

在 Fedora 上,输入:

  1. $sudodnfinstallnotify-send

在基于 Debian 的发行版上,键入:

  1. $sudoaptinstallnotify-send

几个简单弹窗通知的例子:

  1. $notify-send"liangxuisgreat!!"
  2. $notify-send"welcometoliangxu'swebsite""www.lxlinux.net"

这个命令不仅支持弹窗,还可以修改紧急程度、自定义图标等。更多信息可以通过 man notify-send 来查询。

你还可以在通知正文中使用一小段 HTML 标记来为你的信息增加一些格式,比如:加粗、斜体,等等。最重要的是,URL 还支持点击,非常方便。例如:

  1. $notify-send-ucritical\\
  2. "Buildfailed!"\\
  3. "Therewere<b>123</b>errors.Clickheretoseetheresults:http://buildserver/latest"

Linux使用终端工具给你的电脑发送弹窗提醒!

发送的通知跟系统的其它通知样式一样,外观、行为并无二致。

结合 at 命令使用 notify-send

cron 命令通常用于定期调度任务,at 命令则是在指定时间单次执行指定命令。如果你像下面这样运行 at 命令,它会以交互模式启动,然后你可以在其中输入你要执行的命令:

  1. $at12:00

但我们一般不这么使用它。

at 命令可以接受来自标准输入的参数,例如:

  1. $echo"npmrunbuild"|atnow+1minute
  2. $echo"backup-db"|at13:00

熟练使用 Linux 的小伙伴都知道,我们有多种指定时间的方法。

  • 绝对时间,例如 10:00
  • 相对时间,例如 now + 2 hours
  • 特殊时间,例如 noon 或 midnight

利用 at 命令的这些特性,我们可以将它与 notify-send 命令结合使用,达到在未来的某个时间弹窗提醒的效果。例如:

  1. $echo"notify-send'Stopitandgohomenow?''Enoughworkfortoday.'-ucritical"|atnow

Linux使用终端工具给你的电脑发送弹窗提醒!

编写脚本实现弹窗通知功能

现在我们知道 nofity-send 怎么玩了,但每次都要敲这么长的一串命令还是很不方便。

作为程序员,我们能偷懒就偷懒,自己动手写脚本把这个功能封装起来!

比如我们把它封装成一个 Bash 命令 remind ,然后通过下面方式来调用它:

  1. $remind"I'mstillhere"now
  2. $remind"Timetowakeup!"in5minutes
  3. $remind"Dinner"in1hour
  4. $remind"Takeabreak"atnoon
  5. $remind"It'sFridaypintstime!"at17:00

简直太特么方便了!

实现起来也很简单,我们可以将脚本保存在某个位置,例如,在 ~/bin/ 目录中,并在 .bashrc 配置文件中让它生效,以便在登录时加载它:

  1. $source~/bin/remind

脚本内容如下:

  1. #!/usr/bin/envbash
  2. functionremind(){
  3. localCOUNT="$#"
  4. localCOMMAND="$1"
  5. localMESSAGE="$1"
  6. localOP="$2"
  7. shift2
  8. localWHEN="$@"
  9. #Displayhelpifnoparametersorhelpcommand
  10. if[[$COUNT-eq0||"$COMMAND"=="help"||"$COMMAND"=="–help"||"$COMMAND"=="-h"]];then
  11. echo"COMMAND"
  12. echo"remind<message><time>"
  13. echo"remind<command>"
  14. echo
  15. echo"DESCRIPTION"
  16. echo"Displaysnotificationatspecifiedtime"
  17. echo
  18. echo"EXAMPLES"
  19. echo'remind"Hithere"now'
  20. echo'remind"Timetowakeup"in5minutes'
  21. echo'remind"Dinner"in1hour'
  22. echo'remind"Takeabreak"atnoon'
  23. echo'remind"Areyouready?"at13:00'
  24. echo'remindlist'
  25. echo'remindclear'
  26. echo'remindhelp'
  27. echo
  28. return
  29. fi
  30. #CheckpresenceofATcommand
  31. if!whichat>/dev/null;then
  32. echo"remind:ATutilityisrequiredbutnotinstalledonyoursystem.Installitwithyourpackagemanagerofchoice,forexample'sudoaptinstallat'."
  33. return
  34. fi
  35. #Runcommands:list,clear
  36. if[[$COUNT-eq1]];then
  37. if[["$COMMAND"=="list"]];then
  38. at-l
  39. elif[["$COMMAND"=="clear"]];then
  40. at-r$(atq|cut-f1)
  41. else
  42. echo"remind:unknowncommand$COMMAND.Type'remind'withoutanyparameterstoseesyntax."
  43. fi
  44. return
  45. fi
  46. #Determinetimeofnotification
  47. if[["$OP"=="in"]];then
  48. localTIME="now+$WHEN"
  49. elif[["$OP"=="at"]];then
  50. localTIME="$WHEN"
  51. elif[["$OP"=="now"]];then
  52. localTIME="now"
  53. else
  54. echo"remind:invalidtimeoperator$OP"
  55. return
  56. fi
  57. #Schedulethenotification
  58. echo"notify-send'$MESSAGE''Reminder'-ucritical"|at$TIME2>/dev/null
  59. echo"Notificationscheduledat$TIME"
  60. }

好好玩玩吧!

原文链接:https://mp.weixin.qq.com/s/ln-YHil-eDkuXh-Sf4VtKQ

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Linux使用终端工具给你的电脑发送弹窗提醒! https://www.kuaiidc.com/60789.html

相关文章

发表评论
暂无评论