Sti*_*ley 5 scripting email mutt
我有一个 mbox 格式的任意电子邮件文件。我想定期(周末),并自动(通过 cron)从我的“警报”mbox 文件(新文件夹)中清除来自一个发件人(或具有特定主题)的消息,因为一个发件人让我们称之为“ syscheck@example.com' 每天发送数十条消息。
我想cron这个所以每天它会做我手动输入的 mutt -f alerts; D; syscheck@example.com; $; y (purge)
.procmailrc
不是一个选择,因为我必须首先浏览它们。一旦我略过它们就可以了。在一周结束时,不再需要它们,并希望将它们移除。
这个 cron 作业每天午夜执行您指定的操作:
0 0 * * * script >/dev/null -c 'env TERM=vt100 mutt -F/dev/null -falerts -e "push <delete-pattern>syscheck@example.com<enter><sync-mailbox>y<enter><exit>"' /dev/null
Run Code Online (Sandbox Code Playgroud)
让我们来分解一下。
script -c 'cmd'
cmd
在假伪终端(pty)下运行,因此cmd
认为它有一个具有光标移动性等的终端。Mutt 需要这个,但你的 cron 作业不能拥有它。脚本提供垫片。脚本的通常工作是将命令会话记录到文件中。它的最后一个参数/dev/null
表示将记录写入空设备,因为您可能不关心一堆可重播的诅咒事件。
env TERM=vt100
... 表示在运行 mutt 之前将 vt100 终端放入环境中。您需要这个,因为 cron 作业没有自然的终端类型(因为它们自然没有终端)。
其他一切都是 mutt 的一部分。我们用它-F/dev/null
来确保您的内容.muttrc
不被阅读。阅读它并没有什么问题,但是 muttrc 中的更改可能会改变 mutt 交互的方式。从长远来看,仅使用默认的 muttrc 更安全,事实也确实如此-F/dev/null
。
该-e
选项告诉 mutt 在运行时要做什么。其参数-e
是可以放入 muttrc 文件中的命令:set
、alternatives
、bind
、hdr_order
等 Push
是将击键“推入”键盘缓冲区的命令,以便 mutt 解释接下来的内容,就好像您已经键入了它一样。
现在让我们看看虚拟按键。
<delete-pattern>syscheck@example.com<enter>
相当于按键Dsyscheck@example.com
加 ENTER,但它使用键盘绑定符号而不是实际的按键。这是宏和推送的最佳实践,因为它可以使您的脚本免受默认或个人键绑定更改的影响。您可以从交互式帮助中获取按键绑定符号。中间列中的所有名称(与语句一起使用bind
)都是符号名称。
<sync-mailbox>
相当于$
再次按 键符号而不是按键。 y<enter>
回应“你确定吗?” 迅速的。
终于,<exit>
放弃了。这也会终止您的script
会话,并且您的 cron 命令结束。与 cron 一样,它>/dev/null
可以防止 cron 的任何噪音骚扰您的邮箱。
请注意,整个push
字符串都被引用了!这很重要。幸运的是,我们只需要两层引用,因此我们可以在单引号内使用双引号,而不会出现任何可笑的引号转义。