关于zsh:MacOS-下-zsh-执行长时间命令完成后自动提醒
前言最近正在应用 Warp 作为罕用的终端,有一些细节体验做的真的很不错,无论是命令提醒还是补全都很厉害。其中有一个细节我认为对于我来说十分实用,就是长时间执行实现之后的命令揭示。 举个例子:当你在终端进行 make 编译或者打包镜像的时候,往往须要比拟长的工夫,而你个别不会始终等着它执行实现,而是执行实现之后就切到别的中央去工作(摸鱼)了,而后你无奈及时晓得命令执行实现了,而只能是不是过去看下执行状况。 而在 warp 执行命令实现之后,就有这样一个告诉揭示,我就能时刻关注到命令什么时候执行实现了。 当然,这必须依赖于你应用 warp,但咱们经常在 IDE 下方的命令行中执行命令,而非独自应用其余终端,因为切换窗口也比拟麻烦。于是乎我就想,是否利用 zsh 来实现这个性能呢? 实现vim ~/.zshrc# 设置要匹配的字符串string_to_match=("docker build" "go build" "echo linkinstar")# 定义函数function remind_me { # 获取上一个命令 previous_command=$(fc -lnr -1) # 查看上一个命令是否蕴含要匹配的字符串 for string in $string_to_match; do if [[ $previous_command == *"$string"* ]]; then osascript -e 'display notification "命令已执行实现" with title "命令揭示" sound name "Blow"' fi done}# 增加add-zsh-hookadd-zsh-hook precmd remind_mesource ~/.zshrcecho linkinstar 其实原理非常简单,就是通过 add-zsh-hook 的钩子,在执行命令之之前(以后命令执行完结)判断,上一个命令是否在我的匹配列表中,如果这个命令须要提醒则应用 osascript 进行提醒,其中通过 fc -lnr -1 获取上一个执行的命令。 ...