バックティックシェルコマンドでExpandosを使用する方法

バックティックシェルコマンドでExpandosを使用する方法

私の記事では、次のようにシミュレートされたOutlookスタイルのメッセージ引用符を設定しました.muttrcattribution

set attribution="\n\n-----Original Message-----\nFrom: %f\nSent: %d\n%t\nSubject: %s\n"

ただし、%tExpandoは「To」の後にコロンなしで「To Persons_Name」と評価されるため、シェルコマンドを介して実行してコロンを追加しようとします。バックティックを使用してシェルコマンドを実行できますが、%tシェルコマンドからExpando値を取得する方法がわかりません。私はこれを試しましたがうまくいきません:

set attribution="\n\n-----Original Message-----\nFrom: %f\nSent: %d\n`echo %t | sed s/^To/To:/`\nSubject: %s\n"

答え1

シェルコマンドは、各応答ではなく構成設定を読み取ると実行されます。表示するには入力してください

 set attribution="Date: `date`"

決して変わらないでしょう。もちろん、現在Expandosは拡張されていません。

方法があります:文字列をaで終わると、|muttはそれがコマンドであると仮定してそれを実行し、その出力を使用します(文書には次のように表示されます)。管路最初の言葉による主張ですが、それは嘘です)。

問題は、引数に正規表現を適用して結果を出力できる(私が知っている)unixコマンドがないことです。sedたとえば、ファイルまたは標準入力でのみ機能します。

このコマンドはユーザーが直接作成する必要があります。 Perlでは:

#!/usr/bin/perl

my $regexp = shift;
my @out;
for (@ARGV) {
  eval $regexp;
  push @out, $_;
}

print join " ", @out;

パスに入れて名前を付けると仮定するとr.pl(chmod-xを覚えておいてください)、次のようにプロパティを設定できます。

set attribution="r.pl 's/^To /To: /m' 'From: %n\n%t\netc...\n'|"

man perlre正規表現を終了する理由を学びます/m

HTH。

関連情報