Как передать заголовки mailx во внешний файл. Всегда усекается

#email #redirect #pipe #truncated #mailx

#Адрес электронной почты #перенаправление #труба #усеченный #mailx #передача

Вопрос:

если тема письма немного длиннее, то невозможно передать его в какую-либо команду или внешний файл без усечения. Почему? И как вы это делаете правильно?

Пример:

 mail -H -f mbox
  

показывает несколько писем. Все выглядит нормально.

O 3 user@linux.sit Вт 31 мая 13:39 22/596 Это очень длинная, очень длинная тема

Но как только кто-то попытается ЧТО-то сделать с трубой, она сломается

 mail -H -f mbox | tee
 O  3 user@linux.sit Tue May 31 13:39   22/596   This is a ver
  

Он будет отображать только 78 символов подряд и ничего больше.

То же самое, если я сделаю

 mail -H -f mbox >> into_a_file

mail -H -f mbox | grep -----
mail -f mbox | less
  

И это не работает в xterm, в gnome-terminal и т.д…
Независимо от того, задаю ли я СТОЛБЦЫ или TERMWIDTH (вне mailx или с параметром -S …)

Почему это?

Ответ №1:

Из того, что я вижу, mailx ведет себя по-разному при выдаче выходных данных по сравнению с их перенаправлением.

Чтение руководства показывает, что стандартный вывод заголовков сообщений возможен с

 $ mail -H
  

Это эквивалентно предоставлению выходных данных в определенном формате (например, printf в C)

 $ mail -H -S headline="%>%a%m  f  d %3l/%-5o %i%S"
  

Похоже, что это усекается для поля %S при передаче выходных данных. Чтобы сохранить заголовок темы, измените %S на что-то вроде 0S (ширина поля 150).

 $ mail -H -S headline="%>%a%m  f  d %3l/%-5o %i0S"