Попробуйте этот сценарий:
( # Run in a subshell so it won't crash current color settings
dircolors -b >/dev/null
IFS=:
for ls_color in ${LS_COLORS[@]}; do # For all colors
color=${ls_color##*=}
ext=${ls_color%%=*}
echo -en "\E[${color}m${ext}\E[0m " # echo color and extension
done
echo
)
Вывод:
mailx
усекает его вывод для вписывания в число столбцов на stdout. Для получения числа столбцов это попробует ioctl(1, TIOCGWINSZ, ...)
сначала - размер окна Вашего терминала - и если это перестало работать, это будет использовать COLUMNS
переменная среды. Так попробуйте это:
COLUMNS=999 mailx -L | cat
|cat
есть ли так, чтобы mailx
stdout не будет терминалом, таким образом вынуждая ioctl перестать работать.
Письма обычно являются просто текстовыми файлами (или в mbox или в формате Maildir), таким образом, можно обработать их с grep
, sed
, awk
, или любой язык сценариев. Общие местоположения для писем /var/mail
, /var/spool/mail
или некоторый файл/каталог в пользовательском корневом каталоге.
Для извлечения предметов почты можно использовать grep
как это:
grep -E '^Subject: ' /path/to/mail
Удалить "Предмет": часть, передайте его по каналу через sed
:
... | sed -e 's/^Subject: //'
Фильтрация для непрочитанного сообщения более сложна, поскольку состояние чтения / непрочитанное состояние хранится в другой почтовой строке заголовка. Я предполагаю, что Вам был бы нужен немного более сложный сценарий, записанный в awk, Perl, Python и т.д. У меня нет протестированного решения, готового к этому.