Получите список непрочитанных электронных писем с сервера Unix

Попробуйте этот сценарий:

( # 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
)

Вывод:

output screenshot

5
19.12.2013, 10:55
2 ответа

mailx усекает его вывод для вписывания в число столбцов на stdout. Для получения числа столбцов это попробует ioctl(1, TIOCGWINSZ, ...) сначала - размер окна Вашего терминала - и если это перестало работать, это будет использовать COLUMNS переменная среды. Так попробуйте это:

COLUMNS=999 mailx -L | cat

|cat есть ли так, чтобы mailxstdout не будет терминалом, таким образом вынуждая ioctl перестать работать.

2
27.01.2020, 20:41

Письма обычно являются просто текстовыми файлами (или в 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 и т.д. У меня нет протестированного решения, готового к этому.

1
27.01.2020, 20:41

Теги

Похожие вопросы