ГЛАВА 4 ОБЗОР ПОСОБИЙ СОДЕРЖАНИЕ ВВЕДЕНИЕ 2 4.1 SHELL 3 4.1.1 Формирование окружения пользователя 3 4.1.2 Программирование на языке shell 4 4.2 ЭЛЕКТРОННАЯ ПОЧТА 6 ВВЕДЕНИЕ Эта глава служит связующим звеном между общим обзором системы, который излагается в первых трех главах, и пособиями, представ- ленными в последующих двух главах. Точнее, в этой главе делает- ся обзор содержания пособий по работе с shell и электронной почтой. Методика программирования в среде shell описывается в гл. 5 "Пособие по shell", а возможности электронной почты изла- гаются в гл. 6 "Пособие по использованию электронной почты". 4.1 SHELL При каждом входе в систему UNIX и до выхода из нее пользователь взаимодействует с интерпретатором shell. Однако, во время рабо- ты с программой типа редактора текста, взаимодействие пользова- теля с shell приостанавливается, возобновляясь сразу же после завершения работы с редактором. Shell во многом похож на другие программы, однако он не просто выполняет какую-либо задачу, например, команду cat или ls, а является центральным звеном во взаимодействии пользователя с системой UNIX. Основная функция shell'а состоит в том, чтобы действовать в качестве посредника между пользователем и ЭВМ. Как интерпретатор, shell переводит запросы пользователя на по- нятный для ЭВМ язык, вызывает запрошенные программы в память и выполняет их. В этом разделе рассматриваются приемы работы с интерпретатором shell, которые позволяют эффективно использовать особенности системы. Кроме запуска отдельных программ, пользователь благо даря shell'у имеет возможность: задавать набор имен файлов или каталогов в сокращенном виде; переадресовывать ввод/вывод выполняемых программ; выполнять несколько программ последовательно (с помощью конвейера) или параллельно; изменять окружение в зависимости от индивидуальных пот- ребностей. Shell является также и языком программирования. Подробные све- дения об использовании shell'а, как интерпретатора команд и как языка программирования излагаются в гл. 5. Полное описание программирования в рамках shell'а приводится в отдельном доку- менте "Команды shell и программирование". 4.1.1 Формирование окружения пользователя При входе пользователя в систему UNIX shell автоматически соз- дает его окружение. Устанавливаемое по умолчанию окружение вкю чает в себя следующие переменные: HOME входной каталог пользователя LOGNAME входное имя пользователя PATH список маршрутов, по которым shell должен осу- ществлять поиск выполняемых файлов и команд (обычно PATH=:/bin:/usr/bin) Переменная PATH указывает shell'у, в каких каталогах искать вы полняемую программу, вызванную командой. Эта переменная исполь- зуется каждый раз, когда пользователь вводит запрос. Пользователь может работать в окружении, устанавливаемом систе- мой по умолчанию, или формировать его в соответствии со своими потребностями. Если необходимо модифицировать какую-либо часть окружения, можно воспользоваться одним из двух методов. Первый метод предусматривает изменения какой-либо части окружения только на время текущего сеанса работы с системой и реализуется с помощью соответствующих командных строк (более детально см. в гл. 5). Но если пользователь хочет постоянно работать в окруже- нии, отличающемся от формируемого по умолчанию, необходимо внести изменения в файл, который будет устанавливать желаемое окружение при каждом входе в систему. Этот файл должен иметь имя .profile и находиться в основном каталоге пользователя. Файл .profile обычно содержит действия типа проверки наличия почты; установки характеристик терминала; назначения символа или строки символов в качестве входного приглашения и т.д. В файл .profile можно поместить столько действий, сколько необхо димо. В любой момент часть из них можно изменить. (Соответству- ющие инструкции содержатся в разделе "Модификация входного ок- ружения пользователя" гл. 5.) Теперь проверим, создан ли у Вас файл .profile. Если Вы находи тесь не в своем основном каталоге, то с помощью команды cd не- обходимо перейти в него. Затем для проверки наличия файла .pro- file следует ввести команду: |cat .profile Если файл .profile существует, его содержимое появится на экра- не терминала. Если этого файла нет, его можно создать (см. разд. "Модификация входного окружения пользователя" в гл. 5). 4.1.2 Программирование на языке shell Shell служит не только интерпретатором командного языка, но од- новременно является и языком программирования командного типа. Это означает, что наряду с использованием shell'а, как средства общения пользователя с ЭВМ, существует возможность программиро- вать автоматически повторяющиеся последовательности команд. Для этого необходимо создать исполняемые файлы, содержащие такие последовательности команд. Эти файлы называются shell-процед рами, или shell-сценариями. Создав однажды shell-процедуру для решения определенной задачи, в дальнейшем пользователь, в слу- чае необходимости, может просто обращаться к ней по имени. Подобно другим языкам программирования язык shell предусматри вает наличие переменных, управляющих структур, подпрограмм, пе редачу параметров. Эти средства в совокупности с командами сис- темы, дают возможность пользователю создавать собственные рабо- чие процедуры. Например, можно объединить три команды системы UNIX (date, who и wc) в одну простую shell-процедуру с именем users, которая при своем выполнении сообщит текущую дату и время, а также чис- ло работающих в системе пользователей. Создать такую shell-про- цедуру можно с помощью текстового редактора. Для этого сначала следует сформировать файл users с помощью редактора rk. Допус- тим, три команды (date, who и wc) вводятся в одной строке: |date; who | wc -l После ввода команд файл закрывается. Затем этот файл путем д бавления соответствующего права с помощью команды chmod объяв- ляется исполняемым: |$ chmod ug+x users Теперь можно попытаться запустить эту новую команду пользовате- ля. На экране будет получено примерно следующее: |$ users |Sat Mar 1 16:40:12 EST 1989 | 4 |$ Это означает, что в системе в момент ввода команды в 16:40 в субботу 1-го марта 1989 года работают четыре пользователя. Рекомендации по написанию shell-процедур и более подробные све дения о средствах программирования на языке shell содержатся в гл. 5 "Пособие по shell". 4.2 ЭЛЕКТРОННАЯ ПОЧТА Пользователь системы UNIX имеет возможность посылать сообщения и передавать данные, хранящиеся в файлах, другим пользователям, которые работают как в данной системе UNIX, так и в системе UNIX на другой ЭВМ. Для этого Вы должны находиться в такой сис теме UNIX, которая имеет возможность установить связь с систе- мой, на которую необходимо передать информацию. Тип используе- мой команды зависит от того, какая информация передается. В настоящем руководстве рассматриваются следующие команды для ор- ганизации связи: mail Эта команда позволяет передавать сообщения и файлы другим пользователям системы UNIX, исполь- зуя в качестве адресов их входные имена, а также получать сообщения, посланные другими пользова- телями. Команда mail сохраняет сообщения и поз- воляет получателю читать их в удобное ему время. mailx Эта команда является расширенной версией команды mail. Она имеет ряд опций для управления посыла емой и получаемой почтой. uucp Эта команда используется для пересылки между ЭВМ, оснащенными системами UNIX. (Имя команды является сокращением от "UNIX to UNIX system co- py".) Команду uucp можно использовать для пере- сылки файла в указанный каталог удаленной ЭВМ. После завершения передачи файла владелец катало га извещается о получении для него почты. uuto/uupick Эти команды используются для передачи файлов и переписи их в каталог получателя. Пользователь может применить команду uuto для пересылки файла (или файлов) в общедоступный каталог; по завер- шении передачи получатель извещается, что файлы переданы. После этого получатель с помощью ко манды uupick может скопировать файл (или файлы) из общедоступного каталога в выбранный каталог. uux Эта команда позволяет выполнять команды на уда- ленной ЭВМ: брать файлы с различных ЭВМ, выпол- нять команды с этими файлами и посылать стан- дартный вывод команды в файл на заданную ЭВМ. Все эти команды описываются в гл. 6.