Как использовать команду expandos в команде backtick shell

В моем .muttrc меня есть attribution предназначенная для эмуляции сообщения в стиле Outlook, которое выглядит следующим образом:

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

Тем не менее, %t expando оценивает значение «To Persons_Name» без двоеточия после «To», поэтому я хотел бы запустить его через команду оболочки, чтобы добавить двоеточие. Я могу использовать backticks для запуска команды оболочки, но я не могу понять, как получить значение %t expando в команде оболочки. Я пробовал это, но он не работает:

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

  • mutt: как отображать выбранные новые сообщения по-разному в индексе
  • Непрерывное использование mutt
  • Как я могу изменить папку «save» по умолчанию в Mutt?
  • mutt: возврат к индексу после удаления или сохранения сообщения в представлении пейджера
  • Могу ли я создать макрос mutt для ответа и архивации?
  • Какой .muttrc работает на Red Hat 5.11?
  • Особая проблема с mutt & my_hdr От:
  • Как я могу использовать mutt execute command tag-pattern, а затем delete-pattern через shell?
  • One Solution collect form web for “Как использовать команду expandos в команде backtick shell”

    Команды оболочки выполняются при чтении настроек конфигурации, а не каждый раз, когда вы отвечаете. Вы можете видеть, что, введя

      set attribution="Date: `date`" 

    Это никогда не меняется. И, разумеется, в этот момент расширения не расширяются.

    Есть способ: если вы закончите строку с | , mutt предполагает, что это команда, и просто выполняет ее и использует свой вывод (в документации говорится, что она передает аргументы через первое слово, но это ложь).

    Проблема в том, что нет никакой команды unix (которая я знаю), которая применяет регулярное выражение к его аргументам и выводит результат. sed , например, работает только с файлами или stdin.

    Вы должны сами создать эту команду. В Perl это было бы примерно так:

     #!/usr/bin/perl my $regexp = shift; my @out; for (@ARGV) { eval $regexp; push @out, $_; } print join " ", @out; 

    Предположим, вы положили это на свой путь и r.pl его r.pl (не забудьте chmod-x it), тогда вы можете установить свою атрибуцию таким образом:

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

    Взгляните на man perlre чтобы узнать, почему вам нужно закончить регулярное выражение с помощью /m .

    НТН.

    Interesting Posts

    Как запустить команду hdparm после загрузки и возобновить работу с Fedora 19?

    / bin / sh: определение функции импорта ошибок для `some-function '

    ошибка монтирования (13): разрешение отклонено

    Две точные копии папки с использованием только FTP и командной строки

    Есть ли способ изменить количество процессоров, которые видит программа?

    Маршрутизация локальной сети через OpenVPN на OpenBSD 5.5

    Как изменить текстовый редактор по умолчанию в дистрибутиве Debian (сжатие)

    Как cat / dev / ttyUSB0 в новый файл ежедневно

    Samba Поделиться: Вход для гостей не работает после Wheezy -> Jessie

    Как настроить NAT на хосте для виртуальных машин в Fedora 23 с помощью Firewalld, чтобы сделать их видимыми для других устройств в сети?

    Восстановление из «chmod -R 777 /» в Ubuntu

    Ranger cd в папку?

    Whoami: не может найти имя для идентификатора пользователя 0

    Объединение нескольких полей отдельно на основе одной (ключевой) колонки

    Как настроить разрешения на внешний жесткий диск, чтобы использовать его для резервного копирования с помощью rsync?

    Linux и Unix - лучшая ОС в мире.