首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从终端设置定时提醒。

从终端设置定时提醒。
EN

Software Recommendation用户
提问于 2021-08-25 20:22:22
回答 1查看 294关注 0票数 1

我如何在我的终端中发出一个shell命令,一旦一个给定的时间过去了,它就会用通知通知我?

为了说得更具体一点,我要找的是:

  • 我只需要一个关闭警报,而不是重复。例如,systemd计时器具有这样的功能,但是每次都必须创建一个完整的systemd单元和计时器(然后不得不删除它)太不切实际了。
  • 一个简单的CLI,所以我可以做一些类似remindme "3 hours" "see if thing x has finished yet"的事情,而不必做太多复杂的shell魔术。如果失败了,如果它至少可以被一个脚本包装,那就更好了。
  • 如果通知只是供我阅读的字符串,就足够了。
  • 跨平台:它至少应该在Linux和Mac上工作。
  • 通知不应该要求我打开shell。
  • 如果通知是通过GUI发出的,它至少应该支持Xorg和Mac。我假设这将类似于气球弹出或对话框;这应该支持不同的DEs,而不是强迫我使用Gnome。
  • 如果通知是通过终端发出的,如果它在TTY (没有Xorg)和X下的终端仿真器中都能工作,那就更好了。
  • 通知不一定要在点上,例如,如果我将它设置为1小时,它实际上在63分钟后发出通知,这没关系。
  • 我不应该运行命令来检查通知,因为我不可避免地会忘记这样做。例如,任务战士支持各种定时任务,但在运行task next之前我不会看到这些任务。
  • 它不应该使我的时间延迟过大。例如,如果我试图向bashrc添加一个checkreminders命令,那么启动一个新的shell并查看通知可能需要很长时间。像alias ls=checkreminders && ls这样的东西也是如此。
  • 它不应依赖于外部服务。或我的gmail帐户)。例如,Slack有一个提醒机器人,但我不想一直在每台计算机上运行Slack,这样我就可以使用通知。
  • 我更喜欢依赖度最小的情况,而且我不需要在每台我想要使用它的计算机上安装大量的大型程序。在软件包管理器中广泛使用的较小的CLI程序是可以的,如果它们在默认情况下附带大多数Linux发行版,甚至更好。
EN

回答 1

Software Recommendation用户

发布于 2021-09-03 08:09:27

Usage: remindme -t "3m 1s" -m "I have to do homework"时间可以是简单的数字表示第二,或有后缀s,m,h或d。参阅手册页的GNU睡眠。对于macOS,您需要将时间转换为秒,或者编写一个函数来这样做。

解决方案1:使用墙壁。在Linux上工作,无论是图形化的还是非图形化的,都应该在macOS上工作,至少是非图形化的.

代码语言:javascript
复制
#!/bin/bash
while getopts "t:m:" optname; do
case $optname in
t)
time=${OPTARG}
;;
m)
message=${OPTARG}
;;
esac
done
coproc (sleep $time && wall $message)

解决方案2.1:用于Linux和Windows的桌面通知,需要libnotify提供的D3

代码语言:javascript
复制
#!/bin/bash
while getopts "t:m:" optname; do
case $optname in
t)
time=${OPTARG}
;;
m)
message=${OPTARG}
;;
esac
done
coproc (sleep $time && notify-send -a Reminder "$message")

解决方案2.2: macOS的桌面通知。还没测试过。

代码语言:javascript
复制
#!/bin/bash
while getopts "t:m:" optname; do
case $optname in
t)
time=${OPTARG}
;;
m)
message=${OPTARG}
;;
esac
done
coproc (sleep $time && osascript -e 'display notification "$message" with title "Remainder"')
票数 0
EN
页面原文内容由Software Recommendation提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwarerecs.stackexchange.com/questions/80338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档