如何在 shell 提示中放置未读邮件

Sur*_*ani 5 email zsh shell apple-mail macos

我正在使用 OS X,我想知道我的 Mail.app 中是否有任何未读邮件?我想把这个数字放在我的 shell 提示中。

我该怎么做?

slh*_*hck 5

首先,按照此处的说明设置提示以执行替换:Get Function Into PS1 (Zsh)?
只需在您的.zshrc文件中附加以下内容。

setopt PROMPT_SUBST
Run Code Online (Sandbox Code Playgroud)

然后,找到一个 AppleScript 来计算您的未读邮件,例如来自马特·斯温的 Geeklets 的这个。下载.scpt文件,并将其放在某个地方,比如~/Scripts/mail_count.scpt

请注意,需要运行 Mail.app 才能使所有这些工作正常进行。在您的 中.zshrc,创建一个调用 AppleScript 的函数:

function mail_count {
  osascript ~/Scripts/mail_count.scpt
}
Run Code Online (Sandbox Code Playgroud)

最后,根据新函数重新定义提示。以下是最基本的方法——但可以根据需要随意添加自己的变量

PROMPT='$(mail_count) '
Run Code Online (Sandbox Code Playgroud)

如果您不想弄乱您的提示或使用 oh-my-zsh 样式之一,甚至promptinit模块,您也可以只使用该precmd()函数,在该函数中您可以定义在执行另一个命令之前应该运行的任何内容. 在这种情况下,您将不需要该PROMPT_SUBST选项。

precmd() {
  mail_count
}
Run Code Online (Sandbox Code Playgroud)

无论您使用哪种方法,您的未读邮件计数都将以纯文本形式输出。如果要更改消息,请查看.scpt文件的来源并相应地进行修改。