ГЛАВА 6 ПОСОБИЕ ПО ИСПОЛЬЗОВАНИЮ ЭЛЕКТРОННОЙ ПОЧТЫ СОДЕРЖАНИЕ ВВЕДЕНИЕ 3 6.1 ОБМЕН СООБЩЕНИЯМИ 4 6.2 КОМАНДА MAIL 5 6.2.1 Передача сообщений 5 6.2.1.1 Недоставленная электронная почта 6 6.2.1.2 Передача электронной почты одному пользователю 7 6.2.1.3 Передача электронной почты одновременно нескольким пользователям 8 6.2.2 Передача электронной почты на удаленные системы 8 6.2.2.1 Команды uname и uuname 9 6.2.3 Управление входящей электронной почтой 11 6.3 КОМАНДА MAILX 14 6.3.1 Обзор возможностей команды mailx 14 6.3.1.1 Опции команды mail 15 6.3.2 Как послать сообщение: команды с тильдой 16 6.3.2.1 Редактирование сообщения 18 6.3.2.2 Включение существующего текста в сообщение 19 6.3.2.2.1 Ввод файла в сообщение 20 6.3.2.2.2 Включение в ответ сообщения из почтового ящика 20 6.3.2.3 Изменение частей заголовка сообщения 21 6.3.2.4 Добавление подписи к сообщению 22 6.3.2.5 Сохранение переданных сообщений 22 6.3.2.6 Выход из команды mailx 24 6.3.2.7 Заключение 24 6.3.3 Как управлять входящей почтой 24 6.3.3.1 Использование списка_сообщений в качестве аргумента команд 25 6.3.3.2 Команды чтения и удаления электронной почты 26 6.3.3.2.1 Чтение электронной почты 26 6.3.3.2.2 Просмотр собственного почтового ящика 27 6.3.3.2.3 Переход на другие файлы электронной почты 28 6.3.3.2.4 Удаление электронной почты 29 6.3.3.3 Команды для сохранения электронной почты 29 6.3.3.4 Команды для посылки ответа на полученную электронную почту 30 6.3.3.5 Команды для выхода из утилиты mailx 31 6.3.3.6 Краткое описание утилиты mailx 32 6.3.4 Файл .mailrc 32 6.4 ПЕРЕСЫЛКА И ПОЛУЧЕНИЕ ФАЙЛОВ 37 6.4.1 Пересылка небольших файлов 37 6.4.2 Пересылка больших файлов 38 6.4.2.1 Готовность к передаче: имеются ли права доступа? 39 6.4.2.2 Команда uucp 40 6.4.2.2.1 Как работает команда uucp 43 6.4.2.3 Команда uuto 45 6.4.2.3.1 Пересылка файла: опция -m и команда uustat 46 6.4.2.4 Получение файлов, посланных с помощью команды uuto: команда uupick 49 6.5 СОЗДАНИЕ СЕТИ 52 6.5.1 Установление связи с удаленным терминалом: команда ct 52 6.5.2 Вызов других систем UNIX: команда cu 55 6.5.3 Выполнение команд на удаленной системе: команда uux 58 ВВЕДЕНИЕ Система UNIX предоставляет набор команд, позволяющих устанавли- вать связь с пользователями, работающими в других системах UNIX. В частности, они позволяют: посылать и получать сообщения от других пользователей (работающих в той же или другой системе UNIX), обмениваться файлами и образовывать сети совместно с другими системами UNIX. При наличии сети, пользователь одной системы может обмениваться сообщениями и файлами с другими ЭВМ сети и выполнять команды на удаленных ЭВМ. В данной главе рассмотрены следующие команды: для обмена сообщениями: mail, mailx, uname и uuname для обмена файлами: uucp, uuto, uupick и uustat для работы с сетью: ct, cu и uux 6.1 ОБМЕН СООБЩЕНИЯМИ Для передачи сообщений можно воспользоваться как командой mail, так и командой mailx. Когда получатель входит в систему (или когда он уже находится в ней), система оповещает его о поступ- лении электронной почты посредством выдачи сообщения you have mail (для Вас есть электронная почта). Для чтения адресованных ему сообщений и передачи ответа получатель может выполнить ко- манды mail или mailx. Главное различие между командами mail и mailx состоит в том, что команда mailx дополнительно предоставляет следующие возмож- ности: выбор редактора текста (vi или ed) для обработки вход- ных и выходных сообщений; вывод списка ожидающих сообщений, что позволяет пользо- вателю самому решать, какие сообщения обрабатывать и в каком порядке; ряд опций для пересылки файлов; команды для посылки ответа на сообщения и передачи ко- пий (как входных, так и выходных сообщений) другим пользователям. Команды mail и mailx можно использовать и для передачи коротких файлов, содержащих напоминания, ответы на вопросы и т.п. Но ес ли необходимо послать какому-либо пользователю файл объемом бо- лее одной страницы, следует воспользоваться командой uuto или uucp, предназначенными для передачи файлов. (Описание этих манд см. в разд. "Пересылка больших файлов" данной главы.) 6.2 КОМАНДА MAIL В этом разделе описывается команда mail и приводятся основные сведения, касающиеся передачи электронной почты как отдельному пользователю, так и нескольким пользователям одновременно, ког- да они работают на одной и той же локальной системе или же на удаленной ЭВМ. В разделе обсуждаются также вопросы получения и обработки входящей электронной почты. 6.2.1 Передача сообщений Командная строка для передачи электронной почты имеет следующий основной формат: |mail входное_имя где входное_имя является входным именем получателя электронной почты в системе UNIX. Входным именем может быть: просто входное имя пользователя, если он находится в той же системе UNIX, что и отправитель электронной поч- ты (например, bob); имя системы и входное имя, если получатель находится в другой системе UNIX и может связываться с данной систе- мой (например, sys2!bob); Предположим, что получатель находится в данной локальной систе ме UNIX. (Передача электронной почты пользователям удаленных систем будет рассмотрена позже.) В ответ на приглашение введите команду mail, а затем на следующей строке начинайте ввод текста своего сообщения. На длину сообщения нет ограничений. По завер- шении ввода сообщения, для его передачи, в начале новой строки следует ввести точку (.) или <^d>.В показанном ниже примере представлено то, что появится на экране терминала. |$ mail phyllis |Моя встреча с группой Смита |завтра перенесена на 3:00, |поэтому я не смогу увидеться |с Вами. Не могли бы мы встретиться |утром? |. |$ Приглашение в последней строке означает, что сообщение постав- лено в очередь (помещено в последовательность ожидающих сообще- ний) и будет передано. 6.2.1.1 Недоставленная электронная почта Если при вводе входного имени получателя пользователь ошибает- ся, команда mail будет не в состоянии передать его электронную почту. Вместо этого она выведет два сообщения, которые извещают пользователя о том, что команда не выполнилась нормально, а его электронная почта возвращена обратно. После этого команда mail поместит электронную почту в сообщение, которое включает в себя системные и входные имена отправителя и предполагаемого получа- теля, а также сообщение об ошибке с указанием причины ненор- мального завершения команды. Например, пользователь (имеющий входное имя kol) собирается послать сообщение некоторому пользователю с входным именем chris, работающему в системе с именем marmaduk. В сообщении го- ворится: Встреча перенесена на 2:00. При попытке передать сооб- щение пользователь-отправитель ошибся, введя входное имя cris. |$ mail cris |Встреча перенесена на 2:00 |. |mail: Can't send to cris |mail: Return to kol |you have mail in /usr/mail/kol |$ Помещение электронной почты в каталог /usr/mail может оказаться полезным, если пользователь не знает, почему команда mail вы- полнилась неправильно, или он хочет исправить свою ошибку и снова передать электронную почту, не вводя ее заново. Указанное сообщение в каталоге /usr/mail содержит следующее: |$ mail |From kol Sat Jan 18 17:33 EST 1989 |>From kol Sat Jan 18 17:33 EST 1989 forwarded by kol |***** UNDELIVERABLE MAIL sent to cris, being returned by marmaduk!kol ***** |mail: ERROR # 8 'Invalid recipient' encountered on system marmaduk | |Встреча перенесена на 2:00 |? О том, как выводить и обрабатывать это сообщение, см. раздел "Управление входящей электронной почтой". 6.2.1.2 Передача электронной почты одному пользователю Ниже приводится пример типичного сообщения. |$ mail tommy |Том! |Заседание контрольного комитета |состоится в 3:00 дня. Д.Ф. хотел |услышать Ваши соображения и идеи о том, |сколько времени потребуется для завершения проекта. |В.К. |. |$ Когда пользователь с именем tommy входит в систему со своего терминала (или же он это сделал раньше), ему выводится сообще- ние о том, что для него есть электронная почта: |$ you have mail О том, каким образом пользователь может прочитать свою элект- ронную почту, см. раздел "Управление входящей электронной поч- той". Навыки в использовании команды mail можно приобрести, посылая электронную почту самому себе. Введите команду mail, указав в ней свой входной идентификатор ID, а затем короткое сообщение. После ввода знака завершающей точки или <^d> сообщение будет передано в файл в каталоге /usr/mail с именем введенного вход- ного идентификатора ID, а на терминал будет выдано сообщение о поступлении электронной почты. Посылка электронной почты самому себе может быть использована, как удобное средство напоминания. Например, пользователь с входным идентификатором bob собирается вызвать ряд сотрудников на следующее утро. Для напоминания об этом, он может послать себе сообщение, посредством электронной почты. |$ mail bob |Вызвать ответственных и выяснить, |почему они не вернули мои диаграммы за 1988 год! |. После входа пользователя в систему на следующий день, на экране появится сообщение о наличии для него электронной почты, кото рую следует прочитать. 6.2.1.3 Передача электронной почты одновременно нескольким пользователям Можно послать сообщение и нескольким пользователям, если в ко- мандную строку mail включить их входные имена. Например: |$ mail tommy jane wombat dave |Бейсболисты, |игра состоится вечером на 3-й площадке. |Не забудьте свои перчатки! |Капитан команды |. |$ Ниже в таблице приводится краткое описание синтаксиса и возмож- ностей команды mail. | +---------------------------------------------------------------+ | | Краткое описание команды | | | | | | mail - послать сообщение другому пользователю | | +---------------------------------------------------------------| | | команда опции аргументы | | +---------------------------------------------------------------| | | mail отсутствуют [имя_системы!]входное_имя | | +---------------------------------------------------------------| | | Описание: При наборе на клавиатуре имени команды mail, | | | за которым следует одно или несколько вход- | | | ных имен пользователей, вводимое на после- | | | дующих строках сообщение передается указан- | | | ному пользователю (пользователям). | | | | | | Примечание: Собственно передача сообщения происходит | | | после ввода на отдельной строке точки или | | | <^d> | | +---------------------------------------------------------------+ 6.2.2 Передача электронной почты на удаленные системы До сих пор предполагалось, что сообщения передаются пользовате- лям, находящимся в локальной системе UNIX. Однако, учреждение может иметь, например, три отдельные вычислительные системы, расположенные в различных частях здания, или же оно может иметь отделения в различных местах каждое со своей собственной вычис- лительной системой. Электронную почту пользователям других систем можно передать, если употребить в командной строке перед входным идентификато- ром пользователя имя системы получателя почты. |mail sys2!bob Обратите внимание, что имя системы и входной идентификатор по- лучателя разделяются восклицательным знаком. Перед выполнением этой команды необходимо знать: имя удаленной системы; связана ли удаленная система с данной системой; входное имя получателя. Получить эту информацию позволяют команды uname и uuname. 6.2.2.1 Команды uname и uuname Если возможно, имя удаленной системы и входное имя получателя следует узнать у самого получателя. Если же он не знает имя системы, необходимо попросить его выполнить на удаленной систе- ме следующую команду: |uname -n Ответом на выполнение этой команды будет имя системы. Например: |$ uname -n |dumbo |$ Если известно имя удаленной системы, с помощью команды uuname можно проверить, связана ли данная система с удаленной. Для этого в ответ на приглашение следует ввести: |uuname Эта команда формирует список удаленных систем, с которыми дан- ная система может связываться. Если в этом списке есть система получателя, то ему можно посылать сообщения с помощью команды mail. Эту процедуру можно упростить, если использовать команду grep для поиска нужного имени системы в выводе команды uuname. В та ком случае после приглашения следует ввести: |uuname | grep система (Здесь система - имя системы получателя.) Если команда grep на- ходит указанное имя системы, она выводит его на экран. Напри- мер: |$ uuname | grep dumbo |dumbo |$ Это означает, что система dumbo может связываться с данной сис- темой. В противном случае, в результате выполнения этого кон- вейера на экран выводится просто приглашение: |$ uuname | grep dumbo |$ Чтобы подвести итог обсуждению команд uname и uuname, рассмот- рим пример. Допустим, необходимо передать сообщение пользовате- лю с входным именем sarah, работающему на удаленной системе dumbo. Проверим, может ли связываться данная система с системой dumbo, и передадим сообщение. |$ uuname | grep dumbo |dumbo |$ mail dumbo!sarah |Сара! |Окончательное число записавшихся на семинар |следующее: | |Наш отдел - 18; |ваш отдел - 20. | |Том |. |$ Здесь означает ввод пустой строки. В таблицах приводится краткое описание синтаксиса и возможнос- тей команд uname и uuname. | +---------------------------------------------------------------+ | | Краткое описание команды | | | | | | uname - вывести имя системы | | +---------------------------------------------------------------| | | команда опции * аргументы | | +---------------------------------------------------------------| | | uname -n и другие отсутствуют | | +---------------------------------------------------------------| | | Описание: Команда uname -n выводит имя системы, на | | | которой установлено входное имя пользова- | | | теля. | | +---------------------------------------------------------------+ * Описание всех имеющихся опций и их действие см. в разд. uname(1) Справочника пользователя. | +---------------------------------------------------------------+ | | Краткое описание команды | | | | | | uuname - вывести список объединенных в сеть | | | вычислительных систем | | +---------------------------------------------------------------| | | команда опции аргументы | | +---------------------------------------------------------------| | | uuname отсутствуют отсутствуют | +--------------------------------------------------------------- | | Описание: Команда выводит список удаленных систем, | | которые могут связываться с данной системой. | +---------------------------------------------------------------+ 6.2.3 Управление входящей электронной почтой Ранее упоминалось, что команда mail позволяет пользователю вы- водить на экран посланные ему другими пользователями сообщения, т.е. он может их читать. Если пользователь входит в систему, когда кто-то уже передал ему электронную почту, на экране появ- ляется следующее сообщение: |you have mail (для Вас есть электронная почта) Это означает, что одно или несколько сообщений записаны в файле /usr/mail/входное_имя_пользователя, который обычно называют почтовым ящиком. Для вывода этих сообщений на экран следует ввести команду mail без аргументов. Сообщения будут выводиться на терминал по одному, начиная с полученного последним. Ниже показан типичный вид сообщения, прочитанного с помощью команды mail: |$ mail |From tommy Wed May 21 15:33 CST 1989 |Боб, |похоже встреча отменена. |Вам все еще нужен материал для технического отчета? |Том | |? Первая строка, называемая заголовком, содержит информацию о со- общении: входное имя отправителя, дату и время передачи сообще- ния. Следующие за заголовком строки (вплоть до строки, содержа щей ?) представляют собой собственно текст сообщения. Если на экран выводится длинное сообщение, пользователь не в состоянии прочитать его все сразу. Вывод можно приостановить, введя <^s>. Перемещение информации по экрану при этом приоста- навливается, что дает возможность читать текст сообщения. Для продолжения вывода следует ввести <^q>. После вывода каждого сообщения команда mail выдает приглашени ? и ожидает от пользователя ответа. Существует много вариантов дальнейших действий, например, можно оставить текущее сообщение в почтовом ящике и перейти к чтению следующего сообщения; можно удалить текущее сообщение или же сохранить его для использова- ния в будущем. Для получения списка возможных опций команды mail в ответ на ее приглашение ? следует ввести вопросительный знак ?. Чтобы вывести на экран следующее сообщение, не уничтожая при этом текущее, необходимо после знака вопроса просто нажать кла- вишу возврата каретки: |? Текущее сообщение остается в почтовом ящике и выводится следую щее. Если прочитаны все сообщения, содержащиеся в почтовом ящи- ке, на экране появляется приглашение. Для того, чтобы удалить сообщение, после вопросительного знака следует ввести d: |? d Сообщение удаляется из почтового ящика. Если в нем еще остаются сообщения, ожидающие чтения, они выводятся. В противном случае на экране появляется приглашение, которое указывает на заверше- ние чтения всех сообщений. Для сохранения сообщения с целью дальнейшего его использования после вопросительного знака необходимо ввести s. При этом, по умолчанию сообщение сохраняется в файле с именем mbox основного каталога пользователя. Чтобы сохранить сообщение в другом файле, следует имя этого файла указать после команды s. Например, для сохранения сообще- ния в файле с именем mailsave в текущем каталоге, необходимо ввести ответ, показанный после вопросительного знака: |? s mailsave Если файл mailsave существует, команда mail добавит к нему со- общение. Если же файла с указанным именем нет, команда mail создаст его и поместит туда сообщение. Наличие нового файл можно проверить с помощью команды ls. (Команда ls выводит со- держимое текущего каталога.) Сообщение можно сохранить и в другом каталоге, если указать его маршрутное имя, например: |? s project1/memo Это относительное маршрутное имя, которое определяет файл с именем memo (в него будет записано сообщение) в подкаталоге project1, текущего каталога. При сохранении сообщений можно ис- пользовать как относительные, так и полные маршрутные имена. (Рекомендации по использованию маршрутных имен см. в гл.3.) Для прекращения чтения сообщений после вопросительного знака следует ввести q: |? q Все сообщения, которые не были прочитаны, сохраняются в почто- вом ящике до следующего выполнения команды mail. Чтобы окончательно прекратить вывод сообщения, необходимо на- жать клавишу BREAK. Команда mail остановит вывод, выдаст приг- лашение ? и будет ожидать ответа от пользователя. В таблице приводится краткое описание синтаксиса и возможностей команды mail при чтении сообщений. | +---------------------------------------------------------------+ | | Краткое описание команды | | | | | | mail - прочитать сообщения, посланные | | | пользователю на его входное имя | | +---------------------------------------------------------------| | | команда опции аргументы | | +---------------------------------------------------------------| | | mail возможны* отсутствуют | | +---------------------------------------------------------------| | | Описание: При выполнении без указания опций команда | | | mail выводит все сообщения, находящиеся | | | в почтовом ящике (системный файл | | | /usr/mail/входное_имя_пользователя). | | | | | | Примечание: Вопросительный знак (?) в конце сообщения | | | означает, что команда ожидает ответа. | | +---------------------------------------------------------------+ * Полный список возможных ответов и опций приводится в разд. mail(1) Справочника пользователя. 6.3 КОМАНДА MAILX В этом разделе описываются возможности команды mailx. В нем объясняется, как устанавливать окружение для команды mailx, по- сылать сообщения с ее помощью и обрабатывать входящую электрон- ную почту. Весь материал разбит на четыре части: Обзор возможностей команды mailx Передача сообщений Управление входящей почтой Файл .mailrc 6.3.1 Обзор возможностей команды mailx Команда mailx является улучшенной версией команды mail. У ко- манды mailx есть много опций, которые связаны с передачей и чтением электронной почты и которые нельзя применять с командой mail. Допускается задавать псевдоним для входного имени отдель- ного пользователя или группы пользователей. Это позволяет посы- лать электронную почту такому пользователю, указывая в команде имя, отличающееся от его входного идентификатора, а для целой группы - с помощью единственного имени. Используя команду ma- ilx, входящую почту можно сохранять в различных файлах, редак- тировать, переадресовывать еще какому-либо пользователю, отве чать отправителю на сообщения и т.д. С помощью переменных окру жения команды mailx можно формировать собственное окружение по своему усмотрению. Ввод команды mailx с одним или несколькими входными именами в качестве ее аргументов, рассматривается как передача электрон- ной почты указанным пользователям. При этом команда запрашивает у отправителя краткие сведения о теме сообщения, а затем ожида- ет ввода самого сообщения или выполнения некоторой команды. В разделе "Как послать сообщение: команды с тильдой" описываются доступные пользователю средства, обеспечивающие возможность ре- дактирования сообщения, его объединения с файлами, добавления имен для копирования списков и других действий. Если пользователь вводит команду mailx без аргументов, команда проверяет наличие входящей электронной почты для этого пользо- вателя в файле с именем /usr/mail/входное_имя_пользователя. Ес- ли в этом файле есть электронная почта, пользователю выводится список тем сообщений и предоставляется возможность читать, сох ранять, удалять или перемещать каждое из сообщений в файл. В разделе "Как управлять входящей почтой" приводится ряд примеров и описываются имеющиеся опции команды. При использовании команды mailx необходимо создать в своем ос новном каталоге стартовый файл с именем .mailrc. Переменные, которые можно включить в этот стартовый файл, описываются в разделе "Файл .mailrc". Команда mailx имеет два режима работы: режим ввода и командный режим. Создание и передачу сообщений следует выполнять в режиме ввода. Командный режим используется для чтения входящей элект- ронной почты. Для управления режимами работы команды mailx мож но воспользоваться любым из следующих методов: вводить соответствующие опции в командой строке. (См. раздел mailx(1) в Справочнике пользователя.); запускать команды во время нахождения в режиме ввода, например, при формировании сообщения для передачи; этим командам всегда предшествует знак ~ (тильда) и их назы вают командами с тильдой (См. раздел mailx(1) в Спра вочнике пользователя.); запускать команды во время нахождения в командном режи- ме, например, при чтении входящей электронной почты; включать команды и переменные окружения в стартовый файл $HOME/.mailrc, находящийся в основном каталоге пользователя. Команды с тильдой рассматриваются в разделе "Как послать сооб- щение: команды с тильдой", возможности командного режима - в разделе "Как управлять входящей почтой", а файл .mailrc - в разделе "Файл .mailrc". 6.3.1.1 Опции команды mailx Команда mailx имеет следующий формат: |mailx [опции] [имя...] Опции управляют действием команды, а имя... определяет получа- телей электронной почты. Группа символов, не представляющих собой опцию (опции должен предшествовать дефис), рассматривается командой mailx как имя, т.е. как входное имя или псевдоним пользователя, которому пере дается сообщение. Две опции командной строки заслуживают специального упоминания: -f [имя_файла] Позволяет читать сообщения из файла с именем имя_файла, а не из почтового ящика. Поскольку команда mailx позволяет сохранять сообщения в любом указанном файле, возникает необходимость иметь опцию -f с тем, чтобы была возможность просматривать сохраненные сообщения. По умолчанию файлом сохранения сообщений служит файл $HOME/mbox, так что команда |mailx -f используется для просмотра сохраненных в этом файле со- общений. -n Предписывает не выполнять инициализацию с помощью файла mailx.rc, задаваемого в системе по умолчанию. Если пользователь имеет собственный файл .mailrc (см. раздел "Файл .mailrc"), команда mailx при наличии в ней опции -n не будет просматривать задаваемый по умолчанию системный файл для установления спецификаций, а обра- тится прямо к файлу .mailrc пользователя. Это приводит к более быстрой инициализации, причем существенно более быстрой, если система загружена. 6.3.2 Как послать сообщение: команды с тильдой Для передачи сообщения другому пользователю системы UNIX следу- ет ввести следующую команду: |$ mailx daves Указанное в команде входное имя должно принадлежать пользовате- лю, которому предназначено сообщение. Система переводит пользо- вателя, выполняющего эту команду, в режим ввода и запрашивает тему сообщения. (Если система очень загружена, появления приг- лашения Subject: можно ждать в течение нескольких секунд.) Это простейший способ выполнения команды mailx, и он очень мало от- личается от способа запуска команды mail. В представленных ниже примерах показано, как можно редактиро- вать передаваемые сообщения, включать в них уже существующи текст, изменять информацию в заголовке и выполнять другие дей- ствия, которые демонстрируют возможности команды mailx. Каждый пример сопровождается объяснением содержащихся в нем ключевых моментов. |$ mailx daves |Subject: Включение темы в сообщение является необязательным. Если она не включается, следует нажать клавишу возврата каретки. При этом курсор переместится на следующую строку, и будет ожидаться ввод текста сообщения. |$ mailx daves |Subject: встреча |У нас намечена встреча для новых пользователей |команды mailx в аудитории завтра в 9:00. |Нет ли у Вас желания провести демонстрацию? |Боб |~. |cc: |$ По поводу только что приведенного примера необходимо сделать два важных замечания. Пользователь делит свое сообщение на строки, нажимая в конце каждой из них клавишу возврата каретки. Это дела- ет более удобным чтение сообщения для получателя и пре- дохраняет от переполнения буфера строки. Закончить текст сообщения и осуществить его передачу можно путем ввода в начале строки знака тильды и точки (~.). Система отвечает предупреждением о конце текста (EOT) и выводом приглашения. В режиме ввода можно выполнить несколько команд. Любая команда состоит из знака тильды (~), за которым следует буква, и вво- дится в начале строки. Такую совокупность называют командой с тильдой. (См. раздел mailx(1) Справочника пользователя.) Боль- шая часть этих команд рассматривается в примерах данного разде- ла. С помощью опции -s пользователь может включить в командную строку тему своего сообщения. Например, командная строка: |$ mailx -s "встреча" daves эквивалентна следующей: |$ mailx daves |Subject: встреча Строка, содержащая тему, точно так же будет выглядеть и для по- лучателя сообщения. Заметим, что если тема сообщения состоит из нескольких слов, то при включении темы в командную строку ее необходимо заключать в кавычки. 6.3.2.1 Редактирование сообщения В режиме ввода команды mailx можно вызвать редактор, вводя в начале строки команду ~e. Ниже показан пример использования знака тильда: |$ mailx daves |Subject: Проверка действия тильды |При вводе текста сообщения, |который содержит какие-либо иксажения, |с помощью команды "~e" |можно вызвать желаемый редактор. | . | . | . Обратите внимание, что в этом сообщении есть орфографическая ошибка. Чтобы исправить ошибку с помощью редактора, для его вы- зова следует использовать команду ~e (по умолчанию вызывается редактор ed). | . | . | . |~e |12 |/иксажения/p |который содержит какие-либо иксажения, |s/икс/иск/p |который содержит какие-либо искажения, |w |132 |q |(continue) |Что еще я могу сказать Вам? | . В этом примере используется редактор ed. Какой редактор будет вызываться при выполнении команды ~e, определяется файлами .profile или .mailrc. Команда-переключатель ~v вызывает альтер нативный редактор (чаще всего редактор vi). При выходе из редактора ed (когда вводится команда q) команда mailx возвращает пользователя в режим ввода и выдает приглаше- ние продолжить ввод сообщения. В этот момент пользователь может предварительно просмотреть исправленное сообщение, введя коман- ду ~p. Команда ~p выводит все сообщение вплоть до того места, где было введено ~p. Таким образом, в любой момент при вводе сообщения можно просмотреть его текущее содержимое. | . | . | . |~p |Message contains: |To: daves |Subject: Проверка действия тильды | |При вводе текста сообщения, |который содержит какие-либо искажения, |с помощью команды "~e" |можно вызвать желаемый редактор. |Что еще я могу сказать Вам? |(continue) |~. |EOT |$ 6.3.2.2 Включение существующего текста в сообщение Команда mailx обеспечивает возможность включения в формируемо для передачи сообщение: файла; полученного сообщения; значения именованной переменной окружения; вывода выполненной команды интерпретатора shell. Показанные ниже примеры демонстрируют применение первых двух способов, которые наиболее часто используются на практике. Све- дения о двух других способах можно найти в разделе mailx(1) Справочника пользователя. 6.3.2.2.1 Ввод файла в сообщение |$ mailx daves |Subject: Планирование работы |Как можно увидеть из следующего |~r letters/file1 |"letters/file1" 10/725 |мы выделили часть работы для нас. |Пожалуйста, дайте Ваши соображения по этому поводу. |-Боб |~. |EOT |$ В данном примере показана команда с тильдой ~r, за которой сле- дует имя файла, подлежащего включению в сообщение. В ответ сис- тема выводит число строк и символов, содержащихся в этом файле. После этого необходимо оставаться в режиме ввода и продолжать вводить остальную часть сообщения. Когда получатель прочитает сообщение, в него будет включен текст файла letters/file1. (Можно, конечно, перед передачей сообщения предварительно прос- мотреть его содержимое с помощью команды с тильдой ~p.) 6.3.2.2.2 Включение в ответ сообщения из почтового ящика |$ mailx |mailx version 3.1 2/9/85 Type ? for help. |"usr/mail/roberts": 2 messages 1 new |>N 1 abc Tue May 1 08:09 8/155 Включение сообщения | 2 hqtrs Mon Apr 30 16:57 4/127 Расписание |? m jones |Subject: Изменение расписания |Как тебе нравится это новое расписание? |~f 2 |Interpolating: 2 |(continue) |Обрати внимание: мы учимся в субботу!!! |-Роберт |~. |EOT |? В этом примере иллюстрируются несколько важных моментов. Сначала в командном режиме осуществляется чтение входящей электронной почты. Затем с помощью команды m jones произ- водится переключение в режим ввода (для посылки сообщения пользователю с именем jones). Команда с тильдой ~f используется в режиме ввода для того, чтобы включить одно из сообщений почтового ящика в отправ- ляемое сообщение. Число 2 после команды ~f означает, что включению подлежит сообщение 2. Команда mailx извещает пользователя о включении сообщения в исходящую электронную почту и затем предлагает ему про- должить ввод сообщения. После завершения формирования и передачи сообщения пользо- ватель возвращается в командный режим, что определяется наличием приглашения ?. Теперь можно либо выполнить еще какие-либо действия в командном режиме, либо выйти из ко- манды mailx, введя q. Другая команда с тильдой ~m работает таким же образом, как и команда ~f, с той лишь разницей, что она для вводимого сообще- ния делает отступ, соответствующий одному знаку табуляции. Обе команды (~m и ~f) действуют только в том случае, если пользова- тель начинает работать в командном режиме, а затем вводит ко- манду, которая переводит в режим ввода. Другие команды, работа ющие подобным образом, рассматриваются в разделе "Как управлять входящей почтой". 6.3.2.3 Изменение частей заголовка сообщения Заголовок сообщения команды mailx содержит четыре компонента: тему сообщения; имя получателя (получателей) сообщения; список рассылки; "тайный" список рассылки. Когда пользователь вводит команду mailx, задавая в ней входное имя получателя или его псевдоним, осуществляется переход в ре- жим ввода и на терминал выводится приглашение, указывающее на необходимость ввода темы сообщения. После того, как посредством нажатия клавиши возврата каретки завершается ввод строки с те- мой сообщения, команда mailx ожидает ввода самого сообщения. Если в режиме ввода в какой-либо момент возникает потребность изменить или дополнить заголовок, можно использовать четыре ко манды с тильдой: ~h, ~t, ~c и ~b. ~h Выводит все поля заголовка с их текущими значе- ниями: тему сообщения, список рассылки и "тай- ный" список рассылки. Текущее значение поля можно изменить, дополнить или, нажав клавишу возврата каретки, оставить без изменения. ~t Позволяет добавлять имена к списку получателей. Именами могут быть как входные имена, так и псевдонимы. ~c Позволяет создавать или дополнять список рас- сылки сообщения. Имена пользователей, которым должно быть передано сообщение, могут вводиться как в виде логических имен, так и в виде псев- донимов. ~b Позволяет создавать или дополнять "тайный" спи- сок рассылки сообщения. Все команды с тильдой должны размещаться с первой позиции стро- ки. Для команд ~t, ~c и ~b любая дополнительная информация в принимаемой строке подлежит включению в соответствующий список. В строке, которая начинается с ~h, любая дополнительная инфор- мация игнорируется. 6.3.2.4 Добавление подписи к сообщению В соответствии со своими пожеланиями пользователь с помощью двух переменных окружения sign и Sign может установить две раз- личные подписи. Их можно вызывать посредством команд с тильдой ~a или ~A соответственно. Пусть в качестве значения, вызываемо- го командой ~A, установлено словосочетание Организатор поезд- ки. Ниже показано, каким образом его использовать: |$ mailx -s внимание!! |Всем быть готовым к 15.00. |~A |Организатор поездки |~. |EOT |$ Наличие двух команд с тильдой (~a и ~A) дает возможность поль зователю устанавливать две формы своей подписи. Однако, пос- кольку входное имя отправителя автоматически появляется в заго- ловке сообщения при его чтении, для идентификации отправителя подпись не требуется. 6.3.2.5 Сохранение переданных сообщений Команда mailx предоставляет несколько возможностей для сохране- ния исходящих сообщений. Две такие возможности, которые не тре буют установки каких-либо переменных окружения, реализуются с помощью команды с тильдой ~w и опции -F командной строки. Команда ~w, за которой следует имя файла, записывает сообщение в файл с указанным именем. Например: |$ mailx bdr |Subject: Сохранение сообщения |Для пересылки копии сообщения |в файл используйте "~w". |~w savemail |"savemail" 2/71 |~. |EOT |$ Если теперь вывести содержимое файла savemail, получим следую- щее: |$ cat savemail |Для пересылки копии сообщения |в файл используйте "~w". |$ Недостатком этого метода, как видно из последнего примера, яв- ляется то, что не сохраняется заголовок сообщения. При использовании в командной строке опции -F заголовок сообще- ния сохраняется. Это демонстрируется ниже: |$ mailx -F -s Пересылка bdr |Посылаем сообщение в файл bdr текущего |каталога. |~. |EOT |$ Результат выполнения этой команды можно проверить, просмотрев файл bdr. |$ cat bdr |From: kol Fri May 2 11:14:45 1989 |To: bdr |Subject: Пересылка | |Посылаем сообщение в файл bdr текущего |каталога. |$ Опция -F добавляет текст сообщения к файлу с именем первого ад- ресата. Если для задания получателя (или получателей) использо- ван псевдоним (или псевдонимы), то в качестве имени файла б рется первое входное имя первого псевдонима, обращенного в со- ответствующее входное имя (или имена). Выше было отмечено, что если файл с таким именем существует в текущем каталоге пользо- вателя, текст сообщения добавляется к этому файлу. 6.3.2.6 Выход из команды mailx По завершении формирования сообщения из команды mailx можно выйти, вводя любую из следующих трех команд. ~. Точка с тильдой (~.) служит стандартным спосо- бом выхода из режима ввода. С помощью нее вы- полняется также пересылка сообщения. Если поль- зователь вошел в режим ввода из командного ре- жима команды mailx, то после выполнения команды с тильдой ~. он возвращается в командный режим, что указывается выдачей приглашения ?. Если же пользователь начинал работать после запуска ко- манды mailx в режиме ввода, он возвратится в интерпретатор shell (это определяется наличием приглашения интерпретатора). ~q Команда с тильдой ~q моделирует прерывание. Она позволяет выйти из режима ввода команды mailx. Если текст сообщения уже введен, он будет сох- ранен в файле с именем dead.letter в текущем каталоге пользователя. ~x Команда с тильдой ~x моделирует прерывание. Она позволяет выйти из режима ввода команды mailx без сохранения какой-либо информации. 6.3.2.7 Заключение В предшествующих параграфах были описаны и показаны примеры ря да команд с тильдой, которые доступны при передаче сообщений с помощью команды mailx. (См. раздел mailx(1) Справочника пользо вателя.) 6.3.3 Как управлять входящей почтой Утилита mailx имеет свыше 15 команд, которые облегчают управле- ние электронной почтой. Полный список команд (и их синонимов), представленный в алфавитном порядке, см. в разделе mailx(1) Справочника пользователя. Наиболее часто используемые команды, а также способы задания аргументов описаны в следующих подраз- делах: Использование списка_сообщений в качестве аргумента ко- манд. Команды чтения и удаления электронной почты. Команды для сохранения электронной почты. Команды для посылки ответа на полученную электронную почту. Команды для выхода из утилиты mailx. 6.3.3.1 Использование списка_сообщений в качестве аргумента команд Аргумент большинства команд в mailx может принимать форму спис- ка_сообщений. Использование такого аргумента позволяет указы- вать команде совокупность сообщений, над которыми нужно выпол нить данное действие. Если команда предполагает наличие аргу- мента список_сообщений, но пользователь не указывает его, то она выполняется над текущим сообщением. Для задания списка_со- общений может быть использован любой из следующих форматов: n сообщение с номером n ^ первое неудаленное сообщение $ последнее сообщение * все сообщения n-m сообщения с номерами из указанного диапазона имя все сообщения от пользователя с входным именем имя /текст все сообщения, содержащие текст в строке темы сообщения (регистр букв не имеет значения) :тип все сообщения, имеющие данный тип d - удаленные сообщения n - новые сообщения o - старые сообщения r - прочитанные сообщения u - непрочитанные сообщения Имеет ли тип спецификации смысл, определяется контекстом коман- ды. Ниже представлены два примера (знак ? служит подсказкой режима ввода команды mailx): |? d 1-3 [Удалить сообщения 1, 2 и 3] |? s bdr bdr [Сохранить все сообщения, пришедшие от пользователя bdr в файле с именем bdr] Другие примеры приводятся в последующих трех подразделах. 6.3.3.2 Команды чтения и удаления электронной почты Когда в почтовый ящик пользователя поступает сообщение, на эк- ране появляется следующее предупреждение: |you have mail (для Вас есть электронная почта) Предупреждение появляется при входе пользователя в систему или когда он возвращается в интерпретатор shell из какой-либо дру- гой процедуры. 6.3.3.2.1 Чтение электронной почты Для чтения электронной почты следует ввести утилиту mailx с ар- гументами или без них. Выполнение команды переводит пользовате- ля в командный режим утилиты mailx. После этого на экране появ- ляется информация примерно такого вида: |mailx version 3.1 10/19/89 Type ? for help |"/usr/mail/bdr": 3 messages 3 new |> N 1 rbt Thur Apr 30 14:20 8/190 Обзор сессии | N 2 admin Thur Apr 30 15:56 5/84 Новый принтер | N 3 daves Fri May 1 08:39 64/1574 Реорганизация |? В первой строке указывается версия команды mailx, используемой на данной системе, выводится дата и напоминание о том, что пос- редством ввода вопросительного знака (?) можно получить сведе- ния о работе с командой. Вторая строка определяет маршрутное имя файла, из которого осуществляется вывод на экран (обычно имя файла совпадает с входным именем пользователя), а также об- щее количество сообщений и их состояние. Оставшаяся часть выве денного представляет собой информацию из заголовков пришедших сообщений. Сообщения располагаются так, что последнее из при- шедших сообщений попадает в нижнюю часть списка. Левее номеров могут находиться индикаторы состояния: N - для новых сообщений, U - для непрочитанных. Знак больше (>) указывает на текущее со- общение. Другие поля строки заголовка определяют имя пользова теля, который породил сообщение, день недели, месяц, дату и время поступления, число строк и символов в сообщении, а также тему сообщения. Последнее поле может быть пустым. После вывода заголовка на экран пользователь может вывести сами сообщения, нажимая клавишу возврата каретки или вводя команду, за которой следует список_сообщений. Если ввести команду без аргумента, то она применяется к сообщению, помеченному знаком больше >. Нажатие клавиши возврата каретки эквивалентно вводу команды p (от print) без аргумента список_сообщений. При этом выводится сообщение, на которое указывает знак больше >. Для чтения некоторого другого сообщения (или последовательно нес- кольких сообщений) необходимо ввести команду p или t (от type), за которой следует список_сообщений. Ниже приводится ряд прим ров: |? [Вывести текущее сообщение.] |? p 2 [Вывести сообщение номер 2.] |? p daves [Вывести все сообщения, поступившие от пользователя daves.] Команда t является синонимом команды p. 6.3.3.2.2 Просмотр собственного почтового ящика Утилита mailx позволяет пользователю просматривать сообщения своего почтового ящика с тем, чтобы решить, на какие из них следует обратить внимание в первую очередь. Когда пользователь в первый раз входит в командный режим утили- ты mailx, на экране появляется информация об общем числе имею- щихся сообщений и выводятся строки заголовков для двадцати из них. (Если вход в систему осуществляется через телефонную ли нию, то выводятся строки заголовков только для десяти сообще- ний.) Если общее число сообщений превышает емкость одного экра на, следующий экран можно вывести, вводя команду z. Для вывода предыдущего экрана (если он существует) следует ввести z-. Если возникает потребность просмотреть информацию заголовков особой группы сообщений, необходимо ввести команду f (от from), за ко- торой следует список_сообщений. Ниже показан пример использования этих команд: ? z [Передвинуться вперед на один кадр строк заголовков.] ? z- [Передвинуться назад на один кадр.] ? f daves [Вывести заголовки всех сообщений, пос- тупивших от пользователя daves.] 6.3.3.2.3 Переход на другие файлы электронной почты Когда пользователь вводит команду: |$ mailx он просматривает файл /usr/mail/входное_имя_пользователя. Команда mailx допускает переход к другим файлам электронной почты и применение к содержимому этих файлов различных вариан- тов данной команды. (Можно переходить и в файл, который не яв ляется файлом электронной почты, но если попытаться выполнить команду mailx, выводится сообщение No applicable messages). Пе- реход в другой файл осуществляется с помощью команды fi или fold (они являются синонимами), за которой указывается аргумент - имя_файла. Вместо имени_файла можно указывать следующие спе- циальные символы: % текущий почтовый ящик %входное_имя почтовый ящик владельца с именем вход ное_имя (если пользователь имеет требу- емые права доступа к этому почтовому ящику) # предшествующий файл & текущий файл mbox Ниже показан пример того, как это может выглядеть на экране: |$ mailx |mailx version 3.1 10/19/89 Type ? for help. |"usr/mail/daves": 3 messages 2 new 1 unread | U 1 jaf Sat May 6 07:55 7/137 проба25 |> N 2 todd Sat May 6 08:59 9/377 единые требования | N 3 has Sat May 6 11:08 29/1214 Поездка в Киев | |? fi & [Вводим эту команду для перехода в файл mbox.] | |Held 3 messages in /usr/mail/daves |"/fsl/daves/mbox": 74 messages 10 unread | . | . | . |? q |$ 6.3.3.2.4 Удаление электронной почты Для удаления сообщений следует ввести команду d (от delete), за которой указывается список_сообщений. Если этот аргумент опу- щен, удаляется текущее сообщение. Но на самом деле сообщения не удаляются до тех пор, пока пользователь не выйдет из файла об- рабатываемого почтового ящика. В связи с этим команда u (от un- delete) дает возможность пользователю изменить свое намерение удалить сообщения. При выполнении команды выхода q (от quit) и при переходе к другому файлу, удаление сообщений не производит- ся. Утилита mailx позволяет объединять команды удаления и вывода сообщения и вводить в качестве такой составной команды dp. Эта команда удаляет текущее сообщение, уже прочитанное пользовате- лем, и выводит следующее сообщение. Ниже представлен ряд приме- ров с командой удаления сообщений: |? d * [Удалить все сообщения.] |? d r [Удалить все прочитанные сообщения.] |? dp [Удалить текущее сообщение и вывести следующе- е.] |? d 2-5 [Удалить сообщения со второго по пятое.] 6.3.3.3 Команды для сохранения электронной почты Все явно неудаленные сообщения при выходе из утилиты mailx сох раняются. Сообщения, которые были прочитаны пользователем, сох- раняются файле mbox его основного каталога. Файлы, которые еще не были прочитаны, остаются в почтовом ящике пользователя (/usr/mail/входное_имя_пользователя). Команда сохранения сообщений имеет две формы: в виде прописной или строчной буквы s. Синтаксис версии команды с прописной бук- вой S имеет вид: |S [список_сообщений] При этом сообщения, указанные аргументом список_сообщений, сох- раняются в файле текущего каталога, который имеет имя автора первого сообщения в списке. Синтаксис команды со строчной буквой s имеет вид: |s [список_сообщений] [имя_файла] При этом сообщения, указанные в списке_сообщений, сохраняются в файле с именем, определяемым аргументом имя_файла. Если опущен список_сообщений, сохраняется текущее сообщение. Если в качестве имен файлов используются входные имена, это мо жет привести к некоторой двусмысленности. Если утилита mailx окажется неспособной разрешить ее, будет выдано сообщение об ошибке. 6.3.3.4 Команды для посылки ответа на полученную электронную почту Команда для посылки ответа на полученную электронную почту вво- дится в двух формах: в виде прописной (верхний регистр) или строчной (нижний регистр) буквы r. R вызывает передачу ответа только пользователю, являюще муся отправителем сообщения; r ответ подлежит передаче не только отправителю сообще- ния, но и всем другим его получателям . Существуют и другие различия между этими командами. Более де- тально см. в разделе mailx(1) Справочника пользователя. Когда пользователь посылает ответ на сообщение, строка темы ис- ходного сообщения используется в качестве темы для ответа. Ниже представлен пример того, как это выглядит на самом деле: |$ mailx | |mailx version 3.1 10/19/86 Type ? for help. |"usr/mail/daves": 3 messages 2 new 1 unread | U 1 jaf Sat May 6 07:55 7/137 проба25 |> N 2 todd Sat May 6 08:59 9/377 единые требования | N 3 has Sat May 6 11:08 29/1214 Поездка в Киев | |? R 2 |To: todd |Subject: Re: единые требования Если предположить, что сообщение, имеющее в качестве темы сло- восочетание "единые требования", передано ряду дополнительных пользователей (выполнена команда r), заголовок мог бы иметь примерно такой вид: |? r 2 |To: todd eg has jcb bdr |Subject: Re: единые требования 6.3.3.5 Команды для выхода из утилиты mailx Существует два стандартных способа выхода из утилиты mailx: с помощью команды q или команды x. Если выход осуществляется пос- редством команды q, то на экран выводятся сообщения, содержащие краткое описание того, что пользователь делал со своей элект- ронной почтой. Например: |? q |Saved 1 message in /fsl/bdr/mbox |Held 1 message in /usr/mail/bdr |$ Исходя из приведенного примера, можно предположить, что пользо- ватель с именем bdr получил по крайней мере два сообщения, пр читал одно из них и либо оставил второе непрочитанным, либо вы- полнил команду, которая сохранила его в каталоге /usr/mail/bdr. Если существовало больше двух сообщений, то остальные были уда- лены или сохранены в других файлах. Утилита mailx не выводит о них никаких сообщений. Если выход из утилиты mailx выполняется с помощью команды x, то это почти соответствует тому случаю, когда пользователь вообще не входил в нее. Прочитанная электронная почта и удаленные со- общения остаются в почтовом ящике пользователя. Однако, если пользователь сохранил сообщения в других файлах, то это дейст- вие уже свершилось и не аннулируется командой x. 6.3.3.6 Краткое описание утилиты mailx В предыдущих подразделах были описаны некоторые наиболее часто используемые с утилитой mailx команды. (Полный их список смот- рите в разделе mailx(1) в Справочнике пользователя.) Если поль- зователю необходима помощь, когда он находится в командном ре- жиме утилиты mailx, ему следует ввести либо вопросительный знак ?, либо help после приглашения ?. При этом на экран терминала будут выведены список команд mailx и их функции. 6.3.4 Файл .mailrc Файл .mailrc содержит команды, которые подлежат выполнению при вызове утилиты mailx. В системе UNIX может существовать общесистемный стартовый файл с именем /usr/lib/mailx.rc. Если он есть, то используется адми- нистратором системы для установки общих переменных. Однако, ес ли переменная установлена и в mailx.rc, и в .mailrc, использо- ваться будет установленная в файле .mailrc пользователя. Большинство команд утилиты mailx могут включаться в файл .ma- ilrc. В то же время перечисленные ниже команды в файле .mailrc недопустимы: ! (или) shell перейти в интерпретатор shell; Copy сохранить сообщения из списка_сообщений в файле с именем автора сообщения; edit вызвать редактор ed; visual вызвать редактор vi; followup ответить на сообщение; Followup ответ на сообщение посылать всем отпра- вителям сообщений из указанного спис- ка_сообщений; mail перейти в режим ввода; reply ответить на сообщение; Reply ответить отправителю каждого сообщения из списка_сообщений. Пользователь с помощью какого-либо редактора может создать свой собственный файл .mailrc или же может скопировать файл другого пользователя. Ниже показан пример файла .mailrc. |if r | cd $HOME/mail |endif |set allnet append asksub askcc autoprint dot |set metoo quit save showto header hold keep keepsave |set outfolder |set folder='mail' |set record='outbox' |set crt=24 |set EDITOR='/bin/ed' |set sign='Роберт' |set Sign='Гордеев Роберт, организатор поездки' |set toplines=10 |alias fred fjs |alias bob rcm |alias alice ap |alias mark mct |alias donna dr |alias pat pat |group robertsgrp fred bob alice pat mark |group accounts robertsgrp donna Показанный в примере файл содержит исключительно полезные ко- манды: set, alias и group. Команда set используется для задания значений переменных окру- жения. Команда имеет следующий синтаксис: set set имя set имя=цепочка_символов set имя=число При выполнении команды set без каких-либо аргументов выводится список всех установленных переменных и их значений. Аргумент имя определяет переменную окружения. В команде set можно указы- вать несколько аргументов имя. Некоторые переменные принимают строковые или числовые значения. Строковые значения заключаются в апострофы. Когда путем присваивания вида HOME=входное_имя устанавливается значение переменной окружения, это по сути дела говорит shell'у о том, как интерпретировать переменную. Однако, этот тип прис- ваивания в shell'е не обеспечивает доступность значения пере менной для других системных программ UNIX, которым необходимо обращаться к переменным окружения. Чтобы сделать ее доступной, следует экспортировать переменную. Ранее, при установке пере менной TERM в окружении пользователя, применялась команда ex- port: |$ TERM=5425 |$ export TERM Когда пользователь экспортирует таким образом переменные из shell'а, в отношении программ, которые обращаются к переменным окружения, говорят, что они импортируют их. Некоторые из этих переменных (такие, как EDITOR и VISUAL) не являются специфичес- кими только для команды mailx, а могут задаваться как общие пе- ременные окружения и импортироваться из исполнительного окруже- ния пользователя. Если значение для импортируемой переменной устанавливается в файле .mailrc, то импортируемое (внешнее) значение игнорируется. Существует команда unset, но она оказы- вает действие только на переменные, устанавливаемые в файле .mailrc и никак не влияет на значения импортируемых переменных. Имеется сорок одна переменная окружения, которая может опред ляться в файле .mailrc пользователя; многие из них описываются в данном руководстве. Полную информацию о них можно найти в разделе mailx(1) Справочника пользователя. Три переменные из приведенного выше примера заслуживают особого внимания, поскольку они демонстрируют то, каким образом органи- зовать запись сообщений в файлы. Этими переменными являются folder, record и outfolder. Все три переменные взаимосвязаны и управляют каталогами и файлами, в которых сохраняются копии со- общений. Для присваивания значения переменной folder используется следу ющий формат: |set folder=каталог При этом устанавливается каталог, в котором пользователь соби рается сохранять стандартные файлы электронной почты. Если имя указанного каталога начинается не со знака /, то предполагает- ся, что оно относится к каталогу $HOME. Если переменная folder является экспортированной shell-переменной, пользователь может определять имена файлов (в командах, которые требуют в качестве аргумента имя_файла) со знаком / перед их именами; имя будет расширено, чтобы поместить файл в каталог, определяемый пере- менной folder. Для присваивания значения переменной record используется следу- ющий формат: |set record=имя_файла В этом случае команде mailx предписывается сохранять копию всех исходящих сообщений в указанном файле. Информация заголовка сохраняется вместе с текстом самого сообщения. По умолчанию эта переменная не установлена. Если переменная outfolder определена, то файл, в котором запо- минаются копии исходящих сообщений и который задается перемен- ной record, подлежит размещению в каталоге, соответствующем значению переменной folder. Переменная outfolder устанавливает- ся при выполнении команды set с именем этой переменной. По умолчанию используется nooutfolder. Команды alias и group являются синонимами. В приведенном выше примере, команда alias использовалась для связывания некоторого имени с единственным входным именем; команда group применяется в тех случаях, когда необходимо, чтобы к нескольким именам мож- но было обращаться посредством одного псевдонима. Это хороший пример для того, чтобы различать индивидуальные и групповые псевдонимы, но при желании эти команды можно трактовать как полностью эквивалентные. Заметим, что псевдонимы могут быть вложенными. В показанном выше файле .mailrc, псевдоним robertsgrp соот- ветствует пяти пользователям; три из них указаны ранее опреде- ленными псевдонимами, а один - входным именем. Пятый пользова- тель с именем pat определяется, как входным именем, так и псев- донимом. Следующая команда group, определяющая псевдоним acco- unts, использует псевдоним robertsgrp и donna. Псевдоним acco- unts распространяется на двенадцать входных имен. Показанный пример файла .mailrc включает в себя и команду if endif. Полный формат этой команды имеет следующий вид: |if s|r mail_команда | else mail_команда |endif s и r соответствуют send (послать) и receive (получить), поэто- му пользователь может вызвать на исполнение некоторые команды инициализации в зависимости от того, в режим ввода (send) или в командный режим происходит вход при выполнении утилиты mailx. В предшествующем примере, команда перехода в каталог $HOME/mail выполняется, если осуществляется чтение электронной почты; пользователь решил установить подкаталог для управления входя- щей электронной почтой. Рассмотренные в данном разделе переменные окружения, наиболее часто включаются в файл .mailrc. Однако, пользователь может оп ределять любую из них на время одного сеанса работы, если толь ко он находится в командном режиме. Полный список переменных окружения, которые можно устанавливать в команде mailx, см. в разделе mailx(1) Справочника пользователя. 6.4 ПЕРЕСЫЛКА И ПОЛУЧЕНИЕ ФАЙЛОВ В этом разделе описываются команды, предназначенные для переда- чи файлов: команда mail для небольших файлов (со страницу или меньше) и команды uucp и uuto для больших файлов. Команда mail может применяться для передачи файла, как в пределах локальной системы, так и на удаленную систему. Команды uucp и uuto позво- ляют передавать файлы с одной системы на другую. 6.4.1 Пересылка небольших файлов Чтобы командой mail переслать файл как сообщение, необходимо командной строке осуществить переадресацию ввода на этот файл. С этой целью следует использовать знак переадресации < (мень- ше): |mail входное_имя < имя_файла Здесь входное_имя является входным идентификатором ID получате ля, а имя_файла - имя подлежащего пересылке файла. Например, чтобы переслать копию файла с именем agenda пользователю с входным именем sarah (в той же системе UNIX), следует ввести следующую командную строку: |$ mail sarah < agenda |$ Наличие приглашения во второй строке означает, что содержимое файла agenda передано. Когда пользователь с именем sarah запус- тит команду mail для чтения своих сообщений, он получит содер жимое файла agenda. Для пересылки того же самого файла нескольким пользователям этой же системы UNIX необходимо использовать такую же командную строку с той лишь разницей, что на месте единственного входного идентификатора ID пользователя поместить несколько, разделенных пробелами. Например: |$ mail sarah tommy dingo wombat < agenda |$ И в данном случае приглашение, выдаваемое системой в ответ на введенную командную строку, служит сигналом о том, что сообщ ние послано. Такой же формат командной строки, но с одним дополнением, может применяться и для пересылки файла пользователю, находящемуся на удаленной системе UNIX, которая может связываться с данной сис- темой. В этом случае, перед входным именем пользователя-получа- теля необходимо указать имя удаленной системы, разделяя эти имена восклцательным знаком !: |mail система!входное_имя < имя_файла Например: |$ mail dumbo!wombat < agenda |$ Приглашение системы во второй строке означает, что сообщение (содержащее файл) поставлено в очередь для передачи. При использовании команды mailx для пересылки файла нельзя при- менять синтаксис командной строки команды mail. Вместо этого используется опция ~r: |$ mailx phyllis |Subject: Напоминание |~r memo |$ 6.4.2 Пересылка больших файлов Команды uucp и uuto позволяют передавать файлы на удаленную ЭВМ. Команда uucp допускает пересылку файлов в каталог адресуе- мой системы, который выбирает сам пользователь. Если пользова- тель передает файл в каталог, владельцем которого является он сам, разрешение на размещение файла в этом каталоге будет полу- чено (Сведения о правах доступа к файлам и каталогам см. в гл.3.) Однако, если пользователь передает файл в каталог друго- го пользователя, он должен быть заранее уверен, что владелец этого каталога дал разрешение на запись файла в свой каталог. Кроме того, поскольку необходимо указывать маршрутные имена (которые часто бывают длинными), командные строки могут быть громоздкими и содержать ошибки. Команда uuto является расширенной версией команды uucp. Она ав- томатически пересылает файлы в общедоступный каталог с именем /usr/spool/uucppublic, находящийся в системе получателя. Это означает, что пользователь не может выбирать файл, в который осуществляется передача. Однако, это также означает, что поль- зователь может передавать файл в любой момент времени без како- го-либо разрешения на запись от владельца файла-адресата. Нако- нец, командная строка uuto короче и проще чем командная строка uucp. При вводе командной строки uuto вероятность допустить ошибку существенно уменьшается. 6.4.2.1 Готовность к передаче: имеются ли права доступа? Перед тем, как действительно пересылать файл с помощью команды uucp или uuto, необходимо узнать, подлежит ли передаче файл или нет, т.е. можно ли его читать. Для этого следует проверить пра- ва доступа к файлу. Если они не соответствуют требуемым, их не обходимо изменить, используя команду chmod (при условии, что пользователь является владельцем файлов). Права доступа к фай- лам и команда chmod рассматриваются в гл. 3. Перед тем, как пересылать файл с использованием команд uucp или uuto необходимо проверить следующие права доступа:. Подлежащий передаче файл должен иметь разрешение на чтение (r) для категории "остальные пользователи". Каталог, содержащий файл, должен иметь разрешение на чтение (r) и выполнение (x) для категории "остальные пользователи". Допустим, что у пользователя есть файл с именем chicken в ката- логе soup (в его основном каталоге), и он собирается переслать копию файла chicken другому пользователю с помощью команды uuto. Сначала проверим права доступа к каталогу soup: |$ ls -l |total 4 |drwxr-xr-x 2 reader group1 45 Feb 9 10:43 soup |$ Вывод команды ls показывает, что каталог soup имеют право чи- тать (r) и выполнять (x) все три категории пользователей, поэ тому нет необходимости вносить какие-либо изменения в права доступа. После этого с помощью команды cd перейдем из основного каталога пользователя в каталог soup и проверим права доступа к файлу chicken: |$ ls -l chicken |total 4 |-rw------- 1 reader group1 3101 Mar 1 18:22 chicken |$ Вывод команды означает, что только пользователь (владелец) име- ет право читать файл chicken и никто, кроме него. Чтобы доба- вить право на чтение для группы пользователя (g) и остальных пользователей (o), следует выполнить команду chmod: |$ chmod go+r chicken Теперь снова проверим права доступа командой ls -l: |$ ls -l chicken |total 4 |-rw-r--r-- 1 reader group1 3101 Mar 1 18:22 chicken |$ Это подтверждает, что теперь файл можно пересылать с помощью команды uucp или uuto. После пересылки копии файла пользователь может выполнить обратную процедуру и восстановить предыдущие права доступа. 6.4.2.2 Команда uucp Команда uucp (сокращение от UNIX-to-UNIX system copy) позволяет пользователю копировать файл прямо в основной каталог пользова- теля другой системы или в любой другой каталог, который он ука зывает и в который имеет право на запись. Команда uucp не является интерактивной командой, а выполняет свои функции незаметно для пользователя. Запустив эту команду, пользователь может перейти к выполнению других процессов. Передача файла между ЭВМ является многошаговой процедурой. Во- первых, должен быть создан рабочий файл, содержащий инструкции для передачи файла. При необходимости формируется и файл данных (копия файла, подлежащего пересылке). После запуска, команда uucp выполняет описанные выше предварительные операции (созда- вая необходимые файлы в специально предназначенном для этого каталоге с именем spool), а затем вызывает демон uucio, который в действительности передает файл. (Демоны являются системными процессами, которые выполняются в фоновом режиме.) Файл помеща- ется в очередь, и uucio пересылает его в первый же подходящий момент. Таким образом, команда uucp дает возможность пользователю пере- давать файлы на удаленную ЭВМ, не зная ничего, кроме имени уда- ленной ЭВМ и, возможно, входного идентификатора ID удаленного пользователя (или пользователей), которому пересылается файл. Команда uucp дает возможность пользователю пересылать: один файл в файл или каталог; несколько файлов в каталог. Для того, чтобы правильно передать файл (или файлы), команда uucp должна знать полное маршрутное имя как файла_источника, так и файла_приемника. Однако, это не значит, что пользователь должен вводить полное маршрутное имя обоих файлов при каждом вызове команды uucp. Существует несколько сокращений, подробно познакомившись с форматами которых хотя бы раз, затем их можно без затруднений использовать. Команда uucp сама расширит их д полных маршрутных имен. Чтобы выбрать подходящие обозначения для файла_источника и файла_приемника, пользователю следует начать с определения мес- тонахождения файла_источника по отношению к собственному теку- щему положению в файловой системе. (Предположим, что в данный момент файл_источник находится в той же системе, что и сам пользователь.) Если файл_источник в текущем каталоге пользов теля, последний может указать его одним именем (без маршрута). Если же файл_источник не в текущем каталоге, пользователь дол- жен указать его полное маршрутное имя. Как задать файл_приемник? Поскольку он находится на удаленной системе, файл_приемник всегда следует определять с помощью маршрутного имени, которое начинается с имени удаленной систе- мы. После этого можно указать полное маршрутное имя или исполь- зовать любую из двух форм сокращений. Имя файла_приемника долж- но иметь один из следующих трех форматов: имя_системы!полное_маршрутное_имя имя_системы!~входное_имя[/имя_каталога/имя_файла] имя_системы!~/входное_имя[/имя_каталога/имя_файла] Входное_имя в этом случае принадлежит получателю файла. До сих пор описывалось, как передавать файлы с данной (локаль ной) системы на удаленную систему. Однако, с помощью команды uucp, можно передать файл и с удаленной ЭВМ на данную систему. В любом случае для задания как файла_источника, так и файла_п- риемника можно использовать описанные выше форматы. При выборе одного из этих форматов существенно не то, является ли файл файлом_источником или файлом_приемником, а то, в каком месте в текущий момент находится пользователь по отношению к задаваемым файлам. Следовательно, в показанных выше форматах входное_имя могло означать входное имя владельца файла или получателя (как файла_источника, так и файла_приемника). Например, пусть пользователь имеет входное имя kol в системе с именем mickey. Основным каталогом пользователя служит каталог /usr/kol, и он собирается переслать файл с именем chap1 (нахо- дящийся в каталоге text основного каталога пользователя) поль- зователю с входным именем wsm, работающему в системе с именем minnie. В текущий момент пользователь-отправитель находится в каталоге /usr/kol/text, поэтому он может задавать файл_источник с помощью относительного маршрутного имени chap1. Зададим фай- л_приемник любым из способов, перечисленных ниже: Задание файла_приемника полным маршрутным именем: |uucp chap1 minnie!/usr/wsm/recieve/chap1 Задание файла_приемника, путем указания конструкции ~входное_имя (которое расширяется до имени основного каталога получателя) и имени для нового файла. |uucp chap1 minnie!~wsm/recieve/chap1 (Файл будет перемещен в файл minnie!/usr/wsm/recieve/chap1.) Задание файла_приемника, путем указания конструкции ~входное_имя (которое расширяется до имени основного каталога получателя), но без имени для нового файла; команда uucp присвоит новому файлу то же самое имя, что и у файла_источника. |uucp chap1 minnie!~wsm/recieve (Файл будет перемещен в файл minnie!/usr/wsm/recieve/chap1.) Задание файла_приемника с помощью конструкции ~/входно- е_имя. В этом случае происходит расширение на подката- лог получателя в общедоступном каталоге на удаленной системе. |uucp chap1 minnie1~/wsm (Файл будет перемещен в файл minnie!/usr/spool/uucppublic/wsm.) Предположим, что необходимо переслать файл с именем minutes на удаленную ЭВМ, имеющую имя eagle. Введем командную строку, по- казанную ниже: |$ uucp -m -s status -j minutes eagle!/usr/gws/minutes |eagleN3f45 |$ В данном случае файл minutes (находящийся в текущем каталоге на локальной ЭВМ) пересылается на удаленную машину eagle и разме- щается в каталоге с маршрутным именем /usr/gws в файле minutes. Когда передача завершается, пользователь gws на удаленной ЭВМ извещается выводом ему почтового сообщения. Опция -m гарантирует, что отправитель тоже получит сообщение о том, успешно или нет завершена передача. Опция -s, за которой следует имя файла (status), указывает программе на необходи мость поместить сообщение о состоянии операции передачи в файл status. Примечание Не забудьте включить имя файла после опции -s. Если не сделать этого, то будет выдано сообщение: uucp failed completely (команда uucp аварийно завершена). Идентификатор задания ID (eagleN3f45) выводится при наличии оп ции -j. Даже если команда uucp не извещает пользователя об успешном за- вершении передачи файла вскоре после того, как он послал его, нет оснований считать, что передача завершилась аварийно. Не все системы, снабженные сетевым программным обеспечением, имеют аппаратуру, необходимую для вызова других систем. Файлы, подле- жащие передаче с этих так называемых пассивных систем, должны периодически собираться активными системами, которые снабжены необходимой аппаратурой (более детальные сведения см. в разделе "Как работает команда uucp"). Следовательно, если пользователь выполняет передачу файлов с пассивной системы, он может ощущать некоторую задержку. Узнайте у администратора своей системы, яв- ляется Ваша система активной или пассивной. В предыдущем примере для задания файла_приемника используется полное маршрутное имя. Имеются два других способа, которыми мо- жет указываться файл_приемник. Входной каталог пользователя gws может быть задан с ис- пользованием знака тильды ~, как показано ниже: |eagle!~gws/minutes Это интерпретируется так: |eagle!/usr/gws/minutes Можно сослаться на общедоступный каталог с именем uucp- public, путем аналогичного использования префикса тиль- да ~ с маршрутным именем. Например: |eagle!~/gws/minutes Это интерпретируется следующим образом: |/usr/spool/uucppublic/gws/minutes 6.4.2.2.1 Как работает команда uucp В этом разделе дается обзор того, что происходит, когда запус- кается команда uucp. Понимание происходящих процессов может по- мочь в осознании ограничений и требований команды. Более под робные сведения см. в Руководстве администратора системы и Справочнике администратора системы. Когда вводится команда uucp, программа, реализующая эту коман- ду, создает рабочий файл и, обычно, еще файл данных для требуе- мой передачи. (Команда uucp не создает файл данных, если в ней используется опция -c.) Рабочий файл содержит информацию, необ- ходимую для передачи файла (или файлов). Файл данных является просто копией указанного файла-источника. После создания этих файлов в каталоге спулинга запускается демон uucico. Демон uucico пытается установить связь с удаленной ЭВМ, которая должна получить файл (или файлы). В первую очередь демон соби- рает из файла Systems информацию, необходимую для установления связи с удаленной ЭВМ. Анализируя эту информацию uucico опреде- ляет, какой тип устройства использовать для установления связи. Затем uucico просматривает файл Devices, отыскивая устройства, которые соответствуют требованиям, перечисленным в файле Sys- tems. После того, как демон uucico найдет подходящее устройст- во, он пытается установить связь и войти в систему на удаленной ЭВМ. Когда демон uucico локальной машины входит в систему удаленной ЭВМ, он запускает демон uucico в этой системе. Затем два демона uucico устанавливают связь в соответствии с линейным протоко- лом, который используется при передаче файла (или файлов). Пос- ле этого демон uucico на данной (локальной) машине передает подлежащий пересылке файл (или файлы) на удаленную ЭВМ, а уда ленный демон uucico размещает файл в соответствии с указанным маршрутным именем (или именами) на своей машине. Когда локаль- ная ЭВМ завершает передачу (или передачи), удаленная машина мо жет пересылать файлы, которые помещены в очередь для передачи в локальную ЭВМ. Удаленной машине может быть отказано в праве на передачу файлов, это определяется в файле Permissions. В этом случае, чтобы выполнить передачи, удаленная ЭВМ должна устано- вить связь с локальной машиной. Если удаленная ЭВМ или устройство, выбранное для соединения с удаленной машиной, недоступно, запрос остается в очереди в каталоге спулинга. Каждый час (по умолчанию), с по- мощью команды cron, выполняется командный файл uudemon.hour который запускает демон uusched. После запуска демона uusched, он осуществляет поиск в каталоге спулинга оставшихся рабочих файлов, формирует случайный порядок, в котором эти запросы должны обрабатываться, а затем запускает процесс передачи (uucico), описанный в предыдущих параграфах. Рассмотренный процесс передачи обычно применяется на активной ЭВМ. Активная машина (машина, имеющая аппаратные средства выз ва и сетевое программное обеспечение) может быть ориентирована на опрос пассивной ЭВМ. Поскольку пассивная машина имеет сете- вое программное обеспечение, она может при передачах файлов формировать очереди. Однако, она не может вызывать удаленную ЭВМ, потому что не обладает требуемой аппаратурой. В файле Poll (/usr/lib/uucp/Poll) содержится список ЭВМ, которые должны оп рашиваться таким образом. В таблице приводится краткое описание синтаксиса и возможностей команды uucp. | +---------------------------------------------------------------+ | | Краткое описание | | | | | | uucp - скопировать файл с одной ЭВМ на другую | | +---------------------------------------------------------------| | | команда опции аргументы | | +---------------------------------------------------------------| | | uucp -j1, -m, -s и другие файл_источник | | +---------------------------------------------------------------| | | Описание: Команда uucp выполняет предварительные дей- | | | ствия, необходимые для копирования файла с | | | одной ЭВМ на другую, и вызывает демон | | | uucico (фоновый процесс), который передает | | | файл. Для того, чтобы скопировать файл, | | | пользователю необходимо только запустить | | | команду uucp. | | | | | | Примечания: По умолчанию единственным каталогом, в ко- | | | торый пользователь может записывать файлы, | | | является каталог /usr/spool/uucppublic. | | | Чтобы записывать в каталоги, принадлежащие | | | другому пользователю, необходимо получить | | | от него разрешение на запись. Хотя сущест- | | | вует несколько способов для представления | | | маршрутных имен как аргументов, во избежа- | | | ние путаницы, рекомендуется вводить полные | | маршрутные имена. | +---------------------------------------------------------------+ 6.4.2.3 Команда uuto Команда uuto позволяет пользователю передавать файлы в общедос- тупный каталог другой системы UNIX. Команда uuto имеет следую- щий основной формат: |uuto имя_файла система!входное_имя где имя_файла является именем файла, подлежащего передаче, система - имя системы получателя, а входное_имя - входное имя получателя. Если файл пересылается некоторому пользователю в данной локаль- ной системе, имя системы можно опустить и использовать следую- щий формат команды: |uuto имя_файла входное_имя 6.4.2.3.1 Пересылка файла: опция -m и команда uustat Теперь, когда известно как определить, подлежит ли пересылке файл, рассмотрим на примере, как в целом все это происходит. Процесс пересылки файла, с помощью команды uuto, трактуется как задание. Когда пользователь запускает команду uuto, задание не выполняется немедленно. Сначала файл сохраняется в очереди (очередь ожидания заданий), и ему назначается номер задания. Когда подходит очередь, файл передается на удаленную систему и размещается там в общедоступном каталоге. Получатель извещается о наличии электронной почты сообщением и для работы с файлом должен использовать команду uupick (см. далее). Для дальнейшего рассмотрения введем следующие обозначения: wombat входное имя пользователя sys1 имя системы пользователя marie входное имя получателя sys2 имя системы получателя money файл, подлежащий пересылке Предположим также, что две системы могут связываться друг с другом. Чтобы переслать файл money пользователю с входным именем marie в системе sys2, введем следующее: |$ uuto money sys2!marie |$ Приглашение во второй строке служит сигналом о том, что файл передан в очередь заданий. Теперь задание вышло из-под контроля пользователя; единственное, что ему остается делать - это ждать подтверждения, что задание достигло своего адресата. Как узнать, когда задание передано? Простейший способ состоит в том, чтобы изменить командную строку uuto, добавив в нее опцию -m: |$ uuto -m money sys2!marie |$ Эта опция обеспечивает посылку сообщения пользователю-отправи- телю, когда задание достигает системы получателя. Сообщение мо- жет иметь примерно такой вид: |$ mail |From uucp Thur Apr 3 09:45 EST 1989 |file /sys1/wombat/money, system sys1 |copy succeeded |? Если Вы хотите проверить, покинуло ли задание Вашу систему, воспользуйтесь командой uustat. Эта команда сохраняет информа- цию о всех заданиях команд uucp и uuto, которые подавал пользо- ватель, и выводит по требованию состояние о каждом из них. Нап- ример: |$ uustat |1145 wombat sys2 10/05-09:31 10/05-09:33 JOB IS QUEUED |$ Элементами данного сообщения о состоянии являются следующие: 1145 представляет собой номер , назначенный заданию по пересылке файла money пользователю marie, находящемуся в системе sys2; wombat является входным именем пользователя, посылающе- го запрос на выполнение задания; sys2 является именем системы получателя; 10/05-09:31 - дата и время постановки задания в оче- редь; 10/05-09:33 - дата и время выполнения команды uustat. Последняя часть является сообщением о состоянии зада ния. Оно говорит о том, что задание поставлено в оче редь, но еще не передано. Чтобы получить состояние только одного задания команды uuto, следует использовать опцию -j и указать в командной строке но- мер задания: |uustat -jномер_задания Например, чтобы получить состояние описанного в предыдущем при- мере задания, после опции -j необходимо указать 1145 (номер за- дания): |$ uustat -j1145 |1145 wombat sys2 10/05-09:31 10/05-09:33 COPY FINISHED, JOB DELETED |$ Данное сообщение о состоянии говорит о том, что задание было передано и удалено из очереди заданий; оно теперь находится в общедоступном каталоге системы получателя. Другие сообщения о состоянии и опции для команды uustat описываются в Справочнике пользователя. Это все, что касается пересылки файлов. Для приобретения навы ков попробуйте передать файл самому себе. В таблицах приводятся краткие описания синтаксиса и возможнос- тей команд uuto и uustat. | +---------------------------------------------------------------+ | | Краткое описание | | | | | | uuto - переслать файл другому пользователю | | +---------------------------------------------------------------| | | команда опции* аргументы | | +---------------------------------------------------------------| | | uuto -m и другие файл система!входное_имя | | +---------------------------------------------------------------| | | Описание: Команда uuto пересылает указанный файл в | | | общедоступный каталог указанной системы и из- | | | вещает заданного получателя (с помощью сооб- | | | щения электронной почты, адресованного на его | | | входное имя) о том, что файл уже поступил. | | | | | | Примечания: Файлы, подлежащие пересылке, должны иметь | | | разрешение на чтение для категории "остальные | | | пользователи"; надкаталог файла должен иметь | | | разрешение на чтение и выполнение для этой же | | | категории пользователей. | | | | | | Опция -m применяется для извещения отправите- | | | ля, когда файл поступает по назначению. | | +---------------------------------------------------------------+ * Описание всех имеющихся опций и их действие см. в разд. uuto(1) Справочника пользователя. | +---------------------------------------------------------------+ | | Краткое описание | | | | uustat - проверить состояние задания команды uucp | | или uuto | +--------------------------------------------------------------- | | команда опции* аргументы | +--------------------------------------------------------------- | | uustat -j и другие отсутствуют | +--------------------------------------------------------------- | | Описание: Команда uustat выводит состояние всех затре- | | бованных заданий команд uucp и uuto. | | | | Примечание: Опция -j, за которой следует номер задания, | | позволяет запросить состояние только указан- | | ного задания. | +---------------------------------------------------------------+ * Описание всех имеющихся опций и их действие см. в разд. uustat(1) Справочника пользователя. 6.4.2.4 Получение файлов, посланных с помощью команды uuto: команда uupick Когда файл, посланный командой uuto, достигает общедоступного каталога системы UNIX пользователя, последний получает сообще- ние по электронной почте. Если продолжить предшествующий при- мер, пользователь с входным именем marie получает следующее почтовое сообщение, когда файл money поступает в общедоступный каталог его системы: |$ mail |From uucp Wed May 14 09:22 EST 1989 |/usr/spool/uucppublic/recieve/marie/sys1//money from sys1!wombat arrived |$ Сообщение содержит следующие информационные поля: первая строка говорит о том, что файл поступил по наз- начению; вторая строка, вплоть до двух знаков косой черты, (//) указывает маршрутное имя той части общедоступного ката- лога, в которой сохранен файл; оставшаяся часть строки (после двух знаков косой черты) содержит имя файла и отправителя. Имея в своем распоряжении почтовое сообщение, пользователь мо- жет с помощью команды uupick сохранить файл там, где ему это желательно. С этой целью после приглашения ему следует ввести: |uupick Команда выполняет поиск всех файлов, переданных пользователю, в общедоступном каталоге. Если она находит их, то сообщает имена этих файлов. Затем команда выводит приглашение в виде вопроси- тельного знака ? в качестве запроса на ввод пользователем даль- нейших инструкций. Например, пусть пользователь с входным именем marie запускает команду uupick, чтобы выполнить обработку файла money. Команда ответит следующим образом: |$ uupick |from system sys1: file money |? Возможны несколько ответов пользователя; будут рассмотрены наи- более часто встречающиеся формы ответов и то, что при этом про- исходит. Первое, что пользователю необходимо сделать, это переместить файл из общедоступного каталога в свой входной каталог. Чтобы выполнить это, после вопросительного знака следует ввести m: |? |m |$ При таком ответе пользователя файл перемещается в его текущий каталог. Если вместо этого каталога желательно поместить файл в какой-то другой каталог, за m необходимо указать имя каталога: |? |m другой_каталог Если есть еще файлы, ожидающие перемещения, выводится информа- ция о следующем из них и вопросительный знак. Если же их нет, команда uupick возвращает приглашение системы. Если пользователь не собирается что-либо делать с указанным в текущий момент файлом, после вопросительного знака ему следует нажать клавишу возврата каретки: |? | Текущий файл останется в общедоступном каталоге до тех пор, по- ка в следующий раз пользователь не будет использовать команду uupick. Если больше сообщений нет, система выводит приглашение. Если пользователь уже знает, что не собирается сохранять файл, он может удалить его, введя после вопросительного знака d: |? |d Такой ответ пользователя приводит к удалению текущего файла из общедоступного каталога и выводу сообщения о следующем файле (если он есть). Если же ожидающих файлов нет, система выводит приглашение. Наконец, чтобы прекратить выполнение команды uupick, следует ввести после вопросительного знака q: |? |q При этом все файлы, которые не были перемещены в другие катало- ги (или каталог) или не были удалены, останутся в общедоступном каталоге. Другие возможные ответы пользователя приводятся в Справочнике пользователя. В таблице приводится краткое описание синтаксиса и возможностей команды uupick. | +---------------------------------------------------------------+ | | Краткое описание | | | | | | uupick - осуществить поиск файлов, переданных с | | | помощью команд uuto или uucp | | +---------------------------------------------------------------| | | команда опции аргументы | | +---------------------------------------------------------------| | | uupick -s имя_системы | | +---------------------------------------------------------------| | | Описание: Команда uupick осуществляет поиск в общедос- | | | тупном каталоге системы пользователя тех фай- | | | лов, которые переданы с помощью команд uuto | | | или uucp. Если такие файлы обнаружены, коман- | | | да выводит пользователю информацию о файле и | | | запрашивает у него ответ. | | | | | | Примечания: Вопросительный знак (?) в конце сообщения го- | | | ворит о том, что ожидается ответ пользовате- | | | ля. Полный список возможных ответов приводит- | | | ся в Справочнике пользователя. | | +---------------------------------------------------------------+ 6.5 СОЗДАНИЕ СЕТИ В процессе создания сети необходимо установить связь между ЭВМ и терминалами таким образом, чтобы предоставить пользователям возможность: входить в удаленную систему так же, как в локальную; входить и работать на двух ЭВМ в течение одного сеанса работы (не выходя попеременно из одной системы и входя в другую); обмениваться данными между ЭВМ. Представленные в данном разделе команды обеспечивают реализацию этих возможностей. Команда ct позволяет пользователю связывать его ЭВМ с удаленным терминалом, который снабжен модемом. Коман- да cu дает возможность связать машину пользователя с удаленной ЭВМ, а команда uux позволяет запускать команды на удаленной системе, не входя в нее. Примечание На некоторых малых ЭВМ наличие этих команд может зави- сеть от того, установлено или нет на ней сетевое прог- раммное обеспечение. Если на системе пользователя это программное обеспечение не установлено, то при вводе команды сетевой обработки он получит сообщение, анало- гичное следующему: |cu: not found Возможность использования команд сетевой обработки на своей системе проверяйте с администратором системы. 6.5.1 Установление связи с удаленным терминалом: команда ct Команда ct устанавливает связь ЭВМ с удаленным терминалом, ко- торый снабжен модемом, и дает возможность пользователю, работа- ющему за этим терминалом, входить в систему. Для этого команда обращается к модему по его телефонному номеру. Модем должен быть в состоянии автоматически отвечать на вызов. Когда команда ct определяет, что на ее вызов поступил ответ, она запускает процесс getty для удаленного терминала и обеспечивает тем самым пользователю, находящемуся за этим терминалом, возможность вой- ти в систему. Эта команда может оказаться полезной при ее запуске с удаленно го терминала. Если пользователь работает за терминалом, который находится достаточно далеко от ЭВМ, и хочет избежать помех на длинной линии, он может использовать команду ct, чтобы побудить машину обратиться к своему терминалу. Для этого следует вызвать ЭВМ, войти в систему и запустить команду ct. Машина разорвет текущее соединение и снова вызовет удаленный терминал пользова- теля. Если команда ct не может найти доступный номеронабиратель, она извещает пользователя о том, что все линии заняты, и спрашива- ет, должна ли она ждать до тех пор, пока один из них станет доступным. Если пользователь отвечает утвердительно, эта коман- да спрашивает, сколько времени (в минутах) она должна ждать. Для выполнения команды ct следует вводить ее в следующем форм те: |ct [опции] телефномер Аргумент телефномер является телефонным номером удаленного тер- минала. Предположим, что пользователь входит в систему через локальный терминал и собирается подсоединить к своей ЭВМ удаленный терми нал. Телефонный номер модема на удаленном терминале 932-3497. Допустим, он вводит такую командную строку: |ct -h -w5 -s1200 9=932-3497 Примечание Знак равенства (=) представляет вторичный гудок, а тире (-), предшествующие телефонному номеру, соответствуют задержкам (тире обычно используют для номеров модемов удаленных терминалов). Команда ct, используя номеронабиратель, вызовет модем который работает со скоростью 1200 бод. Если номеронабиратель недосту- пен, опция -w5 заставит команду ждать его предоставления в те чение 5 минут, прежде чем завершить свою работу. Опция -h гово- рит о том, что не следует разрывать связь ЭВМ с локальным тер- миналом (терминал, с которого была запущена команда). Теперь представим себе, что пользователь хочет войти в систему, находясь дома. Чтобы избежать помех на длинной линии, ему сле- дует выполнить команду ct, побуждая саму машину вызвать свой терминал: |ct -s1200 9=9323497 Поскольку не указана опция -w, то при недоступности линии, ко- манда ct пошлет пользователю следующее сообщение: |1 busy dialer at 1200 baud Wait for dialer? Если пользователь введет n (no), команда ct завершается. Если же вводится y (yes), команда ct подсказывает пользователю о не- обходимости задания времени, которое должна ожидать эта коман- да: |Time, in minutes? Если линия доступна, ответом команды ct является: |Allocated dialer at 1200 baud Это означает, что линия найдена. В любом случае команда ct спрашивает, не хочет ли пользователь, чтобы линия, соединяющая его удаленный терминал с ЭВМ, была бы освобождена: |Conferm hangup? Если вводится y (yes), то пользователь выводится из удаленной системы, и команда ct вызывает его удаленный терминал снова, когда линия доступна. Если же пользователь вводит n (no), манда ct завершается, оставляя его в удаленной системе. В таблице приводится краткое описание синтаксиса и возможностей команды ct. | +---------------------------------------------------------------+ | | Краткое описание | | | | | | ct - подсоединить ЭВМ к удаленному терминалу | | +---------------------------------------------------------------| | | команда опции * аргументы | | +---------------------------------------------------------------| | | ct -h, -w, -s и другие телефномер | | +---------------------------------------------------------------| | | Описание: Команда ct подсоединяет ЭВМ к удаленному тер- | | | миналу и позволяет пользователю входить в | | | систему с этого терминала. | | | | | | Примечание: Удаленный терминал должен иметь модем, спо- | | | собный автоматически отвечать на телефонные | | | вызовы. | | +---------------------------------------------------------------+ * Описание всех имеющихся опций и их действие см. в разд. ct(1) Справочника пользователя. 6.5.2 Вызов других систем UNIX: команда cu Команда cu связывает удаленную ЭВМ с машиной пользователя и позволяет ему входить в обе ЭВМ одновременно. Это означает, что пользователь может перемещаться туда и обратно между двумя ма- шинами, передавая файлы и выполняя команды на обеих ЭВМ, и не разрывать при этом связь между ними. Способ, используемый командой cu, зависит от информации, кото- рую пользователь указывает в командной строке. Необходимо за- дать телефонный номер или системное имя удаленной ЭВМ. Если пользователь указывает телефонный номер, этот номер поступает на модем автоматического набора номера. Если же он определяет имя системы, команда cu получает телефонный номер из файла с именем Systems. Если для установления соединения не использует- ся модем автоматического набора номера, в командной строке мо- жет быть указана линия (порт), напрямую связанная с удаленной ЭВМ. После установления соединения, удаленная машина предлагает пользователю войти в ее систему. Когда завершается работа на удаленном терминале, следует выйти из системы и разорвать сое- динение, введя <~.>. При этом пользователь будет оставаться среди работающих пользователей на локальной ЭВМ. Примечание Команда cu не в состоянии определять и исправлять ошиб- ки; во время передачи файла данные могут быть потеряны или искажены. По завершении передачи пользователь может проверить, потеряны ли данные, выполняя команду sum или ls -l для файла, который передавался, и файла, который был получен. Обе эти команды выведут общее число байтов в каждом из этих файлов; если эти значения совпадают, то передача была успешной. Команда sum осуществляет проверку быстрее и ее вывод легче интерпретировать. (Более детальные сведения см. в разд. sum(1) и ls(1) Справочника пользователя.) При вводе команды cu необходимо придерживаться следующего фор мата: |cu [опции] телефномер / имя_системы Компонентами этой командной строки служат: телефномер телефонный номер удаленной ЭВМ знак равенства (=) представляет вторич- ный гудок, а тире (-) соответствует че- тырехсекундной задержке; имя_системы имя системы, которое содержится в файле Systems команда cu извлекает телефонный номер и скорость передачи в бодах из файла Sys- tems и осуществляет поиск линии; опции -s, -n и -l не должны использоваться вместе при указании аргумента имя_сис- темы; чтобы посмотреть список ЭВМ, со- держащихся в файле Systems, следует вы- полнить команду uuname. После установления соединения и входа в удаленную ЭВМ, весь стандартный ввод (ввод с клавиатуры) поступает на удаленную ма- шину. В таблицах представлены команды, которые пользователь мо- жет выполнять, установив соединение с удаленной ЭВМ с помощью команды cu. | +----------------+---------------------------------------------------+ | | Строка | Пояснение | | +----------------+---------------------------------------------------| | | ~. | Разорвать соединение. | | +----------------+---------------------------------------------------| | | ~! | Переключиться на локальную ЭВМ, не разрывая | | | | связи. Для возврата в удаленную ЭВМ следует | | | | ввести <^d>. | | +----------------+---------------------------------------------------| | | ~!команда | Выполнить команду на локальной ЭВМ. | | +----------------+---------------------------------------------------| | | ~$команда | Запустить команду на локальной ЭВМ и пере- | | | | слать ее вывод на удаленную машину. | | +----------------+---------------------------------------------------| | | ~%cdмаршрут | Изменить каталог на локальной ЭВМ; маршрут - | | | | это маршрутное имя или имя каталога. | | +----------------+---------------------------------------------------| | | ~%take из [в] | Скопировать файл с именем из (на удаленной | | | | ЭВМ) в файл с именем в (на локальной ЭВМ). | | | | Если аргумент в опущен, то в обоих случаях | | | | используется аргумент из. | | +----------------+---------------------------------------------------| | | ~%put из [в] | Скопировать файл с именем из (на локальной | | | | ЭВМ) в файл с именем в (на удаленной ЭВМ). | | | | Если аргумент в опущен, то в обоих случаях | | | | используется аргумент из. | | ~~... | Переслать строку, начинающуюся с тильды ~ | | | (~~...) на удаленную ЭВМ. | +----------------+--------------------------------------------------- | | ~%break | Передать BREAK на удаленную ЭВМ (можно указы- | | | вать в виде ~%b). --------------------------------+ | +----------------+---------------------------------------------------+ | | Строка | Пояснение | +----------------+--------------------------------------------------- | | ~%nostop | Отключить протокол с квитированием для остав- | | | шейся части сеанса связи. Это бывает полезно | | | в тех случаях, когда удаленная ЭВМ не отвеча- | | | ет правильно на протокольные символы. | +----------------+--------------------------------------------------- | | ~%debug | Включить/выключить опцию отладки -d (можно | | | указать также в виде ~%d). | +----------------+--------------------------------------------------- | | ~t | Вывести значения структурных переменных тер- | | | минала ввода/вывода пользователя (полезно при | | | отладке). | +----------------+--------------------------------------------------- | | ~l | Вывести значения структурных переменных для | | | линии удаленной связи (полезно при отладке). | +----------------+---------------------------------------------------+ Примечания Для использования команды ~%put необходимо наличие на удаленной ЭВМ команд stty и cat. Также требуется, чтобы текущие символы стирания и отмены на удаленной машине совпадали с их текущими значениями на локальной ЭВМ. Использование ~%take требует наличия на удаленной ЭВМ команд echo и cat. К тому же на удаленной машине должен быть установлен режим stty -tabs, если символы табуля- ции подлежат копированию без расширения. Допустим пользователь собирается установить связь между своей ЭВМ и удаленной машиной с именем eagle. Телефонный номер eagle 847-7867. Можно ввести следующую командную строку: |cu -s1200 9=8477867 Опция -s1200 предписывает команде cu для вызова eagle использо- вать номеронабиратель, работающий со скоростью 1200 бод. Если опция -s не указана, команда cu использует номеронабиратель с задаваемой по умолчанию скоростью (300 бод). Когда система eagle отвечает на вызов, команда cu извещает пользователя, что соединение установлено, и запрашивает у него входной идентификатор ID: |connected |login: Пользователю следует ввести свой входной идентификатор ID и па- роль. Команда ~%take дает возможность пользователю копировать файлы с удаленной ЭВМ на локальную. Предположим, что пользователь хочет сделать копию файла с именем proposal для своей локальной ЭВМ. Посредством ввода показанной ниже командной строки копируется файл proposal из текущего каталога пользователя удаленной маши- ны и помещается в его текущий каталог на локальной ЭВМ. Если не указывается имя для нового файла, он тоже получит имя proposal. |~%take proposal Команда ~%put позволяет выполнять противоположное действие: ко- пировать файлы, находящиеся на локальной ЭВМ, на удаленную ма- шину. Предположим, что пользователь собирается скопировать файл с именем minutes из своего текущего каталога, расположенного на локальной ЭВМ, на удаленную машину. Для этого он вводит: |~%put minutes minutes.9-18 В данном случае пользователь задает другое имя для нового файла (minutes.9-18). Поэтому копия файла minutes, которая передана на удаленную ЭВМ, будет иметь имя minutes.9-18. В таблице приводится краткое описание синтаксиса и возможностей команды cu. | +---------------------------------------------------------------+ | | Краткое описание | | | | | | cu - связать локальную ЭВМ с удаленной машиной | | +---------------------------------------------------------------| | | команда опции аргументы | | +---------------------------------------------------------------| | | cu -s и другие телефномер (или) | | | имя_системы | | +---------------------------------------------------------------| | | Описание: Команда cu устанавливает связь локальной ЭВМ | | | пользователя с удаленной машиной и позволяет | | | ему работать в обеих системах одновременно. | | | Войдя один раз в систему, пользователь может | | | переходить с одной ЭВМ на другую для выполне- | | | ния команд и передачи файлов, не разрывая при | | | этом связи между машинами. | | | | | | Примечание: Все имеющиеся опции и описание их действия | | | см. в разд. cu(1) Справочника пользователя. | | +---------------------------------------------------------------+ 6.5.3 Выполнение команд на удаленной системе: команда uux Команда uux (сокращение от UNIX-to-UNIX system command executi- on) позволяет пользователю выполнять команды системы UNIX на удаленной ЭВМ. Она может использовать файлы, находящиеся на различных ЭВМ, выполнить команду на указанной машине и перес- лать стандартный вывод в файл на заданной ЭВМ. Может существо- вать ограничение на выполнение некоторых команд на удаленной машине. Команда извещает пользователя с помощью сообщения электронной почты, если затребованная им для выполнения команда недопустима. При выполнении команды uux необходимо придерживаться следующего формата: uux [опции] цепочка_команд Цепочка_команд включает в себя один или несколько аргументов. Все специальные символы интерпретатора shell (такие, как "<>|^") должны быть в кавычках, путем заключения в кавычки либо всей цепочки_команд, либо отдельного символа. В цепочке_команд команда и имена файлов могут содержать в себе префикс имя_сис- темы!. Все аргументы, которые не содержат имя_системы интерпре- тируются как аргументы команды. Имя файла может представлять собой либо полное маршрутное имя, либо имя файла в текущем ка- талоге (на локальной ЭВМ). Если ЭВМ пользователя жестко связана с более производительной главной вычислительной машиной (host-ЭВМ), можно выполнить ко- манду uux для распечатки файлов, которые постоянно находятся на его ЭВМ, вводя следующую строку: |pr minutes | uux -p host!lp Эта командная строка ставит файл в очередь для распечатки на печатающем устройстве главной ЭВМ с именем host. В таблице приводится краткое описание синтаксиса и возможностей команды uux. | +---------------------------------------------------------------+ | | Краткое описание | | | | | | uux - выполнить команды на удаленной ЭВМ | | +---------------------------------------------------------------| | | команда опции аргументы | | +---------------------------------------------------------------| | | uux -l, -p и другие цепочка_команд | | +---------------------------------------------------------------| | | Описание: Команда uux позволяет пользователю выполнять | | | команды системы UNIX на удаленной ЭВМ. Она | | | может использовать файлы, находящиеся на раз- | | | личных машинах, запускать команду на указан- | | | ной ЭВМ и пересылать стандартный вывод в файл | | | на заданной ЭВМ. | | | | | | Примечания: По умолчанию пользователям, выполняющим ко- | | | манду uux, разрешено запускать только команды | | | mail и mailx. Совместно с администратором | | | системы определите, имеют ли возможность | | | пользователи Вашей системы разрешение на за- | | | пуск других команд. | | +---------------------------------------------------------------+ * Все имеющиеся опции и описание их действия см. в разд. uux(1) Справочника пользоватля.