如何让终端在执行完某条命令后推送提醒通知我们执行完成?

最简单的方法自然是使用 say 命令跟在命令后面,例如:

brew cask install mactex ; say done

但是有时候做一些其他事情,比如编译一个东西,会花费非常长的时间,我会在这个时间出去玩一玩或者骑骑车但是又想在完成的第一时间继续去忙这些事情,显然使用 say 命令就起不到什么帮助了。

于是我们就可以请出 Bark 来帮我们实现这个需求,首先需要在 iOS 端上下载好 Bark 获取自己设备的唯一标识符,就是图中我部分涂黑的部分,例如:

https://api.day.app/mAqJxxxxxxxxz6KxVkL/done

mAqJxxxxxxxxz6KxVkL/ 就是我设备的标识符了,而后面再接上的 done 就是提示的内容

接着我们在终端中试试使用 curl 去与上面的 http 发送一个请求:

curl https://api.day.app/mAqJxxxxxxxxz6KxVkL/done

如果没错就会在 iOS 上收到一条推送。

于是我们再把它和需要执行的命令使用「;」连接即可在前面一条命令执行完成后给 iOS 推送完成通知。将我们前面提到的安装 mactex 的例子稍加修改就是:

brew cask install mactex ; curl https://api.day.app/mAqJxxxxxxxxz6KxVkL/done

终端就会在第一条命令执行之后给我们推送通知,注意使用「;」连接代表不论前面一条命令是否成功执行都会接着执行后面的一条命令,避免第一条命令没有成功执行而不去执行后面的一条命令。


注:如果你是经常需要使用到这个功能,可以在当前使用的 shell 的 profile 中添加一句 alias,我个人使用的 zsh 的 shell,所以需要在用户目录下的 .zshrc 文件中添加:

alias ok='curl https://api.day.app/mAqJxxxxxxxxxx6KxVkL/Done'

然后在终端中输入以及命令使新配置生效:

source ~/.zshrc

我们就可以简单地输入「ok」代替原来长长地一串命令,例如:

brew cask install mactex ; ok