如何在 shell 提示符中显示未读邮件消息

如何在 shell 提示符中显示未读邮件消息

我正在使用 OS X,我想知道我的 Mail.app 中是否有未读邮件?我想将该数字输入到我的 shell 提示符中。

我该怎么办?

答案1

首先,设置提示以执行替换,如下所述:将函数放入 PS1(Zsh)?
只需在您的文件中附加以下内容.zshrc

setopt PROMPT_SUBST

然后,找到一个可以统计未读邮件的 AppleScript,例如这是 Matt Swain 的 Geeklets 上的。 下载文件.scpt并将其放在某处,例如~/Scripts/mail_count.scpt

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

function mail_count {
  osascript ~/Scripts/mail_count.scpt
}

最后,根据新功能重新定义提示。以下是最基本的方法 - 但您可以随意添加你自己变量如所须:

PROMPT='$(mail_count) '

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

precmd() {
  mail_count
}

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

答案2

set output_string to ""
tell application "Mail"
    set Unread_Count to unread count of inbox
    if Unread_Count is 0 then
        set output_string to ""
    else if Unread_Count is 1 then
        set output_string to "1 message"
    else
        set output_string to ("" & (get Unread_Count) & " messages")
    end if
end tell
return output_string

我发现这是最有效的。

相关内容