Страница:
~v работает так же, как и ~e, но всегда вызывает экран-
ный редактор. Стандартный экранный редактор определя-
ется программой mailx. Если он Вас не устраивает, ука-
жите полное имя нужного Вам редактора как значение
переменной VISUAL.
Бывает полезно иметь возможность включать содержимое
некоторого файла в текст Вашего письма. На этот случай
есть управляющая последовательность
~r файл
которая добавляет указанный файл к тексту текущего
сообщения. Если файл не существует или не читается,
mailx выдает ошибку. Если файл успешно прочитан, на
экран выдается число строк и символов, добавленных к
сообщению, после чего можно продолжать ввод текста. Имя
файла может содержать метасимволы shell, такие, как `*'
и `?', они будут расшифрованы в соответствии с установ-
ленным интерпретатором командного языка.
Как особый случай ~r, управляющая последовательность
~d
читает файл dead.letter в Вашем регистрационном ката-
логе. Это удобно, так как mailx копирует в этот файл
текст письма, которое Вы отменяете при помощи CTRL/C.
Есть возможность передавать бинарные (нетекстовые)
файлы с помощью системы mailx. Для этого служит управ-
ляющая последовательность
~u [исходный_файл] получаемый_файл
- 11 -
здесь, если имя исходного совпадает с именем получае-
мого, можно указывать только одно имя.
После выполнения этой последовательности в текущее
сообщение вставляется текстовый файл, перекодированный
из указанного бинарного алгоритмом uuencode. В таком
виде файл уже можно посылать, не опасаясь потерять 8-й
бит или передать не те байты.
После приема этого файла можно воспользоваться
встроенной в mailx или внешней командой uudecode для
преобразования сообщения обратно в бинарн
Чтобы сохранить текст Вашего письма в файле, поль-
зуйтесь управляющей последовательностью
~w файл
mailx напечатает число строк и символов, записанных в
файл, после чего можно продолжать ввод текста сообще-
ния. В имени файла можно пользоваться метасимволами
shell, так же, как и в случае с ~r.
Если Вы посылаете почту, находясь в командном режиме
mailx, Вы можете включить в текст составляемого письма
полученное Вами сообщение, пользуясь управляющей после-
довательностью ~m. Например,
~m 4
вставит сообщение 4 в текущее сообщение, сдвинув его на
табуляцию вправо. Можно указывать любое неудаленное
сообщение или список сообщений. Можно также вставлять
сообщение при помощи последовательности ~f, без сдвига
на табуляцию (обычно так и делают). Кроме того, для
совместимости с другими версиями почтовой службы вместо
~f допускается использование последовательности ~M.
Кроме этого, есть последовательность ~>>, которая встав-
ляет сообщение с заданным номером, добавляя перед каж-
дой строкой символ '>>'.
Если в процессе составления письма Вы решили доба-
вить еще несколько человек к списку адресатов, можно
воспользоваться управляющей последовательностью
~t name1 name2 ...
Можно называть одновременно несколько адресатов. Пом-
ните, что пользователи, ранее включенные в список адре-
сатов, тоже получат это письмо. Удалять имена из списка
~t не умеет.
Можно вставлять предметный заголовок при помощи
управляющей последовательности
~s новый_заголовок
которая заменит любой бывший ранее предметный заголовок
- 12 -
на новый_заголовок Если есть предметный заголовок, он
помещается в начале сообщения в поле Subject:. Посмот-
реть, как будет выглядеть письмо, можно при помощи ~p.
Иногда предпочтительно указывать некоторых людей не
как прямых адресатов письма, а как адресатов вторых
экземпляров. Управляющая последовательность
~c имя1 имя2 ...
добавляет названных адресатов к списку Cc: и работает
аналогично ~t. Теперь можно снова выполнить ~p, чтобы
посмотреть общий вид письма.
Адресаты письма составляют поле To: заголовка, пред-
метный заголовок - поле Subject: заголовка, а получа-
тели вторых экземпляров - поле Cc: заголовка. Если Вы
хотите изменить эти поля таким образом, что этого
нельзя сделать с помощью ~t, ~s и ~c, можно воспользо-
ваться управляющей последовательностью
~h
которая напишет To: и текущий список адресатов, а затем
установит курсор в конец строки. Если Вы будете вводить
обычные символы, они будут дописываться к текущему
списку адресатов. После ввода символа новой строки
программа mailx перейдет к полю Subject:, над которым
можно выполнять такие же действия. Следующий символ
новой строки оцуществит переход к редактированию поля
Cc: по тем же правилам. После этого по символу новой
строки Вы перейдете к дописыванию текста Вашего сообще-
ния. Чтобы посмотреть текст полей заголовка и основного
письма в том виде, как они выглядят сейчас, можно вос-
пользоваться ~p.
Кроме полей To:, Subject: и Cc: при помощи команды
~h можно заполнить поле Bcc: (третьи копии). Адреса-
там, указанным в поле Bcc: тоже будет послана копия
сообщения, но, в отличие от адресатов из поля Cc: по
команде Reply им не будет посылаться ответ.
Для временного выхода в shell используется управляю-
щая последовательность
~! команда
которая выполняет команду и возвращает Вас в режим сос-
тавления письма, не меняя текста письма. Если же Вам
нужно пропустить текст Вашего письма через команду-
фильтр, воспользуйтесь управляющей последовательностью
~| команда
которая фильтрует сообщение через команду и использует
вывод как новый текст письма. Если эта команда не
выводит ничего, то mailx заключает, что произошла
ошибка и возвращает старую версию сообщения. В
- 13 -
качестве фильтра часто используется команда fmt, пред-
назначенная для форматирования писем.
Для временного возврата в командный режим mailx
можно пользоваться управляющей последовательностью
~: команда_mailx
Это особенно полезно для повторного просмотра письма,
на которое Вы отвечаете, например:
~: t
Этим также можно пользоваться для установки переменных
и переопределения псевдонимов.
Если Вам хочется отправить письмо, содержащее
строку, начинающуюся с тильды, удвойте ее. Например:
~~Эта строка начинается с тильды.
посылает строку
~Эта строка начинается с тильды.
Наконец, управляющая последовательность
~?
выдает краткий список возможных управляющих последова-
тельностей.
На некоторых терминалах (обычно без нижнего
регистра) трудно напечатать тильду. Программа mailx
позволяет поменять управляющий символ, установив пере-
менную escape. Например, установим правую квадратную
скобку вместо тильды:
set escape=]
Теперь, если понадобится послать строку с правой квад-
ратной скобкой в начале, ее придется удвоить, так же
как и в случае с тильдой. Изменение управляющего сим-
вола отменяет специальное значение символа `~'.
4.2. Доступ к сетям
В этом разделе описано, как посылать почту пользова-
телям на других машинах. Вызов, посланный на простое
регистрационное имя пользователя, отправляет почту
пользователю на этой же машине.
Если Ваш адресат работает на машине, подключенной к
сети UUCP, Вам необходимо знать список машин, через
которые должно пройти Ваше письмо, пока доберется до
него. Так, если его машина напрямую связана с Вашей,
послать почту можно, используя такой синтаксис:
- 14 -
машина!имя
где машина - имя его машины, а имя - его регистрацион-
ное имя. Если же Ваше письмо должно сначала пройти
через промежуточную машину, синтаксис будет такой:
промежуточная_машина!машина!имя
и так далее. Особенностью UUCP является то, что ника-
кой узел сети не имеет полной карты всех систем (если
только кто-нибудь не составил ее сам для удобства).
Ряд сетей использует адреса в формате Internet:
польз@машина.д1.д2...
где польз - регистрационное имя пользователя на удален-
ной машине, машина - имя машины, а поля д1...дn обра-
зуют имя домена, определяющего логическую принадлеж-
ность машины к какой-либо организации, подразделению,
стране и т.д. Например, сетевой адрес
avg@avg386.hq.demos.USSR.COM
означает, что адресат avg работает на машине avg386,
расположенной в московском отделении (hq) ДЕМОСа
(demos), CCCР (USSR). Последнее поле обозначает тип
организации:
COM - коммерческие организации
GOV - гос. учреждения
ORG - бесприбыльные организации
EDU - учебные заведения
MIL - военные предприятия
Таким образом, каждая машина в мире должна иметь свой
уникальный адрес, построенный по иерархическому прин-
ципу. Способ построения Internet-овского адреса никак
не связан с физической конфигурацией линий связи.
Вообще говоря, почтовая служба не различает большие и
маленькие буквы в Internet-овском адресе; тем не менее
лучше их указывать точно для совместимости с другими
почтовыми службами. Для удобства пользования допуска-
ется сокращение адресов путем отбрасывания частей имени
с конца в тех случаях, когда это обеспечивает распозна-
вание адреса машины. (Обычно можно отбрасывать часть
имени получателя, совпадающую с частью полного имени
Вашей машины).
Internet-овский адрес в отличие от адреса UUCP
обычно не содержит явного маршрута для передачи сообще-
ний. Если нужно построить комбинированный адрес для
пересылки сообщения через две сети, используется следу-
ющее правило: если сначала сообщение нужно переслать по
сети с адресом типа Internet, а затем по UUCP, то адрес
строится следующим образом:
b!c!d!u@a
- 15 -
где a - Internet-овское имя первой машины, b, c, d -
имена машин, доступных через UUCP и u - имя пользова-
теля. Если же сообщение сначала должно передаваться по
UUCP, то разделитель @ заменяется на %, например:
a!b!c!u%d
где a, b, c - имена машин, доступных через UUCP, d -
Internet-овское имя последней машины и u - имя пользо-
вателя.
Когда Вы пользуетесь командой Reply для ответа на
письмо, возникает проблема, как сформировать имена
пользователей в списках To: и Cc: относительно данной
машины. Если исходное письмо послано Вам с локальной
машины, этой проблемы не существует; ситуация сложнее,
если письмо пришло с удаленной машины. Программа mailx
использует эвристику для построения корректного имени
каждого пользователя относительно локальной машины.
Так, когда Вы говорите Reply для ответа на письмо,
имена в списках To: и Cc: несколько изменятся.
4.3. Специальные адресаты
Как описано выше, можно посылать сообщения по именам
пользователей и по псевдонимам. Существует также воз-
можность посылать почту непосредственно в файл, исполь-
зуя некоторые соглашения. Если имя адресата содержит
символ `/' или начинается со знака `+', то считается,
что это полное имя файла, в который следует послать
сообщение. Если файл уже существует, сообщение дописы-
вается к его концу. Если нужно указать файл в текущем
каталоге (т. е. знака `/' в его имени не требуется),
можно начать его имя с `./'. Так, для посылки почты в
файл memo в текущем каталоге можно дать команду:
% mailx ./memo
Если имя файла начинается со знака `+', оно расширяется
в полное имя архивного файла в Вашем архивном каталоге.
Эта возможность используется для разнообразных целей,
таких, как ведение журнала и запись почты, посланной
какой-либо группе пользователей. Второе можно делать
автоматически, включив полное имя файла для записи в
команду alias для этой группы. Например, по команде
alias duet dmitry rita /usr/duet/mail_rec_
вся почта, отправленная по псевдониму duet, будет сох-
раняться в файле /usr/duet/mail_record как только будет
послана данной группе пользователей. Этот файл можно
просмотреть, используя mailx с ключем -f.
- 16 -
5. Дополнительные возможности
В этом разделе описаны некоторые дополнительные
команды, которые используются для прочтения почты,
установки переменных и обработки списка сообщений.
5.1. Списки сообщений
Некоторым командам mailx передается в качестве аргу-
мента список сообщений. Кроме команд type и delete,
описанных в разделе 2, есть команда from, которая пока-
зывает заголовки сообщений из списка, который ей пере-
дается. Команда from полезна в сочетании с некоторыми
возможностями по обработке списка сообщений, описанными
ниже.
Список сообщений состоит из номеров сообщений, диа-
пазонов и имен, разделенных пробелами или табуляциями.
Номера сообщений могут быть либо десятичными числами,
которые непосредственно указывают на сообщение, либо
одним из специальных символов `^', `.' или `$' для ука-
зания первого подходящего, текущего или последнего под-
ходящего сообщения соответственно. Подходящее здесь
означает неудаленное для большинства команд и удаленное
для команды undelete.
Диапазон сообщений состоит из номеров двух сообщений
(в том виде, как описано в предыдущем параграфе), раз-
деленных знаком `-' (минус). Так, например, напечатать
первые четыре сообщения можно так:
type 1-4
а напечатать все сообщения, начиная с текущего и до
последнего, так:
type .-$
Имя - это имя пользователя. Имена пользователей,
заданные в списке сообщений, собираются все вместе, и
каждое сообщение проверяется на предмет, было ли оно
послано одним из названных пользователей. Если список
состоит только из имен пользователей, то выбираются все
сообщения, посланные этими пользователями, которые
являются подходящими (в том же смысле). Так, чтобы
напечатать все сообщения, посланные Вам пользователем
root, выполните
type root
Коротко Вы можете сказать просто `*' для получения
всех подходящих (в том же смысле) сообщений. Так,
type *
печатает все неудаленные сообщения,
- 17 -
delete *
удаляет все неудаленные сообщения, а
undelete *
восстанавливает все удаленные сообщения.
Можно проверять сообщения на присутствие в заголовке
определенного слова при помощи `/'. Например, для
печати заголовков всех сообщений, содержащих слово PAS-
CAL, выполните:
from /pascal
Обратите внимание, что поиск слова в заголовке игнори-
рует разницу между верхним и нижним регистрами.
5.2. Список команд
В этом разделе описаны все команды программы mailx,
которыми можно пользоваться при получении почты.
! Используется перед командой shell, которую надо
выполнить.
- Команда `-' переходит к предыдущему сообщению и
печатает его. Этой команде можно передавать как
аргумент десятичное число n, в этом случае проис-
ходит переход к n-ному сообщению и оно выдается.
Print
то же, что и print, но при печати выдает все поля
заголовка. См. также print и ignore.
reply
Формирует ответ на одно или более сообщений.
Ответ (или ответы, в случае нескольких сообщений)
будет послан только тому человеку, от которого
получено сообщение (соответственно, группе людей,
пославших сообщения, на которые Вы отвечаете).
Можно добавить адресатов, пользуясь управляющими
последовательностями ~t и ~c. Предметный заголо-
вок ответа формируется из предметного заголовка
исходного письма путем добавления к началу строки
слова Re:. Если заголовок исходного письма содер-
жит поле Reply-to, то ответ будет послан только
адресатам, перечисленным в поле Reply-to. При
вводе текста сообщения используются те же соглаше-
ния, что и в команде mail. Команда reply особенно
полезна для ответов на сообщения, посланные боль-
шой группе пользователей, если Вы хотите послать
письмо именно автору сообщения.
Type то же, что и команда Print.
forward
Пересылает текущее сообщение всем пользователям,
- 18 -
указанным в списке аргументов команды. Содержимое
сообщения никак не изменяется, а в заголовок допи-
сываются поля вида Resent-From:, идентифицируюшие
того, кто переслал сообщение.
alias
Определяет имя, подставляемое вместо списка других
имен. Это полезно, если Вы посылаете сообщения
некоторой группе людей и хотите избежать переписы-
вания всех имен каждый раз. Например,
alias project lena dima vlad anna
создает псевдоним project, который расширяется в
четыре имени lena, dima, vlad и anna.
alternates
Если Вы зарегистрированы на нескольких машинах,
удобнее пользоваться /usr/lib/aliases на всех этих
машинах, вместо того, чтобы направлять всю свою
почту в одно место. Команда alternates использу-
ется, чтобы сообщить mailx, что все эти адреса
действительно Ваши. Команда alternates получает в
качестве аргумента список имен пользователей и
напоминает, что все они в действительности принад-
лежат Вам. Когда Вы отвечаете на письмо, пришед-
шее на одно из альтернативных имен, при помощи
команды reply, программа mailx не будет посылать
копию сообщения по другим альтернативным именам.
Если команда alternates вызывается без аргументов,
она выдает текущее множество альтернативных имен.
Команда alternates обычно используется в файле
.mailrc.
chdir
Команда chdir позволяет изменить текущий каталог.
Она вызывается с одним аргументом, который воспри-
нимается как полное имя каталога, в который сле-
дует перейти. Если аргумент не задан, chdir пере-
ходит в Ваш регистрационный каталог.
copy Команда copy делает то же, что и save, только
сообщения, скопированные этой командой, при окон-
чании работы не удаляются из почтового ящика.
delete
Удаляет список сообщений. Удаленные сообщения
можно восстановить командой undelete.
dt,dp
Команда dt (или dp) удаляет текущее и печатает
следующее сообщение. Она полезна для быстрого
просмотра почты.
edit Для редактирования отдельных сообщений при помощи
текстового редактора предусмотрена команда edit.
Команда edit получает такой же список сообщений,
как и команда type, и обрабатывает их, переписывая
- 19 -
в файл MessageN, N - номер сообщения, которое сле-
дует отредактировать, и запускает на этот файл
текстовый редактор. Когда, отредактировав собще-
ние, Вы выходите из редактора, программа mailx
читает сообщение обратно и удаляет файл. Сокра-
щенная форма команды edit - e.
else Отмечает конец части then оператора if и начало
той части, которую следует выполнить, если условие
оператора if неверно.
endif
Помечает конец оператора if.
exit Выход из mailx без изменения системного почтового
ящика или файла, из которого Вы читали. Так, если
Вы случайно удалили несколько сообщений, можно
воспользоваться командой exit, чтобы не запортить
Ваш почтовый файл. Сокращенная форма команды exit
- x.
file То же, что и folder.
folders
Показывает имена архивных файлов из Вашего архив-
ного каталога.
folder
Команда folder переключается на новый почтовый или
архивный файл. Вызванная без аргумента, эта
команда говорит Вам, какой файл сейчас читается.
Если Вы передаете ей аргумент, она указывает,
какие изменения (такие, как удаление сообщений)
сделаны в текущем файле и читает новый файл. В
имени файла приняты следующие соглашения:
Имя Значение
__________________________________________________
# читать предыдущий файл
% Ваш системный почтовый ящик
%имя системный почтовый ящик пользователя имя
& Ваш файл ~/mbox
+файл Ваш архивный файл
from Команда from печатает заголовки всех указанных
сообщений; так, команда
from polina
выдаст заголовки всех сообщений, полученных от
пользователя polina.
headers
Когда Вы вызываете программу mailx для чтения
почты, она печатает заголовки всех полученных
- 20 -
сообщений. В заголовках написано, от кого получено
сообщение, когда оно отправлено, сколько в нем
строк, и поле Subject: у всех сообщений, у которых
оно есть. Кроме того, mailx добавляет в заголовки
всех сообщений, на которые выполнялась команда
preserve, букву P. Сообщения, которые были сохра-
нены или записаны, помечаются знаком `*'. Нако-
нец, удаленные сообщения не печатаются вовсе.
Если Вам надо перепечатать текущий список заголов-
ков сообщений, можно это сделать командой headers.
Команда headers (так же, как и начальная выдача
заголовков сообщений) показывает только первые
несколько заголовков. Число показываемых заголов-
ков зависит от скорости Вашего терминала. Его
можно изменить, указав нужное число переменной
screen. Программа mailx помнит, с какой частью
сообщений (окном) она сейчас работает. Для пере-
хода к следующему или предыдущему окну использу-
ется команда z. Можно переместить значение теку-
щего окна mailx непосредственно на определенное
сообщение, используя, например, команду
headers 40
Команда headers сокращается как h.
headline
Эта команда позволяет добавлять новые поля в заго-
ловок отправляемого сообщения; так, например,
после команды
headline Organization Wild Hacker's Club, Moscow
в заголовок каждого сообщения будет добавляться
строка
Organization: Wild Hacker's Club, Moscow
В строке можно использовать специальные конструк-
ции
$$ - символ `$',
$a - дата в формате сети ARPA,
$d - дата в формате системы Unix,
$i - уникальный номер исходящего сообщения,
$r - реальное имя пользователя (из файла
/etc/passwd или переменной realname).
$h - официальное имя машины в Internet,
$u - регистрационное имя пользователя.
Если команде headline указано только имя поля, то
она удалит это поле из набора вставляемых в заго-
ловки исходящих сообщений. Команда headline без
аргументов печатает список всех дополнительных
полей заголовка. Эта команда обычно используется
ный редактор. Стандартный экранный редактор определя-
ется программой mailx. Если он Вас не устраивает, ука-
жите полное имя нужного Вам редактора как значение
переменной VISUAL.
Бывает полезно иметь возможность включать содержимое
некоторого файла в текст Вашего письма. На этот случай
есть управляющая последовательность
~r файл
которая добавляет указанный файл к тексту текущего
сообщения. Если файл не существует или не читается,
mailx выдает ошибку. Если файл успешно прочитан, на
экран выдается число строк и символов, добавленных к
сообщению, после чего можно продолжать ввод текста. Имя
файла может содержать метасимволы shell, такие, как `*'
и `?', они будут расшифрованы в соответствии с установ-
ленным интерпретатором командного языка.
Как особый случай ~r, управляющая последовательность
~d
читает файл dead.letter в Вашем регистрационном ката-
логе. Это удобно, так как mailx копирует в этот файл
текст письма, которое Вы отменяете при помощи CTRL/C.
Есть возможность передавать бинарные (нетекстовые)
файлы с помощью системы mailx. Для этого служит управ-
ляющая последовательность
~u [исходный_файл] получаемый_файл
- 11 -
здесь, если имя исходного совпадает с именем получае-
мого, можно указывать только одно имя.
После выполнения этой последовательности в текущее
сообщение вставляется текстовый файл, перекодированный
из указанного бинарного алгоритмом uuencode. В таком
виде файл уже можно посылать, не опасаясь потерять 8-й
бит или передать не те байты.
После приема этого файла можно воспользоваться
встроенной в mailx или внешней командой uudecode для
преобразования сообщения обратно в бинарн
Чтобы сохранить текст Вашего письма в файле, поль-
зуйтесь управляющей последовательностью
~w файл
mailx напечатает число строк и символов, записанных в
файл, после чего можно продолжать ввод текста сообще-
ния. В имени файла можно пользоваться метасимволами
shell, так же, как и в случае с ~r.
Если Вы посылаете почту, находясь в командном режиме
mailx, Вы можете включить в текст составляемого письма
полученное Вами сообщение, пользуясь управляющей после-
довательностью ~m. Например,
~m 4
вставит сообщение 4 в текущее сообщение, сдвинув его на
табуляцию вправо. Можно указывать любое неудаленное
сообщение или список сообщений. Можно также вставлять
сообщение при помощи последовательности ~f, без сдвига
на табуляцию (обычно так и делают). Кроме того, для
совместимости с другими версиями почтовой службы вместо
~f допускается использование последовательности ~M.
Кроме этого, есть последовательность ~>>, которая встав-
ляет сообщение с заданным номером, добавляя перед каж-
дой строкой символ '>>'.
Если в процессе составления письма Вы решили доба-
вить еще несколько человек к списку адресатов, можно
воспользоваться управляющей последовательностью
~t name1 name2 ...
Можно называть одновременно несколько адресатов. Пом-
ните, что пользователи, ранее включенные в список адре-
сатов, тоже получат это письмо. Удалять имена из списка
~t не умеет.
Можно вставлять предметный заголовок при помощи
управляющей последовательности
~s новый_заголовок
которая заменит любой бывший ранее предметный заголовок
- 12 -
на новый_заголовок Если есть предметный заголовок, он
помещается в начале сообщения в поле Subject:. Посмот-
реть, как будет выглядеть письмо, можно при помощи ~p.
Иногда предпочтительно указывать некоторых людей не
как прямых адресатов письма, а как адресатов вторых
экземпляров. Управляющая последовательность
~c имя1 имя2 ...
добавляет названных адресатов к списку Cc: и работает
аналогично ~t. Теперь можно снова выполнить ~p, чтобы
посмотреть общий вид письма.
Адресаты письма составляют поле To: заголовка, пред-
метный заголовок - поле Subject: заголовка, а получа-
тели вторых экземпляров - поле Cc: заголовка. Если Вы
хотите изменить эти поля таким образом, что этого
нельзя сделать с помощью ~t, ~s и ~c, можно воспользо-
ваться управляющей последовательностью
~h
которая напишет To: и текущий список адресатов, а затем
установит курсор в конец строки. Если Вы будете вводить
обычные символы, они будут дописываться к текущему
списку адресатов. После ввода символа новой строки
программа mailx перейдет к полю Subject:, над которым
можно выполнять такие же действия. Следующий символ
новой строки оцуществит переход к редактированию поля
Cc: по тем же правилам. После этого по символу новой
строки Вы перейдете к дописыванию текста Вашего сообще-
ния. Чтобы посмотреть текст полей заголовка и основного
письма в том виде, как они выглядят сейчас, можно вос-
пользоваться ~p.
Кроме полей To:, Subject: и Cc: при помощи команды
~h можно заполнить поле Bcc: (третьи копии). Адреса-
там, указанным в поле Bcc: тоже будет послана копия
сообщения, но, в отличие от адресатов из поля Cc: по
команде Reply им не будет посылаться ответ.
Для временного выхода в shell используется управляю-
щая последовательность
~! команда
которая выполняет команду и возвращает Вас в режим сос-
тавления письма, не меняя текста письма. Если же Вам
нужно пропустить текст Вашего письма через команду-
фильтр, воспользуйтесь управляющей последовательностью
~| команда
которая фильтрует сообщение через команду и использует
вывод как новый текст письма. Если эта команда не
выводит ничего, то mailx заключает, что произошла
ошибка и возвращает старую версию сообщения. В
- 13 -
качестве фильтра часто используется команда fmt, пред-
назначенная для форматирования писем.
Для временного возврата в командный режим mailx
можно пользоваться управляющей последовательностью
~: команда_mailx
Это особенно полезно для повторного просмотра письма,
на которое Вы отвечаете, например:
~: t
Этим также можно пользоваться для установки переменных
и переопределения псевдонимов.
Если Вам хочется отправить письмо, содержащее
строку, начинающуюся с тильды, удвойте ее. Например:
~~Эта строка начинается с тильды.
посылает строку
~Эта строка начинается с тильды.
Наконец, управляющая последовательность
~?
выдает краткий список возможных управляющих последова-
тельностей.
На некоторых терминалах (обычно без нижнего
регистра) трудно напечатать тильду. Программа mailx
позволяет поменять управляющий символ, установив пере-
менную escape. Например, установим правую квадратную
скобку вместо тильды:
set escape=]
Теперь, если понадобится послать строку с правой квад-
ратной скобкой в начале, ее придется удвоить, так же
как и в случае с тильдой. Изменение управляющего сим-
вола отменяет специальное значение символа `~'.
4.2. Доступ к сетям
В этом разделе описано, как посылать почту пользова-
телям на других машинах. Вызов, посланный на простое
регистрационное имя пользователя, отправляет почту
пользователю на этой же машине.
Если Ваш адресат работает на машине, подключенной к
сети UUCP, Вам необходимо знать список машин, через
которые должно пройти Ваше письмо, пока доберется до
него. Так, если его машина напрямую связана с Вашей,
послать почту можно, используя такой синтаксис:
- 14 -
машина!имя
где машина - имя его машины, а имя - его регистрацион-
ное имя. Если же Ваше письмо должно сначала пройти
через промежуточную машину, синтаксис будет такой:
промежуточная_машина!машина!имя
и так далее. Особенностью UUCP является то, что ника-
кой узел сети не имеет полной карты всех систем (если
только кто-нибудь не составил ее сам для удобства).
Ряд сетей использует адреса в формате Internet:
польз@машина.д1.д2...
где польз - регистрационное имя пользователя на удален-
ной машине, машина - имя машины, а поля д1...дn обра-
зуют имя домена, определяющего логическую принадлеж-
ность машины к какой-либо организации, подразделению,
стране и т.д. Например, сетевой адрес
avg@avg386.hq.demos.USSR.COM
означает, что адресат avg работает на машине avg386,
расположенной в московском отделении (hq) ДЕМОСа
(demos), CCCР (USSR). Последнее поле обозначает тип
организации:
COM - коммерческие организации
GOV - гос. учреждения
ORG - бесприбыльные организации
EDU - учебные заведения
MIL - военные предприятия
Таким образом, каждая машина в мире должна иметь свой
уникальный адрес, построенный по иерархическому прин-
ципу. Способ построения Internet-овского адреса никак
не связан с физической конфигурацией линий связи.
Вообще говоря, почтовая служба не различает большие и
маленькие буквы в Internet-овском адресе; тем не менее
лучше их указывать точно для совместимости с другими
почтовыми службами. Для удобства пользования допуска-
ется сокращение адресов путем отбрасывания частей имени
с конца в тех случаях, когда это обеспечивает распозна-
вание адреса машины. (Обычно можно отбрасывать часть
имени получателя, совпадающую с частью полного имени
Вашей машины).
Internet-овский адрес в отличие от адреса UUCP
обычно не содержит явного маршрута для передачи сообще-
ний. Если нужно построить комбинированный адрес для
пересылки сообщения через две сети, используется следу-
ющее правило: если сначала сообщение нужно переслать по
сети с адресом типа Internet, а затем по UUCP, то адрес
строится следующим образом:
b!c!d!u@a
- 15 -
где a - Internet-овское имя первой машины, b, c, d -
имена машин, доступных через UUCP и u - имя пользова-
теля. Если же сообщение сначала должно передаваться по
UUCP, то разделитель @ заменяется на %, например:
a!b!c!u%d
где a, b, c - имена машин, доступных через UUCP, d -
Internet-овское имя последней машины и u - имя пользо-
вателя.
Когда Вы пользуетесь командой Reply для ответа на
письмо, возникает проблема, как сформировать имена
пользователей в списках To: и Cc: относительно данной
машины. Если исходное письмо послано Вам с локальной
машины, этой проблемы не существует; ситуация сложнее,
если письмо пришло с удаленной машины. Программа mailx
использует эвристику для построения корректного имени
каждого пользователя относительно локальной машины.
Так, когда Вы говорите Reply для ответа на письмо,
имена в списках To: и Cc: несколько изменятся.
4.3. Специальные адресаты
Как описано выше, можно посылать сообщения по именам
пользователей и по псевдонимам. Существует также воз-
можность посылать почту непосредственно в файл, исполь-
зуя некоторые соглашения. Если имя адресата содержит
символ `/' или начинается со знака `+', то считается,
что это полное имя файла, в который следует послать
сообщение. Если файл уже существует, сообщение дописы-
вается к его концу. Если нужно указать файл в текущем
каталоге (т. е. знака `/' в его имени не требуется),
можно начать его имя с `./'. Так, для посылки почты в
файл memo в текущем каталоге можно дать команду:
% mailx ./memo
Если имя файла начинается со знака `+', оно расширяется
в полное имя архивного файла в Вашем архивном каталоге.
Эта возможность используется для разнообразных целей,
таких, как ведение журнала и запись почты, посланной
какой-либо группе пользователей. Второе можно делать
автоматически, включив полное имя файла для записи в
команду alias для этой группы. Например, по команде
alias duet dmitry rita /usr/duet/mail_rec_
вся почта, отправленная по псевдониму duet, будет сох-
раняться в файле /usr/duet/mail_record как только будет
послана данной группе пользователей. Этот файл можно
просмотреть, используя mailx с ключем -f.
- 16 -
5. Дополнительные возможности
В этом разделе описаны некоторые дополнительные
команды, которые используются для прочтения почты,
установки переменных и обработки списка сообщений.
5.1. Списки сообщений
Некоторым командам mailx передается в качестве аргу-
мента список сообщений. Кроме команд type и delete,
описанных в разделе 2, есть команда from, которая пока-
зывает заголовки сообщений из списка, который ей пере-
дается. Команда from полезна в сочетании с некоторыми
возможностями по обработке списка сообщений, описанными
ниже.
Список сообщений состоит из номеров сообщений, диа-
пазонов и имен, разделенных пробелами или табуляциями.
Номера сообщений могут быть либо десятичными числами,
которые непосредственно указывают на сообщение, либо
одним из специальных символов `^', `.' или `$' для ука-
зания первого подходящего, текущего или последнего под-
ходящего сообщения соответственно. Подходящее здесь
означает неудаленное для большинства команд и удаленное
для команды undelete.
Диапазон сообщений состоит из номеров двух сообщений
(в том виде, как описано в предыдущем параграфе), раз-
деленных знаком `-' (минус). Так, например, напечатать
первые четыре сообщения можно так:
type 1-4
а напечатать все сообщения, начиная с текущего и до
последнего, так:
type .-$
Имя - это имя пользователя. Имена пользователей,
заданные в списке сообщений, собираются все вместе, и
каждое сообщение проверяется на предмет, было ли оно
послано одним из названных пользователей. Если список
состоит только из имен пользователей, то выбираются все
сообщения, посланные этими пользователями, которые
являются подходящими (в том же смысле). Так, чтобы
напечатать все сообщения, посланные Вам пользователем
root, выполните
type root
Коротко Вы можете сказать просто `*' для получения
всех подходящих (в том же смысле) сообщений. Так,
type *
печатает все неудаленные сообщения,
- 17 -
delete *
удаляет все неудаленные сообщения, а
undelete *
восстанавливает все удаленные сообщения.
Можно проверять сообщения на присутствие в заголовке
определенного слова при помощи `/'. Например, для
печати заголовков всех сообщений, содержащих слово PAS-
CAL, выполните:
from /pascal
Обратите внимание, что поиск слова в заголовке игнори-
рует разницу между верхним и нижним регистрами.
5.2. Список команд
В этом разделе описаны все команды программы mailx,
которыми можно пользоваться при получении почты.
! Используется перед командой shell, которую надо
выполнить.
- Команда `-' переходит к предыдущему сообщению и
печатает его. Этой команде можно передавать как
аргумент десятичное число n, в этом случае проис-
ходит переход к n-ному сообщению и оно выдается.
то же, что и print, но при печати выдает все поля
заголовка. См. также print и ignore.
reply
Формирует ответ на одно или более сообщений.
Ответ (или ответы, в случае нескольких сообщений)
будет послан только тому человеку, от которого
получено сообщение (соответственно, группе людей,
пославших сообщения, на которые Вы отвечаете).
Можно добавить адресатов, пользуясь управляющими
последовательностями ~t и ~c. Предметный заголо-
вок ответа формируется из предметного заголовка
исходного письма путем добавления к началу строки
слова Re:. Если заголовок исходного письма содер-
жит поле Reply-to, то ответ будет послан только
адресатам, перечисленным в поле Reply-to. При
вводе текста сообщения используются те же соглаше-
ния, что и в команде mail. Команда reply особенно
полезна для ответов на сообщения, посланные боль-
шой группе пользователей, если Вы хотите послать
письмо именно автору сообщения.
Type то же, что и команда Print.
forward
Пересылает текущее сообщение всем пользователям,
- 18 -
указанным в списке аргументов команды. Содержимое
сообщения никак не изменяется, а в заголовок допи-
сываются поля вида Resent-From:, идентифицируюшие
того, кто переслал сообщение.
alias
Определяет имя, подставляемое вместо списка других
имен. Это полезно, если Вы посылаете сообщения
некоторой группе людей и хотите избежать переписы-
вания всех имен каждый раз. Например,
alias project lena dima vlad anna
создает псевдоним project, который расширяется в
четыре имени lena, dima, vlad и anna.
alternates
Если Вы зарегистрированы на нескольких машинах,
удобнее пользоваться /usr/lib/aliases на всех этих
машинах, вместо того, чтобы направлять всю свою
почту в одно место. Команда alternates использу-
ется, чтобы сообщить mailx, что все эти адреса
действительно Ваши. Команда alternates получает в
качестве аргумента список имен пользователей и
напоминает, что все они в действительности принад-
лежат Вам. Когда Вы отвечаете на письмо, пришед-
шее на одно из альтернативных имен, при помощи
команды reply, программа mailx не будет посылать
копию сообщения по другим альтернативным именам.
Если команда alternates вызывается без аргументов,
она выдает текущее множество альтернативных имен.
Команда alternates обычно используется в файле
.mailrc.
chdir
Команда chdir позволяет изменить текущий каталог.
Она вызывается с одним аргументом, который воспри-
нимается как полное имя каталога, в который сле-
дует перейти. Если аргумент не задан, chdir пере-
ходит в Ваш регистрационный каталог.
copy Команда copy делает то же, что и save, только
сообщения, скопированные этой командой, при окон-
чании работы не удаляются из почтового ящика.
delete
Удаляет список сообщений. Удаленные сообщения
можно восстановить командой undelete.
dt,dp
Команда dt (или dp) удаляет текущее и печатает
следующее сообщение. Она полезна для быстрого
просмотра почты.
edit Для редактирования отдельных сообщений при помощи
текстового редактора предусмотрена команда edit.
Команда edit получает такой же список сообщений,
как и команда type, и обрабатывает их, переписывая
- 19 -
в файл MessageN, N - номер сообщения, которое сле-
дует отредактировать, и запускает на этот файл
текстовый редактор. Когда, отредактировав собще-
ние, Вы выходите из редактора, программа mailx
читает сообщение обратно и удаляет файл. Сокра-
щенная форма команды edit - e.
else Отмечает конец части then оператора if и начало
той части, которую следует выполнить, если условие
оператора if неверно.
endif
Помечает конец оператора if.
exit Выход из mailx без изменения системного почтового
ящика или файла, из которого Вы читали. Так, если
Вы случайно удалили несколько сообщений, можно
воспользоваться командой exit, чтобы не запортить
Ваш почтовый файл. Сокращенная форма команды exit
- x.
file То же, что и folder.
folders
Показывает имена архивных файлов из Вашего архив-
ного каталога.
folder
Команда folder переключается на новый почтовый или
архивный файл. Вызванная без аргумента, эта
команда говорит Вам, какой файл сейчас читается.
Если Вы передаете ей аргумент, она указывает,
какие изменения (такие, как удаление сообщений)
сделаны в текущем файле и читает новый файл. В
имени файла приняты следующие соглашения:
Имя Значение
__________________________________________________
# читать предыдущий файл
% Ваш системный почтовый ящик
%имя системный почтовый ящик пользователя имя
& Ваш файл ~/mbox
+файл Ваш архивный файл
from Команда from печатает заголовки всех указанных
сообщений; так, команда
from polina
выдаст заголовки всех сообщений, полученных от
пользователя polina.
headers
Когда Вы вызываете программу mailx для чтения
почты, она печатает заголовки всех полученных
- 20 -
сообщений. В заголовках написано, от кого получено
сообщение, когда оно отправлено, сколько в нем
строк, и поле Subject: у всех сообщений, у которых
оно есть. Кроме того, mailx добавляет в заголовки
всех сообщений, на которые выполнялась команда
preserve, букву P. Сообщения, которые были сохра-
нены или записаны, помечаются знаком `*'. Нако-
нец, удаленные сообщения не печатаются вовсе.
Если Вам надо перепечатать текущий список заголов-
ков сообщений, можно это сделать командой headers.
Команда headers (так же, как и начальная выдача
заголовков сообщений) показывает только первые
несколько заголовков. Число показываемых заголов-
ков зависит от скорости Вашего терминала. Его
можно изменить, указав нужное число переменной
screen. Программа mailx помнит, с какой частью
сообщений (окном) она сейчас работает. Для пере-
хода к следующему или предыдущему окну использу-
ется команда z. Можно переместить значение теку-
щего окна mailx непосредственно на определенное
сообщение, используя, например, команду
headers 40
Команда headers сокращается как h.
headline
Эта команда позволяет добавлять новые поля в заго-
ловок отправляемого сообщения; так, например,
после команды
headline Organization Wild Hacker's Club, Moscow
в заголовок каждого сообщения будет добавляться
строка
Organization: Wild Hacker's Club, Moscow
В строке можно использовать специальные конструк-
ции
$$ - символ `$',
$a - дата в формате сети ARPA,
$d - дата в формате системы Unix,
$i - уникальный номер исходящего сообщения,
$r - реальное имя пользователя (из файла
/etc/passwd или переменной realname).
$h - официальное имя машины в Internet,
$u - регистрационное имя пользователя.
Если команде headline указано только имя поля, то
она удалит это поле из набора вставляемых в заго-
ловки исходящих сообщений. Команда headline без
аргументов печатает список всех дополнительных
полей заголовка. Эта команда обычно используется