我正在使用 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
我发现这是最有效的。