Как использовать команду 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 Outlook искажены
  • macro: mutt freezes
  • Переименование почтовых ящиков в mutt
  • mutt: определить, какие заголовки отображаются (в компоновке)
  • Mutt send-hook для дезинфекции «на» адрес?
  • Как действительно легко сохранить все помеченные вложения в mutt?
  • Есть ли способ импортировать адрес получателя из mutt в abook?
  • 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

    Сломанный считыватель карт. Dmesg получает спам

    Отключить цвета во время выполнения в xterm

    Удалите файлы и каталоги, даже если они не пусты, кроме некоторых каталогов

    Как я могу эмулировать аппаратное обеспечение N900? (armel, OMAP3)

    Как функция может вызвать функцию, которую она «переопределяет»?

    Как сделать dd сбой, если указано недопустимое значение пропуска?

    как «несколько узлов файлов» могут быть связаны с одним индексом?

    Идентификаторы соответствия и исходный исходный файл

    eCryptFS и FIPS 140-2

    Лучший способ создания «прерывистого» исполняемого файла

    Выполнить подсчет ссылок на номер inode?

    Ошибка открытия google-chrome на linuxmint

    Как разбить текстовый файл на новые файлы

    Как я могу найти все файлы ascii в одном каталоге, в котором есть слово «рубашка»? Начиная с корня

    Не удалось установить проприетарный драйвер Nvidia после последнего обновления Kali

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