Esta tarefa do cron faz o que você especificou diariamente à meia-noite:
0 0 * * * script >/dev/null -c 'env TERM=vt100 mutt -F/dev/null -falerts -e "push <delete-pattern>[email protected]<enter><sync-mailbox>y<enter><exit>"' /dev/null
Vamos quebrar isso.
script -c 'cmd' corre cmd sob uma falsa pseudo-tty (pty), de modo que cmd acha que tem um terminal com mobilidade de cursor e tal. Mutt precisa disso, mas seu trabalho no cron não pode ter isso. Script fornece o calço. O trabalho usual do script é gravar uma sessão de comando em um arquivo. Seu argumento final, /dev/null , diz para gravar o registro no dispositivo nulo, já que você provavelmente não se importa com um monte de eventos curses replayable.
env TERM=vt100 ... significa colocar um terminal vt100 no ambiente antes de executar o mutt. Você precisa disso porque as tarefas do cron não têm um tipo de terminal natural (já que elas não têm naturalmente um terminal).
Tudo o resto faz parte do mutt. Usamos -F/dev/null para garantir que seu .muttrc não seja lido. Não há nada de errado em lê-lo, mas mudanças em seu muttrc podem mudar a maneira como a interação com o mutt vai. É mais seguro, a longo prazo, usar apenas o padrão muttrc, que é o que o -F/dev/null faz.
A opção -e diz ao mutt o que fazer quando é executado. Os argumentos para -e são comandos que você pode colocar em um arquivo muttrc: set , alternatives , bind , hdr_order , etc. Push é um comando que "pressiona" pressionamentos de teclas no buffer do teclado , então o mutt interpreta o que segue como se você tivesse digitado.
Agora vamos ver as teclas virtuais.
<delete-pattern>[email protected]<enter> equivale a pressionamentos de tecla [email protected] mais ENTER, mas usa símbolos de vinculação de teclado em vez de pressionamentos de tecla reais. Essa é uma prática recomendada para macros e para pushes, porque ela isola seu script em relação a alterações de atalhos padrão ou pessoais. Você pode obter símbolos de ligação de chaves da ajuda interativa. Todos os nomes na coluna do meio (que você usa com a instrução bind ) são nomes de símbolos.
<sync-mailbox> é equivalente a pressionar $ , novamente com o símbolo de chave em vez do pressionamento de tecla. y<enter> responde ao "Tem certeza?" prompt.
Finalmente, <exit> sai do mutt. Isso também encerra sua sessão script e seu comando cron termina. O >/dev/null , de costume com o cron, impede que qualquer ruído do cron assedie sua caixa de correio.
Observe que toda a string push é citada! Isso é importante. Felizmente, só precisamos de duas camadas de citações, para que possamos usar aspas duplas dentro de singles sem nenhuma citação ridícula.