Os comandos do shell são executados quando a configuração é lida, não toda vez que você responde. Você pode ver isso digitando
set attribution="Date: 'date'"
Isso nunca muda. E, claro, os expandos não são expandidos naquele momento.
Existe uma maneira: se você terminar a string com um |
, o mutt assume que é um comando e apenas o executa e usa sua saída (a documentação diz que canaliza os argumentos através do primeiro palavra, mas isso é uma mentira).
O problema é que não há nenhum comando unix (que eu saiba) que aplique um regex em seus argumentos e produza o resultado. sed
, por exemplo, só funciona em arquivos ou stdin.
Você precisa criar esse comando você mesmo. Em Perl, seria algo assim:
#!/usr/bin/perl
my $regexp = shift;
my @out;
for (@ARGV) {
eval $regexp;
push @out, $_;
}
print join " ", @out;
Digamos que você coloque isso no seu caminho e nomeie-o como r.pl
(lembre-se de chmod-x), então você pode definir sua atribuição desta maneira:
set attribution="r.pl 's/^To /To: /m' 'From: %n\n%t\netc...\n'|"
Dê uma olhada no man perlre
para descobrir por que você precisa encerrar o regexp com /m
.
HTH.