백틱 셸 명령과 함께 Expandos를 사용하는 방법

백틱 셸 명령과 함께 Expandos를 사용하는 방법

내 기사에서는 다음과 같이 시뮬레이션된 Outlook 스타일의 메시지 인용문을 설정했습니다 .muttrc.attribution

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.

관련 정보