собо значимых файлов и каталогов, . Извлечение файлов из резервной среды, . Создание копий флоппи-дисков, . Определение размера использованного/свободного дисково- го пространства, . Выполнение команд в фоновом режиме, . Отсрочка и прерывание выполнения команд, . Использование языка shell для автоматизации выполнения рутинных задач. Эта часть построена как самоучитель. Лучший способ изучения данной части - читать ее непосредственно за дисплеем, выполняя все приведенные в тексте примеры. Команды описываются без подробностей. Для выяснения тонкос- тей обращайтесь к UNIX User' Reference. 5.2 Создание резервных копий. Копирование всей файловой системы - прерогатива системного администратора. Однако, зачастую и индивидуальные пользователи считают целесообразным создавать копии отдельных файлов в про- цессе своей работы. Такие копии создаются с помощью команды tar. Наиболее часто копируются флоппи-диски и кассеты с магнит- ными лентами. Однако, прежде чем создавать копии флоппи-дисков и некоторых кассет с лентами, их необходимо сформатировать. Ниже вы прочтете, как можно сформатировать дискеты и ленты и восполь- зоваться командой tar для создания копий. . 5-2 5.2.1 Форматирование дискет и лент. Чтобы сформатировать дискету 5.25 дюйма на 360К (double- sides, double-density) на первом флоппи-драйвере, введите следу- ющую команду: format Вы прочтете, что нужно вставить дискету и нажать RETURN. Если нужно сформатировать дискету 5.25 дюйма на 1.2 мега- байт (double-sides, high-density), введите следующую команду: format /dev/rfd096ds15 Для форматирования дискеты 3.5 дюйма на 720K (первый драй- вер), введите: format /dev/rfd096ds9 Чтобы производить форматирование на втором драйвере, заме- ните 0 после rfd на 1. Нет необходимости форматировать все кассеты с лентами. Однако, те из них, которые используются на ленточных мини-драй- верах, необходимо форматировать. Для этого введите: format /dev/rctmini 5.2.2 Использование команды tar для создания резервных копий. Для создания копий используется команда tar. Ее синтаксис: tar [key] [files] Аргумент key управляет действием команды tar. Аргумент files специфицирует те файлы, для которых создаются копии. . 5-3 Наиболее часто используются следующие аргументы key: c Создание копий. x Извлечение файлов из резервной среды. t Просмотр содержания резервной среды. v Высвечивание имен всех текущих процессов. f Создание копий специальных устройств. Создание копий. Далее приводится описание процесса копирования всех файлов вашего начального каталога на дискету. Проделайте все шаги этого процесса с командой tar. Для копирования другого каталога перейдите в него по коман- де cd и выполните все следующие шаги. Для копирования на ленту подставьте на место арумента files имя файла специального уст- ройства, ассоциированного с лентой: dev/rctmini или /dev/rct0. 1. Загрузитесь с консоли. Это позволит работать с флоп- пи-драйвером вручную. 2. Определите, сколько дискет вам необходимо, и отформати- руйте их, используя команду format, описанную выше в 5.2.1. Для определения нужного количества дискет введи- те следующую команду: du -a . 5-4 Вывод будет выглядеть примерно так: __________________________________________________________ | | 12 ./1.intro.s | 74 ./2.concepts.s | 14 ./2.concepts.err | 0 ./.err | 60 ./5.house.s | 32 ./3.log.s | 2 ./err | 2 ./0.title | 30 ./6.desk.s | 112 ./4.files.s | 12 ./4.files.err | 4 ./3.log.err | 356 . | Число внизу - суммарное число 512-ти байтовых блоков, за- нимаемых файлами данного каталога. В данном примере необходимо 356х512 байт, или около 183К. Для создания копии данного ката- лога достаточно одного флоппи-диска. 3. С помощью следующей команды вы создадите на 360-ти байтовой дискете (5.25 дюйма), находящейся на первом флоппи-драйвере, копию вашего начального каталога: tar cvf /dev/fd048ds9 . Если дискета 5.25 дюйма на первом драйвере сформатиро- вана на 1.2 мегабайт, введите: tar cvf /dev/fd096ds15 . Если при выполнении команды tar потребуется более од- ного диска, то появится сообщение о необходимости вставить другой "volume". В этом случае вставьте новую дискету. Выполнение команды tar завершится тогда, ког- да снова появится подсказка системы. Чтобы перенести только один файл на дискету 1.2 мегабайт, введите: tar cvf /dev/fd096ds15 ./filename Заметим, что имя файла (filename) отделено точкой и косой чертой (./). Это заставляет команду tar трактовать filename скорее как "относительное", а не абсолютное имя файла. (Для по- лучения более подробной информации о команде tar см. tar(C).) . 5-5 Команда tar размещает в резервной среде и все подкаталоги данного каталога. Так, если каталог /bin содержится в вашем на- чальном каталоге, tar создаст копию этого каталога и всех его файлов. 5.2.3 Просмотр содержимого копий. Для просмотра содержимого дискеты 5.25 дюйма 360К, разме- щенной на первом дисководе, на которой команда tar создала копию, введите: tar tvf /dev/fd048ds9 . Аналогично, для дискеты 1.2 мегабайт, введите: tar tvf /dev/fd096ds15 . Для дискеты 3.5 дюйма введите: tar tvf /dev/fd096ds9 . Проэкспериментируйте с опциями команды tar, помещая на первый дисковод дискету с копией вашего начального каталога, созданную в 5.2.2. Введите приведенные команды для просмотра содержимого копий. 5.2.4 Извлечение файлов из копий. Мы рекомендуем размещать файлы, извлекаемые из "хранения" в резервной среде, во временном каталоге на твердом диске. А уже оттуда с помощью команды mv можно поместить извлеченный файл на его место в файловой системе. Причина такой осторожнос- ти состоит в том, что могут совпасть имена файлов коренной фай- ловой системы и извлекаемых из резерва, и команда tar может при записи затереть нужный файл по недосмотру пользователя. Для возврата файлов из резервной среды с дискеты 5.25 дюй- ма 360К, находящейся на первом дисководе, введите: tar xvf /dev/fd048ds9 . 5-6 То же самое для дискеты 1.2 мегабайт: tar xvf /dev/fd096ds15 Чтобы достать только один файл с дискеты 1.2 мегабайт, введите: tar xvf /dev/fd096ds15 ./filename Заметим, что filename отделяется точкой и косой чертой (./), так как команда tar копировала filename на дискету с точ- кой (.), как в примерах в 5.2.2. Когда вы копируете файлы с по- мощью команды tar на флоппи-диск с точкой, имени файла должны предшествовать символы "./". Так как вы должны были вводить имя файла точно в таком виде, как было указано, то вы должны ввести ./filename, если filename было скопировано на диск с точкой. Поместите дискету с созданной там копией (5.2.2) на первый дисковод и попробуйте применить команду tar. Для этого проде- лайте следующее: 1. Перейдите в каталог /tmp по команде cd /tmp 2. Создайте в /tmp подкаталог: mkdir login Замените login на ваше регистрационное имя. 3. Введите: cd login 4. Если вы работаете со средой Bourne shell, и на перовм дисководе у вас стоит дискета 1.2 мегабайт, попробуйте извлечь файл .profile с помощью следующей команды: tar xvf /dev/fd096ds15 ./.profile . 5-7 Если вы пользователь C shell, введите: tar xvf /dev/fd096ds15 ./.login Если у вас дискета не 1.2 мегабайт, укажите соответст- вующее имя файла для специального устройства. 5. Чтобы проверить, какие именно файлы скопировались на твердый диск, введите: lc -a Опция -a заставит команду lc распечатать скрытые фай- лы, т.е. начинающиеся с точки (.). 6. Попробуйте с помощью команды tar извлечь все файлы с дискеты 1.2 мегабайт, находящейся на первом дисководе: tar xvf /dev/fd096ds15 Если у вас дискета не 1.2 мегабайт, укажите соответст- вующее имя файла для специального устройства. 5.2.5 Стенографическая запись команды tar. UNIX поддерживает стенографическую нотацию команды tar. Эта нотация позволяет вам специфицировать необходимые файлы специальных устройств. Файл /etc/default/tar содержит информа- цию о различных устройствах флоппи-дисков и лент. Введите сле- дующую команду для выдачи на экран содержимого /etc/default/tar: more /etc/default/tar . 5-8 Вы увидите примерно следующее: _________________________________________________________ | | # device block size tape | archive0=/dev/rfd048ds9 18 360 n | archive1=/dev/rfd148ds9 18 360 n | archive2=/dev/rfd096ds15 10 1200 n | archive3=/dev/rfd196ds15 10 1200 n | archive4=/dev/rfd096ds9 18 720 n | archive5=/dev/rfd196ds9 18 720 n | archive6=/dev/rfd0135ds18 18 1440 n | archive7=/dev/rfd1135ds18 18 1440 n | archive8=/dev/rct0 20 0 y | archive9=/dev/rtcmini 20 0 y | # The default device... | archive=/dev/rfd096ds15 10 1200 n | После букв rfd цифра 0 означает первый драйвер 360К, 1 - второй драйвер 360К, 2 - первый драйвер 1.2 мегабайт, 3 - вто- рой драйвер 1.2 мегабайт , и т.д. Чтобы скопировать все файлы текущего каталога на дискету 360К (5.25 дюйма), первый дисковод, введите: tar cv . (По умолчанию, текущее устройство есть устройство 0. Его не нужно явно указывать.) Для копирования всех файлов текущего каталога на дискету 5.25 дюйма 1.2 мегабайт на первом дисководе, введите: tar cv2 . Для извлечения файла с дикеты 3.5 дюйма 720К (перывй дис- ковод), введите: tar xv4 ./filename Заметим, что версия /etc/default/tar вашей системы может отличаться от приведенной выше. Системный администратор по сво- ему усмотрению может редактировать этот файл. Прежде чем ис- пользовать стенографическую нотацию, дважды проверьте, какая запись соответствует какому устройству в вашей системе. . 5-9 5.3 Копирование дискет. Чтобы уменьшить вероятность утраты данных, хранящихся на флоппи-диске, вы можете использовать команду diskcp(C) для соз- дания копий ваших дисков. Мы советуем вам копировать все выде- ленные вам ресурсы UNIX. Копировать информацию необходимо на уже сформатированный диск. Если диск сформатирован в UNIX, его можно использовать сразу. Если диск сформатирован в другой операционной системе, его необходимо переформатировать в UNIX, прежде чем переносить туда копии дисков UNIX. Вы должны знать также, что диски, сформатированные в некоторых операционных системах, не могут быть использованы в других системах даже после переформатирова- ния. Команда diskcp может форматировать дискеты перед перенесе- нием копий. Использование команды diskcp может быть описано следующими пунктами: 1. Поместите в ваш основной дисковод тот флоппи-диск, ко- торый вы хотите копировать. Если вы, как описано в 5.2.2, создали на дискете резервную копию вашего на- чального каталога, попробуйте все описываемые действия проделать с этой дискетой. 2. Поместите другой диск на другой дисковод. Это диск-ад- ресат. Заметим, что информация, уже содержащаяся на данном диске, будет утрачена. Если в вашей машине только один дисковод, оставьте там исходный диск. В этом случае копия будет переслана на твердый диск, а уже оттуда - на диск-адресат. 3. Для форматирования нового диска на 360К перед перене- сением туда копии введите команду: diskcp -f Для форматирования на 1.2 мегабайт введите: diskcp -f -96 . 5-10 Если у вас нет необходимости форматировать новый диск, и если исходный диск 360К, введите: diskcp Если диск 1.2 мегабайт, введите: diskcp -96 Если ваш компьютер имеет два дисковода, введите следу- ющую команду для копирования дискеты 360К на сформати- рованный диск: disk -d 4. Затем на вашем экране появятся инструкции по дальнейшим действиям. Так, если ваша система имеет только один дисковод, появится просьба вынуть исходный диск и вставить диск-адресат. 5. Если вы копировали резервную копию вашего начального каталога, поместите диск с только что созданной копией в первый дисковод и проверьте, что копирование завер- шилось удачно, вводя следующую команду: tar tvf /dev/fd096ds15 Если дискета 360К, введите: tar tvf /dev/fd048ds9 Заметим, что вы можете использовать стенографическую нотацию команды tar, о чем можно прочесть чуть выше. 5.4 Как узнать информацию о статусе системы. Поскольку система UNIX есть достаточно большая, загружен- ная в компьютер среда, то многие вещи о ее состоянии можно уз- нать у нее самой, например, кто из пользователей дольше всего работает в ней или какое количество дискового пространства сво- бодно. Ниже вы сможете прочесть о том, как это сделать. . 5-11 5.4.1 Кто сейчас работает в системе? Команда who выдает список имен, номер терминала и время регистрации всех пользователей, работающих в системе в данный момент. Введите следующую команду: who На экране появится примерно такая информация: ________________________________________________________ | | arnold tty1a Apr7 10:02 | daphne tty1b Apr7 07:47 | elliot tty1c Apr7 14:21 | ellen tty2a Apr7 08:36 | gus tty2b Apr7 09:55 | adrian tty2c Apr7 14:21 | Для тех же целей - узнать, кто работает в системе, может быть использована команда finger. Она выдаст более детальное сообщение. Для ее использования просто введите finger. 5.4.2 Распознавание обращений к диску. Команда df выводит информацию о свободном дисковом прост- ранстве. Использованная без опций, эта команда выдает сводку о числе свободных блоков и свободных индексных дескрипторов фай- лов. Блок - это 512 байтов. Введите следующую команду для выда- чи информации о свободном пространстве: df Вы увидите примерно такую строку: _________________________________________________________ | | / (/dev/root): 5956 blocks 1437 inodes | Это означает, что в файловой системе /dev/root 5956 блоков и 1437 индексных дескрипторов файлов свободны. 5956 блоков сос- тавляют около 3 мегабайт. . 5-12 Используемая с опцией -v, команда df сообщает процент ис- пользуемых блоков наряду с числом занятых и свободных блоков. Введите следующую команду: df -v Вывод будет аналогичен следующему: _________________________________________________________ | | Mount Dir Filesystem blocks used free % used | / /dev/root 80152 70192 9960 88% | /y /dev/y 82194 34314 47880 42% | /u /dev/u 50000 37840 12160 76% | Видно, что в файловой системе /dev/root 88%, или 70192 блока из общего количества 80152, использованы; остальные 9960 свободны. 5.5 Управление процессами. Выполнимые команды рассматриваются как процессы. Пользова- тель UNIX может запускать несколько процессов одновременно, один из которых будет идти в приоритетном режиме, а остальные - в фоновом. Приритетный процесс - один из тех, что идут в данный момент на вашем терминале. Он единственный способен принимать ввод с клавиатуры. Например, когда вы работаете в редакторе vi, единственным прцессом, идущем в приоритетном режиме, будет прог- рамма-редактор. Ввод с клавиатуры не может быть получен процессами, идущими в фоновом режме. В фоновом режиме поэтому целесообразно запус- кать те процессы, которые редко требуют обмена с клавиатурой. Ниже приведено обсуждение управления приоритетными и фоновыми процессами. 5.5.1 Установление фонового режима выполнения команд. Обычно команды, посылаемые с клавиатуры, должны иметь стро- гую последовательность. Не может начаться выполнение команды прежде, чем закончится выполнение предыдущей. Однако, если вы поместите выполнение команды в фоновый режим, вы сможете вводить команды для приоритетного выполнения, даже если выполнение фоно- вых команд еще не завершено. . 5-13 Для помещения команды в фоновый режим напечатайте знак ам- персанда (&) в конце командной строки. Например, введите следую- щую команду для создания и подсчета символов в большом файле. Заметьте, что эта команда занимает две длинные строчки. Тем не менее команда будет воспринята как одна благодаря обратной косой черте, помещенной в конце первой строчки. Обратная косая черта сообщит выполняющей оболочке shell о том, что команда будет про- должена на следующей строке: cat /etc/tempcar /etc/tempcar /etc/tempcar > lagefile; \ wc -c lagefile > characters & Вывод команды wc будет переадресован в characters. Если не задатьэтой переадресации, то вся информация будет выведена на экран, хотя вы можете быть заняты в это время выполнением совсем других процессов. Это может оказаться очень некстати для выпол- няющихся команд. Переадресация вывода этой команды - простой путь избежать этих неприятностей. Просмотрите содержание characters с помощью команды cat. Когда закончите, удалите characters и largefile с помощью коман- ды rm. Помещая выполнение процесса в фоновый режим, вы уже не смо- жете прервать его выполнение с помощью нажатия клавиши INTERRUPT, что можно проделать с приоритетным процессом. Для прерывания фонового процесса вы должны использовать команду kill. Эта команда описана ниже, в части 5.5.4. 5.5.2 Отсрочка выполнения команд. Кроме помещения команд в фоновый режим для выполнения, UNIX позволяет отсрочить выполнение команды. Это достигается с помощью команды at. Команда at позволяет назначать время начала выполнения команд целой серии. Для команды at требуется стандартный ввод. Ее синтаксис та- ков: at time day < file Аргумент file является именем файла, содержащего команду или команды, подлежащие выполнению. Аргумент time - время дня, записанное цифрами, за которыми следует указание am (первая по- ловина дня), или pm (вторая половина дня). Одна или две цифры этого числа интерпретируются как час, а три или четыре цифры - как час и минуты начала выполнения. Нельзя, чтобы этот аргумет содержал более чем четыре цифры. Аргумент day является опцией. Она может выглядеть следующим образом: имя месяца, следующего за номером дня, или день недели. Если day специально не указывает- ся, команда будет выполнена в ближайшее указанное время. . 5-14 Представьте, что вам нужно напечатать большой файл, но вы не хотите делать это в рабочее время, т.к. эта работа монопольно займет принтер на долгое время. Вы можете использовать команду at для отсрочки печати на ночь, когда в офисе никого нет. Чтобы сделать это, во-первых, создайте с помощью редактора vi файл, содержащий команду печати. Назовите этот файл printfile. Этот файл должен содержать следующую строку: lp filename Аргумент filename - иям того большого файла, который вы хо- тите напечатать. Создав printfile, введите следующую команду: at 11pm wed < printfile Нет необходимости делать эту команду фоновой. Вы введете ее и нажмите RETURN. Снова появится приглашение UNIX. Ваша команда начнет выполняться в 11 вечера в среду. Заметим, что команда at будет работать после вашего выхода из системы. Можно просмотреть список тех процессов, чье выполне- ние отложено с помощью команды at. Для этого используйте команду at -l. Она выдаст следующую информацию: . ID-номер файла. . Команда, требующая файл (at или batch). . Дата и время начала выполнения файла. Для отмены действия команды at вам необходимо просмотреть список отложенных файлов и запомнить ID-номер нужного файла. Ис- пользуйте команду at -r для удаления файла из этого списка фай- лов. Команда at -r имеет следующий синтаксис: at -r ID-номер Например, следующая команда удалит файл с номером 504510300.а, удаляя все команды, включенные в этот файл: at -r 504510300.a Заметим, что пользователь может так распоряжаться только своими файлами. . 5-15 Файлы /usr/lib/cron/at.allow и /usr/lib/cron/at.deny конт- ролируют допуск пользователей, имеющих право пользования окман- дой at. Во многих системах это разрешается только привилегиро- ванному пользователю. Если вам необходимо использование команды at, но вы не имеете к ней доступа, обратитесь к системному адми- нистратору. 5.5.3 Какие процессы сейчас выполняются? Команда ps устанавливает "статус процесса" и выводит инфор- мацию о тех процессах, выполняющихся в данное время. Эта инфор- мация необходима в том случае, если вы хотите прервать фоновый процесс. Чтобы вывести на экран информацию о текущих процессах, вве- дите: ps Вы увидите сообщение, подобное следующему: __________________________________________________________ | | PID TTY TIME COMMAND | 49 2a 0:28 sh | 11267 2a 0:00 ps | В колонке PID содержатся уникальные идентифицирующие номера процессов, которые могут быть использованы в случае прерывания процесса. Колонка TTY содержит названия терминалов, на которых идет процесс. В колонке TIME показано совокупное время выполне- ния процесса. И последняя колонка, COMMAND, содержит текущую вы- полняющуюся команду. Введите следующую команду для отображения информации обо всех текущих процессах системы: ps -e Вы можете также узнать информацию о процессах, идущих на других терминалах. Для этого вам нужно использовать опцию -t и специфицировать имя терминала. Например, с помощью следующей ко- манды вы узнаете о процессах, ассоциированных с терминалом 2с: ps -t2c . 5-16 5.5.4 Прерывание процессов. Для прерывания приоритетного процесса нажмите клавишу INTERRUPT. Ее часто замещает клавиша Del. Таким образом вы може- те прервать текущий приоритетный процесс. Для прерывания всех фоновых процессов вам нужно использовать следующую команду: kill 0 Для прерывания только специфицированного фонового процесса введите: kill signal_number process_ID_number signal_number - опция. Иногда она необходима для прерывания "упрямых" процессов. Такие процессы иногда могут быть прерваны с помощью signal_number 9. Узнайте process_ID_number с помощью ко- манды ps. В качестве примера попробуйте прервать процесс вашей работы в shell. Заметим, что при входе в систему вы попадаете в shell. Прекращая shell-процесс, вы выходите из системы. Введите ps для того, чтобы узнать, какой ID-номер у одного из процессов, поме- ченных sh или csh в колонке COMMAND. Предположим, что это номер 4831. Для прерывания вашего shell-процесса введите: kill -9 4831 После ввода этой команды вы снова увидите приглашение к ре- гистрации. Попробуйте сделать это! _______________________________________________________________ Замечание. Прерывание процесса, ассоциированного с редактором vi, мо- жет привести к непредсказуемому поведению терминала. Так, вре- менные файлы, которые обычно создаются одновременно с началом выполнения команды и удаляются после ее завершения, могут исчез- нуть в неизвестном направлении после применения команды kill. Обычно временные файлы хранятся в каталоге /tmp. Советуем вам периодически проверять содержимое этого каталога и своевременно удалять старые файлы. ________________________________________________________________ . 5-17 5.6 Программирование на языке Shell. И Bourne shell, и C shell обладают существенными отличи- тельными особенностями. Если вы имеете опыт работы с MS-DOS, вы найдете, что в программировании в UNIX есть сходные вещи. Мы все же опишем некоторые приемы программирования на языке shell. Подробнее об этом вы сможете прочесть в главах "The Shell" и "The C-Shell" в UNIX User's Guide. В 5.5.1 при обсуждении выполнения команд в фоновом режиме мы привели следующую команду для ввода: cat /etc/tempcar /etc/tempcar /etc/tempcar > lagefile; \ wc -c lagefile > characters & Но ведь можно поместить эту длинную команду в файл и затем выполнить файл. Попробуйте создать с помощью редактора vi файл, называемый command.file. Пусть в этом файле будут следующие строки: cat /etc/tempcap > largefile cat /etc/tempcap >> largefile cat /etc/tempcap >> largefile wc -c largefile > characters После помещения этих четырех строк в файл command.file, на- печатайте :x для сохранения его и выхода из vi. Теперь вам нужно ввести следующую команду для того, чтобы этот файл выполнимым: chvod +x command.file Наконец, запустите файл command.file на выполнение в фоно- вом режиме: command.file & Немного обождав, с помощью следующей команды убедитесь в правильном выполнении файла command.file: cat characters . 5-18 На самом дел, некоторые особенности shell-программирования позволят вам управлять ходом текущих процессов. Вы могли бы за- писать содержание файла command.file так: for name in /etc/tempcap do cat $name $name $name > largefile done wc -c largefile > characters Помещая команды UNIX в файл, не забывайте сделать его вы- полнимым с помощью команды chmod. (Об этой команде читайте в Части 4 данного руководства.) . Ч А С Т Ь 6  Утилиты непосредственного взаимодействия UNIX ___________________________________________________________ 6.1 Введение 6-1 6.2 Использование системных часов и календаря 6-1 6.2.1 Как узнать дату и время 6-1 6.2.2 Календарь на экране 6-2 6.3 Почтовые услуги 6-2 6.3.1 Посылка почтовых сообщений 6-2 6.3.2 Прием почты 6-4 6.3.3 Вывод на терминал 6-6 6.4 Автоматические напоминания системы 6-7 6.5 Использование системного калькулятора 6-8 . 6-1 Система UNIX содержит немало программ, помогающих вам в работе в среде UNIX и позволяющих вам обмениваться сообщениями с другими пользователями. В этой части вы сможете прочесть о та- ких утилитах, и узнаете, как . Вывести на экран дату, время и календарь, . Связаться с другими пользователями, . Использовать автоматическте системные напоминания, . Использовать "калькулятор на экране". Эта часть построена как самоучитель. Лучший способ изучения данной части - читать ее непосредственно за дисплеем, выполняя все приведенные в тексте примеры. Команды описываются без подробностей. Для выяснения тонкос- тей обращайтесь к UNIX User' Reference. 6.2 Использование системных часов и каландаря. UNIX содержит команды, печатающие дату и время, а также календарь на любой месяц или год. Далее вы и прочтете об этом. 6.2.1 Как узнать дату и время. Команда date печатает дату и время. Введите: date То, что будет напечатано на экране, будет иметь примерно следующий вид: __________________________________________________________ | | Mon Jan 25 08:26:14 PST 1988 . | 6-2 6.2.2 Календарь на экране. Команда cal выводит на экран календарь того месяца или го- да, который вы укажете. Например, выведете на экран календарь на март 1952 года: cal mar 1952 Вот что вы должны увидеть: __________________________________________________________ | | March 1952 | | S M Tu W Th F S | 1 | 2 3 4 5 6 7 8 | 9 10 11 12 13 14 15 | 16 17 18 19 20 21 22 | 23 24 25 26 27 28 29 | 30 31 | Большинство аббревиатур названий месяцев очевидны. Также месяц можно обозначить в этой команде цифрами. Календарь на весь год будет напечатан, если вы не будете указывать аргумент "ме- сяц" в этой команде. Год всегда нужно указывать полностью. Ко- манда cal 88 напечатает календарь на 88 год от Рождества Христо- ва, а не на 1988. 6.3 Почтовые услуги. Несколько программ предоставляют вам возможность связываться с другими пользователями. Две наиболее полезных из них - это mail и write. Команда mail позволяет отправлять сооб- щения в "почтовый ящик" пользователей системы. Команда write по- сылает сообщение непосредственно на терминал пользователя, если он зарегистрировался в системе. Обе эти команды описаны ниже. 6.3.1 Посылка почтовых сообщений. Одной из особенностей системного расширения является программа mail, позволяющая вам обмениваться сообщениями с дру- гими пользователями. Попробуйте эту программу в работе, посылая сообщение себе. Для этого введите: mail login Замените здесь login на ваше регистрационное имя. . 6-3 В зависимости от того, как ваш системный администратор построил конфигурацию подсистемы почты, может появиться следующая подсказка: Subject: Если такая аодсказка появилась, введите краткую суть этого сообщения. В данном случае введите test. Теперь вы можете вводить сам текст сообщения. Закончив, нажмите Ctrl-d для сигнала о завершении сообщения и для его отп- равки. Однако, это можно сделать и по-другому. Можно ввести ~v (тильда, предшествующая v), и при этом попасть в редактор vi. Находясь в этом редакторе, можно спокойно ввести текст сообще- ния, не опасаясь опечаток. Воспользуйтесь всеми возможностями данного редактора, а допущенные ошибки исправьте до посылки со- общения. Если вы пользуетесь только командой mail, то ошибки ис- править нелегко, а они могут исказить весь смысл сообщения. Составляя текст сообщения в редакторе vi, введите по окон- чании этого процесса :x, а затем Ctrl-d. Опять-таки, в зависимости от конфигурации, система может в этом месте выдать следующее: Cc: Увидев это, введите имена тех пользователей, которые должны получить "копию под копирку" текста этого сообщения. Часто по умолчанию здесь подставляется значение yourself, т.е. имя самого отправителя. Так как в данном случае вы посылаете сообщение сами себе, сразу нажмите RETURN. Вы снова попадете в среду UNIX. Часто посылаются текстовые файлы другим пользователям сис- темы. Для этого можно использовать переадресацию. Пусть файл, который вы хотите послать, называется schedule, он находится в текущем каталоге, а имена пользователей, которым вы хотите его отправить, - Naomi и Bea. Чтобы сделать это, введите следующую команду: mail naomi bea < schedule Этим путем можно посылать файлы достаточно быстро. У команды mail существует много опций. Среди них есть те , что позволяют отправлять уже готовые сообщения, посылать ответы, посылать сообщения, подписываясь псевдонимом, и т.д. Обо всем этом можно прочесть в UNIX User's Guide. . 6-4 6.3.2 Прием почты. Входя в систему, вы можете увидеть следующее сообщение: ___________________________________________________________ | | you have mail | Это значит, что в ваше отсутствие на ваше имя пришла "поч- та". Чтобы прочесть ее, введите: mail Будет высвечен список заголовков сообщений под номерами. Вы увидите примерно такую картину: __________________________________________________________ | | 1 john Wed Sep 21 09:21 26/782 "Notice" | 2 sam Tue Sep 20 22:55 6/83 "Meeting" | 3 tom Mon Sep 19 01:23 6/84 "Invite" | Читая слева направо, вы узнаете из данного сообщения, кто послал его, дату и время отправления, число строк и символов в нем, а также суть сообщения. Чтобы прочесть это сообщение, просто введите его номер и нажмите RETURN. Например, чтобы прочесть сообщение от sam, вве- дите 2 и нажмите RETURN. Прчтите сообщение, которое вы послали себе сами (см. предыдущую строницу данного руководства). После того, как вы прочтете пришедшее к вам сообщение, с ним можно сделать следующее: удалить его, сохранить его и/или ответить на него. Для удаления сообщения нажмите d, номер сообщения и RETURN. Чтобы сохранить сообщение в "почтовом ящике", введите ho, номер сообщения и нажмите RETURN. Для сохранения сообщения в файле те- кущего каталога, введите s, затем номер сообщения и имя файла, нажмите RETURN. Если файл с таким именем не существует, он будет создан. . 6-5 Ответить на почтовые сообщения позволяют две команды. Это команды r и R. Нажав r, затем номер сообщения, RETUTN, потом введя ваш ответ, вы отпроавите его автору сообщения. Если же вы повторите все эти действия с командой R, то ваш ответ получит не только автор сообщения, но и все пользователи, находящиеся в списке авторов сообщений к вам. После прочтения сообщений, вы можете снова просмотреть спи- сок заголовков сообщений. Для этого введите h и RETURN. Если список заголовков занимает более чем одну страницу экрана, вве- дите h+ и RETURN. По этой команде высветятся следующие 18 строк этого списка. Для выдачи предыдущих 18 строк введите h-. Вы можете послать почту с помощью команды mail. Для отправ- ления постового сообщения пользователю по имени joe, просто вве- дите следующую команду: mail joe Следующие ваши шаги в этом случае описаны в 6.3.1 (Посылка почтовых сообщений.) Чтобы выйти из режима почты, введите q и RETURN. Ответьте на сообщение, посланное вами самому себе. Для это- го: 1. Введите mail. 2. Введите rnumber, где number - номер сообщения, которое вы послали себе. 3. Нажмите RETURN. 4. Составьте ваш ответ. Помните, что вы можете набрать ~v для подготовки текста ответа с помощью редактора vi. 5. По окончанию составления ответа нажмите Ctrl-d. Если вы подготовили текст с помощью редактора vi, наберите :x для выхода из редактора и нажмите Ctrl-d. 6. Нажмите RETURN для посылки сообщения. 7. Напечатайте restart. Эта команда заставит mail напеча- тать все сообщения, пришедшие к вам в то время, что вы работали с этой командой. 8. Вы увидите тот ответ, который вы сами себе послали на ваше же себе сообщение. Нажмите номер сообщения для его вывода на экран для чтения. . 6-6 9. Закончив прсмотр сообщения, введите q для выхода из mail. 6.3.3 Вывод на терминал. UNIX включает команду, позволяющую посылать сообщения не- посредственно на экран другого пользователя, если только он в данный момент зарегистрирован в системе. Это команда write. Нап- ример, пошлите сообщение на терминал joe: write joe После того, как вы выполните эту команду нажатием RETURN, у себя на экране joe увидит следующее: ___________________________________________________________ | | Message from login tty012... | Здесь login - ваше регистрационное имя. Для отзыва joe дол- жен ввести: write login login - опять-таки ваше регистрационное имя. Далее каждая введенная вами строка будет отображена и на ва- шем экране, и на экране joe. Каждая строка, введенная joe, также будет видна на двух ваших экранах. Для завершения ввода сообще- ния для joe нажмите Ctrl-d в конце строки. То же самое может сделать joe для завершения переговоров с вами. Типичным действием для координации обмена сообщениями таким образом служит помечивание каждой введенной строки для распозна- вания, последняя она или нет. Так, если строка не последняя, вводите в ее конце o (over), а в конце всего сообщения - oo (over and out). Потренируйтесь с командой write, посылая сообщение себе. Для этого введите следующую команду: write login . 6-7 Замените login на ваше регистрационное имя. Вы увидите та- кое сообщение: Message from login ttynn... Теперь просто введите текст сообщения. Так как вы пишете сами себе, каждая введенная строка будет повторена не экране дважды. Например, это может выглядеть следующим образом: __________________________________________________________ | | Hello Mark o | Hello Mark o | Remember, we have meeting at 12:00. o | Remember, we have meeting at 12:00. o | Right, see you there. oo | Right, see you there. oo | Нажмите Ctrl-d для завершения работы по обмену сообщениями. 6.4 Автоматические напоминания системы. Для всех пользователей UNIX предоставляет возможность ав- томатического сервиса в виде подсказок и напоминаний. Так, каж- дый при регистрации UNIX просматривает файл типа "календарь", находящийся в начальном каталоге данного пользователя, содержа- ние которого может быть примерно такое: __________________________________________________________ | | 1/23 David's wedding | 2/9 Mira's birthday | 3/30 Paul's birthday | 4/27 Meeting at 2:00 | 9/1 Karen's birthday | 10/3 License renewal | Каждая строка такого файла просматривается. Строки, содер- жащие сегодняшнюю и завтрашнюю даты, выбираются и посылаются вам как почтовае сообщения. Для их просмотра нужно действовать так- же, как и при просмотре других постовых сообщений. . 6-8 Файл calendar не создается для вас автоматически. Это вы должны сделать для себя сами, если имеете такое желание. Он дол- жен находиться в вашем начальном каталоге. Для создания и исправления файла calendar пользуйтесь ре- дактором vi. Помещайте сообщение о дате/событии на отдельной (одной) строке. Даты могут быть указаны по разному. Вот, напри- мер, различные записи одного и того же: 9/7 Sep.7 september 7 6.5 Использование системного калькулятора. С помощью команды bc можно включить системный калькулятор, использование которого напоминает использование обычного ручного калькулятора. Ниже приводятся команды, с помощью которых вы мо- жете, находясь в UNIX, выполнять свои расчеты. Заметим, что ра- бота в режиме калькулятора начинается с ввода команды bc, и за- канчивается вводом команды quit. Комментарии по содержанию операций приводятся на тех же сторках, что и сами команды. . 6-9 Ъ_Операция Комментарий bc Вход в bc 123.456789+987.654321 Сложение и результат 1111.111110 9.0000000-9.0000001 Вычитание и результат -.0000001 64/8 Деление и результат 8 1.12345678934*2.3 Запись с сохранением точности 2.58395061549 19%4 Нахождение остатка 3 3^4 Возведение в степень 81 2/1*2 Вычислить по правилам 4 2/(1*2) Вычислить по правилам 1 x=46.5 Присвоить значение переменной x y=52.5 Присвоить значение переменной x x+y+1.0000 Сложение и результат 100.0000 obase=16 Перевод в шестнадцатиричную систему счисления 15 Перевести в шестнадцатиричную F систему счисления 16 Перевести в шестнадцатиричную 10 систему счисления 64 Перевести в шестнадцатиричную 40 систему счисления 255 Перевести в шестнадцатиричную FF систему счисления 256 Перевести в шестнадцатиричную 100 систему счисления 512 Перевести в шестнадцатиричную 200 систему счисления quit Кроме этого, возможно производить масштабирование, опреде- ление функций, и программирование других действий с помощью язы- ка C. Другие возможности - именование регистров и вызов подпрог- рамм. Для более подробного ознакомления читайте "bc:ACalculator" в UNIX User's Guide.