Традиционный mailx не поддерживает IMAP или POP, но тот, который идет с Linux, делает.
Для Вашей конкретной проблемы я рекомендую использовать fetchmail
вместо этого. Можно использовать --mda
опция иметь fetchmail
выполните сценарий по Вашему выбору для каждого загруженного сообщения. Это может даже передать От и До адресов как параметры к Вашему сценарию, если Вы используете %F
и %T
как заполнители в командной строке.
Во-первых, создайте a mailsorter
сценарий:
#!/bin/sh
dest_mbox="$1"
from="$2"
to="$3"
case "$from-$to" in
someone@example.net-myname)
echo "From $from `date`" >> "$dest_mbox"
cat >> "$dest_mbox"
;;
*)
cat > /dev/null
;;
esac
Затем выполненный fetchmail -u myname popserver.example.com --mda './mailsorter /tmp/mbox %F %T'
При тестировании этого решения дать fetchmail
--all
и --keep
флаги, чтобы удостовериться, что Вы не удаляете свою почту случайно.
Использовать функцию оболочки вместо псевдонима:
function my_find
{
exclude_dir="$1"
shift
find . \( -type d -name "$exclude_dir" -prune \) -o \( -type f -a -iname "$@" -a -print \)
}
и
и или
не являются коммутативными во многих языках программирования, например, C, C++, C♯, оболочках, find и многих других.
Они используют ленивые оценки слева направо, т.е. сначала вычисляют термин слева, а затем, при необходимости, только справа. Поэтому в false и b
, b
не вычисляется, так как ответ всегда ложный. Но в b и false
вычисляется b
, так как еще не было видно, что второй член ложен.
Это не имеет значения, когда члены являются чистыми функциями, т.е. предикатом (что-то, что возвращает булев и ничего больше не делает), но когда он что-то делает (имеет побочные эффекты), то это имеет значение.
-печать
что-то делает. Она печатает, поэтому это имеет значение.
Обратите внимание, любая система, которая допускает побочные эффекты (такие как -печать), должна определять порядок оценки, и слева направо, вероятно, самая простая.
Они не то же. - печать
основной всегда оценивается как верная и заставляет текущий путь быть записанным в стандартный вывод.
, Когда вы используете:
\( -type f -a -print -a -iname '*.mp3' \)
Все найденные файлы будут распечатаны к stdout, это поведение по умолчанию - печать , независимо от -iname '*.mp3'
, выражение является TRUE или FALSE.
, Когда вы используете:
\( -type f -a -iname '*.mp3' -a -print \)
- печать
часть, только достигнутая, если -iname '*.mp3'
выражение верно. Таким образом, только файлы, которые заканчиваются .mp3
, будут распечатаны.
POSIX определяет , находят-a оператор как:
выражение [-a] Соединение выражения
основных устройств; операция И подразумевается сопоставление двух основных устройств или сделанный явным дополнительным-a оператор. второе выражение не должно быть оценено если первое выражение является ложью.
В этом случае, вы не должны использовать - печать
, потому что, если выражение верно, - печать
добавляется по умолчанию:
, Если никакое выражение не присутствует, - печать должна использоваться в качестве выражения. Иначе, если данное выражение не содержит ни одного из основные устройства - должностное лицо, - хорошо, или - печать, данное выражение должно быть эффективно замененный:
(given_expression) - печать
, Но это вызовет , exclude_me печатается в выводе, потому что то, когда находят
, соответствовало ему, - чернослив
выражение причин, оцененное к истинному. И с тех пор, когда мы опустили - печать
в 2-м выражении, - печать
добавляется в конец обоих выражений. Это похоже:
find . \( -type d -name 'exclude_me' -prune \) -print -o \( -type f -a -iname '*.mp3' \) -print
Это вызывает , exclude_me печатается.
можно всегда опускать exclude_me в выводе путем явного добавления - печать
в 2-м выражении. Это вызывает - печать
только запросила 2-е выражение:
find . \( -type d -name 'exclude_me' -prune \) -o \( -type f -a -iname '*.mp3' \) -print
Или добавление выражения после - чернослив
, и удостоверяется, что это делает 1-ю ложь выражения:
find . \( -type d -name 'exclude_me' -prune -a -name . \) -o \( -type f -a -iname '*.mp3' \)