Текст
                    Потратив всего 10 минут
на каждый урок,
вы научитесь:
Работать в графической среде
X Window System и К Desktop
Перемещаться по файловой
системе, как опытный
пользователь
Находить справку, когда она
нужна как воздух
Работать с файлами в командном
процессоре
Извлекать максимальную пользу
из самых простых сценариев
командного процессора
Настраивать свою рабочую среду
Правильно пользоваться правами
доступа и привилегированными
командами
Организовывать безопасную
работу на рабочей станции
и в сети
Печатать документы в Unix
Управлять процессами
Править текст
gjgu Короткие уроки —
S быстрые результаты
5ЛМ5
Освой
самостоятельно
www.williamspublishmg.com
www.samspublishing.com
Unix
К4
SAMS
2-е издание
Эта книга — простое практическое
пособие для тех, кто хочет быстро
получить результат. Изучив
двадцать 10-минутных уроков, вы
овладеете основами Unix, чтобы
работать в этой системе
эффективно и продуктивно.
о
9
9<
I
а
3
I
о
Советы показывают короткие пути
к решениям
Предостережения помогают
избежать наиболее
распространенных ошибок
Замечания просто и доходчиво
объясняют новые термины
и определения
Термины содержат развернутые
пояснения новых понятий
и определений
Категория: операционные системы
Предмет рассмотрения: Unix
Уровень: для пользователей начального
и среднего упорна
Ши^-hckv Р Unix. Ю мик-
не урок. 2-® ИЭД>
ю
ф
S
£
Q)
X
X
Ф
80,00р
7
Е
S
Z
о
§
§


sAms Они Robert Shimonski sAms 800 East 96th Street, Indianapolis, Indiana, 46240 USA
sAms Освой самостоятельно Un х 2-е издание ww» Издательский дом “Вильямс" МЛИ Москва • Санкт-Петербург • Киев КЛА 2006
ББК 32.973.26-018.2.75 Ш61 УДК 681.3.07 Издательский дом “Вильямс” Зав. редакцией С.Н. Тригуб Перевод с английского и редакция И.В. Берштейна По общим вопросам обращайтесь в Издательский дом “Вильямс” по адресу: info@williamspublishing.com, http://www.williamspublishing.com 115419, Москва, а/я 783; 03150, Киев, а/я 152 Шимонски, Роберт. Ш61 Освой самостоятельно Unix. 10 минут на урок. Пер. с англ. — М. : Издательский дом “Вильямс”, 2006. — 272 с. ил. — Парал. тит. англ. ISBN 5-8459-1001-3 (рус.) Эта книга представляет собой краткий курс из 10-минутных уро- ков для изучения основ системы Unix безотносительно к ее конкретной версии. Помимо основного материала уроков и развернутого пояснения новых терминов, в книге содержится немало полезных советов и прак- тических приемов, позволяющих избежать типичных ошибок при входе в систему и выходе из нее, использовании графической среды X Window System и KDE, перемещении по файловой системе, поиске справки, выборе командного процессора, написании сценариев ко- мандного процессора, установке прав доступа к файлам и каталогам, удаленном доступе к сетевым ресурсам, редактировании файлов, печа- ти документов, архивировании данных и настройке рабочей среды. Книга адресована тем, кто делает лишь первые шаги в освое- нии Unix. ББК 32.973.26-018.2.75 Все названия программных продуктов являются зарегистрированными торго- выми марками соответствующих фирм. Никакая часть настоящего издания ни в каких целях не может быть' воспроиз- ведена в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая фотокопирование и запись на магнитный носитель, если на это нет письменного разрешения издательства Sams Publishing. Authorized translation from the English language edition published by Sams Publishing, Copyright © 20Q.5. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the publisher. Russian language edition is published by Williams Publishing House according to the Agreement with R&I Enterprises International, Copyright © 2006. ISBN 5-8459-1001-3 (pyc.) ISBN 0-672-32764-3 (англ.) © Издательский дом “Вильямс”, 2006 © by Sams Publishing, 2005
Оглавление Введение 13 Урок 1. Итак, приступаем 21 Урок 2. Получение справки 39 Урок 3. Графическое сопряжение с Unix 53 Урок 4. Особенности файловой системы 71 Урок 5. Методы перемещения по файловой системе 89 Урок 6. Работа в командной строке 99 Урок 7. Чтение файлов 115 Урок 8. Правка текста 125 Урок 9. Утилиты правки текста и управления файлами 137 Урок 10. Инструментальные средства архивирования и сжатия данных 149 Урок 11. Управление процессами в Unix 163 Урок 12. Ввод и вывод 177 Урок 13. Регулярные выражения 185 Урок 14. Основы создания сценариев командного процессора 195 Урок 15. Пользовательские утилиты 205 Урок 16. Видоизменение рабочей среды 217 Урок 17. Печать в Unix 225 Урок 18. Подключение к сети и безопасность 233 Урок 19. Установка прав доступа 243 Урок 20. Привилегированные команды Unix 255 Приложение. Источники для дальнейшего изучения Unix 263 Предметный указатель 265
Содержание Введение 13 Урок 1. Итак, приступаем 21 Практика в Unix — путь к совершенству 22 Подготовка ко входу в систему 23 Процесс входа в систему 26 Регистрация в текстовом режиме 27 Регистрация в графическом режиме 28 Процесс выхода из системы 29 Выход из системы в текстовом режиме 30 Выход из системы в графическом режиме 31 Разновидности командных процессоров 32 Работа с командным процессором 34 Резюме 37 Урок 2. Получение справки 39 Поиск справки в Unix 40 Использование оперативных страниц руководства 41 Дополнительная помощь 44 Команды whatis и man -f 45 Команды apropos и man -k 46 Другая помощь 47 Получение справки в графической среде KDE 48 Поиск в Help Center 49 Дополнительная документация 49 Оперативно доступные ресурсы по Unix и Linux 50 Резюме 51 Урок 3. Графическое сопряжение с Unix 53 Краткий обзор X Window System 53 Версии X Window System 54 Функционирование X Window System 54 Запуск X Window System 55 Связывая все вместе 57 Расположение окна 60 Специальная настройка X Window System 62 Диспетчеры окон 64 Диспетчер окон twm 65
Содержание 7 Другие диспетчеры окон 66 Среды настольных систем 67 KDE 68 Резюме 69 Урок 4. Особенности файловой системы 71 Строение файловой системы 71 Перемещение по файловой системе 74 Применение команды pwd 75 Вывод списка файлов в Unix 76 Скрытые данные 81 Смена каталогов по команде cd 82 Смена каталогов по командам pushd и popd 84 Относительные и абсолютные пути 85 Перемещение по файловой системе с помощью графического интерфейса 86 Простые действия в KDE 86 Резюме 88 Урок 5. Методы перемещения по файловой системе 89 Применение команды find 89 Поиск файла по дате создания 92 Поиск файла по размеру 92 Поиск данных с помощью других команд Unix 94 Команда whereis 94 Команда which 94 Команда grep 95 Использование средств поиска в KDE 96 Резюме 98 Урок 6. Работа в командной строке 99 Работа с файлами из командной строки Unix 100 Команда touch 100 Удаление файлов по команде rm 102 Команда mkdir 105 Команда rmdir 105 Команда rm -г 107 Команда ср 107 Команда ср -г 109 Команда mv 109 Команда In 111
8 Содержание Выбор правильного пути 113 Резюме 113 Урок 7. Чтение файлов 115 Команда cat 115 Повышение удобочитаемости выводимых данных с помощью пейджеров 118 Команда more 119 Команд less 120 Команда tail 121 Команда head 122 Резюме 123 Урок 8. Правка текста 125 Правка текста в Unix 126 Редактор vi 127 Редактор emacs 130 Редактор, встроенный в KDE 133 Резюме 135 Урок 9. Утилиты правки текста и управления файлами 137 Команда wc 138 Команда split 139 Команды patch и diff 140 Контрольная проверка навыков управления файлами 142 Контрольная проверка 142 Резюме 147 Урок 10. Инструментальные средства архивирования и сжатия данных 149 Управление файлами в Unix 149 Учет использования дискового пространства 150 Сжатие файлов в Unix 152 Команда compress 153 Команда gzip 154 Команда tar 157 Применение утилит uuencode и uudecode 159 Резюме 160 Урок 11. Управление процессами в Unix 163 Многозадачность 164 Фоновые процессы 164
Содержание 9 Применение комбинации клавиш <Ctrl+z> и команды bg 165 Команда fg 166 Команда jobs 166 Команда ps 167 Команда kill 168 Команды at и cron 169 Применение команды cron 171 Применение команды at 173 Резюме 175 Урок 12. Вводи вывод 177 Переадресация ввода-вывода 178 Стандартный ввод-вывод 179 Поток STDIN 180 Поток STDOUT 181 Поток STDERR 182 Конвейеры 183 Резюме 184 Урок 13. Регулярные выражения 185 Сопоставление с шаблоном и регулярные выражения 186 Применение символов . и * в регулярных выражениях 187 Применение символов [] и Л в регулярных выражениях 190 Применение символов Л и $ в регулярных выражениях 191 Резюме 192 Урок 14. Основы создания сценариев командного процессора 195 Создание файлов сценариев командного процессора 200 Применение команды foreach 200 Применение операторов while и if 203 Резюме 204 Урок 15. Пользовательские утилиты 205 Применение команды chsh 205 Команда passwd 207 Применение команд finger и chfn 210 Применение команды chfn 211 Применение команды date 213 Применение команды uptime 214 Применение команды who 214 Резюме 215
10 Содержание Урок 16. Видоизменение рабочей среды 217 Псевдонимы 217 Переменные среды 218 Пути 220 Применение файлов с точкой 221 Работа с графическим пользовательским интерфейсом 222 Резюме 223 Урок 17. Печать в Unix 225 Команда 1рг 226 Команда Ipq 230 Команд Iprm 231 Резюме 232 Урок 18. Подключение к сети и безопасность 233 Применение утилиты telnet 234 Применение утилиты ssh 236 Применение утилиты rlogin 237 Применение утилиты slogin 239 Применение утилиты ftp 239 Резюме 241 Урок 19. Установка прав доступа 243 Права доступа к файлам и каталогам в Unix 243 Особенности установки прав доступа к каталогам 245 Уровни прав доступа 245 Применение команды Is -1 246 Применение команды chmod 247 Применение команды chgrp 251 Резюме 252 Урок 20. Привилегированные команды Unix 255 Еще раз о термине “корневой” 256 Однопользовательский режим 257 Команда fsck 258 Команды shutdown и reboot 260 Резюме 261 Приложение. Источники для дальнейшего изучения Unix 263 Предметный указатель 265
Об авторе Роберт Шимонски (Robert Shimonski) — известный спе- циалист-консультант по организации и защите сетей из Лонг- Айленда/Нью-Йорк. Он является автором более 30 книг по информационным технологиям, в том числе на такие темы, как проектирование систем на платформах Unix и Microsoft Windows, а также построение и защита сетей с использовани- ем технологий Check Point и Cisco. Кроме того, Роберт занимался внедрением современных технологий в сотнях компаний по всему миру. Так, совсем недавно он спроектировал и внедрил глобальную сеть MPLS, соединяющую сотни узлов. Сохранив свою приверженность к Unix, Роберт занимается теперь развертыванием систем Linux и свободно доступных инструментальных средств орга- низации сетей и защиты, в том числе Ethereal, NMIS и MRTG. Своим уникальным опытом работы с системами Unix и Linux Роберт делится в качестве научного редактора и авто- ра многих статей и книг на данную тему. В качестве специа- листа по организации и защите сетей Роберт был привлечен к созданию и оформлению издания LinuxWorld Magazine, дос- тупного по адресу http://www.linuxworld.com. Дополни- тельные сведения о книгах, написанных и задуманных Ро- бертом, можно получить по адресу www. гsnetworks . net. Благодарности Я хотел бы поблагодарить всех, кто оказал мне своевре- менную помощь в работе над этой книгой, в частности — ре- дакторов, предоставивших мне все необходимые средства для того, чтобы эта книга увидела свет. Выражаю искреннюю благодарность Дженни Уотсон (Jenny Watson) — за предложение взяться за этот проект и совместную работу над ним; Кристоферу Хайнцу (Christopher Heinz), моему научному редактору, и Скотту Мейерсу (Scott Meyers), редактору проекта, — за помощь, оказанную в кризисные моменты работы над книгой и скрупулезную вычитку ее рукописи.
От издательства Вы, читатель этой книги, и есть главный ее критик. Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть издан- ным нами. Нам интересны любые ваши замечания в наш адрес. Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумажное или электронное письмо либо просто по- сетить наш Web-сервер и оставить свои замечания там. Одним словом, любым удобным для вас способом дайте нам знать, нра- вится ли вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более интересными для вас. Отправляя письмо или сообщение, не забудьте указать назва- ние книги и ее авторов; а также свой обратный адрес. Мы внима- тельно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию новых книг. Наши электронные адреса: E-mail: inf o@williamspublishing. com WWW: http: //www.williamspublishing.com Информация для писем из: России: 115419, Москва, а/я 783 Украины: 03150, Киев, а/я 152
Введение Приглашаем вас к изучению Unix по 10 минут на каждый урок! Если вы только начинаете осваивать операционную систему Unix и хотите узнать о ней больше, эта книга станет для вас верным спутником. Каковы бы ни были причины ва- шего выбора данной книги, вы не пожалеете об этом, по- скольку в ней содержится немало полезной информации, по- могающей в изучении Unix. Назначение этой книги — дать основное представление о системе Unix, а также о том, как в ней работать и пользоваться ею наиболее продуктивно. В этой книге показаны также другие пути получения инфор- мации, которые помогут вам продолжить самообразование вне представленного здесь курса. Краткий обзор Unix В связи с расширением на рынке доли таких компаний, как Red Hat, Sun, IBM и Novell, не удивительно, что растет известность и Unix. ОС Unix (и Linux — версия Unix Линуса Торвальда (Linus Torvald)) теперь служит платформой для большинства брандмауэров, Web-серверов и настольных сис- тем, обеспечивая средства разработки и повышения произво- дительности для конечных пользователей. Unix имеет давние корни в вычислительной технике. Пройдя первоначальную “обкатку” в университетах и военных ведомствах, эта опера- ционная система начала все чаще применяться в связи с бур- ным развитием и массовым распространением Internet. После выпуска Linux общая перспектива Unix изменилась навсегда. Теперь Unix и Linux (более простую в использовании версию ОС Unix) можно обнаружить практически повсюду, и поэтому игнорировать их просто невозможно. К некоторым наиболее распространенным версиям Unix (называемым дистрибутивными или просто дистрибутивами) относятся Sun Solaris, IBM AIX, FreeBSD, Red Hat Linux, SuSE Linux (называемая также Novell SUSE) и SCO АСЕ. Не- смотря на некоторые отличия, в этих версиях ОС Unix имеет-
14 Введение ся нечто общее — основное ядро Unix, открытое для приме- нения и совершенствования каждому, кто умеет с ним обра- щаться. В этой книге основное внимание уделяется сходным свойствам всех версий Unix, чтобы вы могли продуктивно пользоваться любой версией данной операционной системы. Unix — это весьма эффективная многозадачная операцион- ная система. Многозадачность означает одновременное выпол- нение нескольких задач, а конкретнее — возможность для пользователя выполнять сразу несколько программ в течение одного сеанса работы в системе. Unix является также много- пользовательской операционной системой. Это означает, что многие пользователи могут одновременно (и безопасно) рабо- тать на одной и той же машине. Кроме того, Unix представляет собой открытое программное обеспечение, что дает пользовате- лям возможность свободного доступа к коду и его видоизмене- ния. Большинство версий Unix открыты, и поэтому они могут быть видоизменены (особенно версии Linux). Это правило не распространяется на оригинальные версии, а также на версии Unix, изменение которых не разрешается их поставщиками. Еще одной сильной стороной Unix является эффективность программирования и создания сценариев в этой системе. Суще- ствует целое сообщество пользователей, работающих с про- граммами Unix и оказывающих помощь в их разработке. Бла- годаря этому система постоянно развивается и совершенству- ется, что совсем не характерно для таких оригинальных опера- ционных систем, как Microsoft Windows. Большинство таких систем выпускаются производителями в виде закрытого про- граммного обеспечения, т.е. они не допускают видоизменения своего кода. О происхождении и перспективах развития Unix вы може- те узнать из соответствующих источников в Web. В конце книги приведены ссылки на такие источники, тогда как ос- новной материал книги позволит вам научиться пользоваться Unix. А теперь, когда у вас имеется общее представление о Unix и темпах развития этой операционной системы, пояс- ним, для чего нужна данная книга, как она организована и как ею пользоваться для эффективного изучения Unix.
Введение 15 Версии Unix Прежде чем переходить к основному материалу этой кни- ги, необходимо внести ясность в следующий вопрос. Сущест- вует много версий Unix, называемых разновидностями или дистрибутивами. В этой книге все версии называются просто Unix, если не указано иное о конкретной версии или дистри- бутиве. Все версии Unix и Linux благодаря их сходству можно отнести к одному семейству с общим происхождением и исто- рией развития, хотя они отличаются друг от друга своим внешним видом и поведением, как члены одной семьи. Материал в этом (как и в первом) издании представлен в самом общем виде и безотносительно к конкретной разно- видности или реализации Unix. Это наиболее простой способ изучения Unix. Ведь чем больше сложностей возникает при обучении, чем медленнее оно продвигается. Опять же, в этой книге Unix означает собственно Unix, если не указано иное. (yh Если пример из книги не работает в вашей системе е поддавайтесь панике— обратитесь к оперативным справочным руководствам или к помощи других пользо- < ' вателей, работающих на той же самой машине. В разных версиях Unix имеются некоторые отличия в командах, поэтому уделите время особенностям работы команд ; в вашей системе и в других дистрибутивах Unix. Изучайте Unix по 10 минут Эта книга состоит из 10-минутных уроков, в каждом из которых подается для усвоения небольшой по объему мате- риал. Как правило, материал каждого последующего урока построен на материале предыдущего урока, поэтому книгу лучше всего читать от начала до конца, хотя вы можете сво- бодно переходить от одного урока к другому в произвольном Порядке, чтобы, например, вспомнить позабытую команду или операцию. В уроках 1-3 рассматривается регистрация в системе (Unix или Linux), чтобы вы могли войти в систему и начать в ней работать. Кроме того, в этих уроках показаны основные прие-
16 Введение мы получения справки, что очень важно для освоения новой системы. Умение находить документацию и пользоваться ею имеет решающее значение для успешного изучения Unix. В уро- ках 4-5 рассматриваются файловая система, перемещение в ней и другие вопросы. В уроках 6-10 поясняется, каким об- разом можно манипулировать файлами и работать с ними, а также пользоваться некоторыми инструментальными средст- вами, входящими в состав системы, для редактирования, ар- хивирования и сжатия файлов. В уроках 11-14 описываются работа с командным процессором и применение сценариев. Возможно, вы и не научитесь создавать сценарии за один ве- чер, но все же получите ясное представление о том, насколько эффективной может быть Unix, если уметь ею пользоваться. В уроках 15-16 рассматриваются полезные утилиты, а также способы видоизменения рабочей среды. В уроках 17-18 (новых для второго издания книги) представлены способы вывода на печать в Unix, а также элементы организации сети и защиты. В уроках 19-20 приведен дополнительный материал (в част- ности, по Linux) для удобства изучения Unix на примере Linux как более простой версии данной операционной систе- мы в домашних условиях или же там, где предполагается развертывание новой системы на основе Unix или Linux. Как пользоваться Unix Если Unix-машина не используется просто как платформа для готового коммерческого приложения, работа с Unix проис- ходит, главным образом, с помощью текстовых команд, наби- раемых по подсказке в командной строке. В большинстве реа- лизаций Unix предоставляется также графический пользова- тельский интерфейс. Но даже в этом случае большая часть опе- раций связана с набором команд в окнах терминала, доступных в графическом пользовательском интерфейсе. В этой книге рассматриваются оба способа, поскольку некоторые версии Unix устанавливаются, а также допускают первоначальную ре- гистрацию в режиме графического интерфейса. Поэтому очень важно освоить оба способа, чтобы перейти к материалу осталь- ных уроков книги после изучения уроков 1—3.
Введение 17 А стоит ли вообще беспокоиться о минимальной графиче- ской поддержке? Вряд ли. Ведь именно для этого вы и приоб- рели данную книгу. Как упоминалось выше, в ней рассмат- риваются оба способа работы в системе: текстовый и графиче- ский. Разумеется, в системах Unix всегда доступны методы перетаскивания объектов с помощью мыши, но истинная си- ла Unix — в ее командной строке. Вы сможете убедиться в этом по мере изучения материала каждого урока. В этой книге представлена одна из разновидностей графического пользова- тельского интерфейса— среда настольной системы KDE (К Desktop Enviroment). Она выбрана в качестве характерного примера, потому что доступна в самых разных системах и ди- стрибутивах Unix. Кроме того, KDE является стандартной средой для SuSE — одной из самых лучших в настоящее вре- мя версий Linux от компании Novell. Как ни велико искушение воспользоваться столь ^^.•:<удбоным и развитымграфическим интерфейсом, как • KDE, старайтесь не попасть в полную зависимость от его утилит, В этой книге основное внимание уделяет- < ся командной строке, поскольку именно в ней заклю- чается истинная сила Unix. Графический пользова- тельский интерфейс постепенно развивался с целью привлечь больше пользователей к работе с Unix. Он призван восполнить пробел между перетаскиванием объектов в окнах Microsoft Windows и командной строкой Unix, Если вы будете постоянно помнить о том, что истинная сила Unix — в командной строке, то сможете стать квалифицированным пользователем этой операционной системы. Так, в Unix имеется ряд j команд, которые нельзя частично или полностью вы- полнить из графического интерфейса. Одно лишь это • •' . обстоятельство свидетельствует о потере эффектив- v" ности работы в Unix при использовании графического интерфейса. Поэтому старайтесь не привыкать к не- < ;х.<' йу, но пользоваться им в качестве вспомогательного средства для освоения Unix.
18 Введение Дополнительные сведения о Unix В книге столь небольшого объема просто невозможно пол- ностью охватить даже малую часть набора команд Unix. По- этому в ней дается достаточно информации, чтобы получить базовые знания, начать работать в Unix, а когда потребуются дополнительные сведения, ресурсы и ответы на насущные во- просы, знать, где их искать. Соответствующие ресурсы при- ведены в приложении к этой книге на тот случай, если они вам потребуются. Кому адресована эта книга Эта книга предназначена для тех, кто лишь начинает ос- ваивать Unix или стремится продвинуться дальше основ. Книга столь небольшого объема позволит вам получить мак- симум знаний, йсходя из минимального времени, затрачи- ваемого на обучение. К тому же эта книга может служить в качестве удобного краткого справочника по самым распространенным коман- дам Unix. Если вы продвинетесь дальше основ, то сможете использовать ее в качестве настольного справочного пособия. Представленные здесь команды универсальны и могут быть использованы в большинстве версий Unix. Поэтому обращай- тесь к данной книге за справкой, если позабудете какую-то команду или операцию. Примечание автора Прежде чем приступать к изложению основного материала, мне хотелось бы как-то помочь вам почувствовать себя более свободно, сделав следующее примечание: Unix — непростая система; она никогда таковой не была. Мой многолетний опыт работы с разными версиями Unix в условиях производства, обучения и написания книг на данную тему ясно показывает, почему многие пользователи не любят работать с Unix. Данная
Введение 19 система непроста в освоении, главным образом, потому что это происходит отнюдь не интуитивно. Это система, которую нуж- но изучить, прежде чем пользоваться ею. Если в Windows ин- туитивно понятный метод изучения может привести к какому- то результату, то в Unix он, как правило, ни к чему не приво- дит. Для того чтобы начать работать в Unix продуктивно, вам нужно просто изучить основы этой системы по такой книге, как эта. Хотя это правило распространяется не на всех, оно оказалось справедливым в отношении большинства известных мне пользователей Unix. Цель данной книги — разрушить предубеждение о сложно- сти освоения Unix, предоставить вам средство для того, чтобы вы могли начать работать с этой системой, и направить вас на правильный путь, заложив основы для верного ориентирова- ния в среде Unix. Итак, приступайте к изучению Unix, чтобы поставить ее себе на службу, а не восстановить против себя. Условные обозначения, принятые в этой книге В этой книге приняты следующие условные обозначения. • Вводимая информация выделена полужирным шриф- том системных сообщений. • Сообщения, выводимые на экран, выделены шрифтом системных сообщений. • Меню и их пункты, названия кнопок и других элемен- тов экранного интерфейса выделены специальным стилем меню. • Клавиша <Return> является “синонимом” клавиши <Enter> и заключена (как и остальные клавиши) в уг- ловые скобки. Кроме того, здесь используются следующие врезки для обозначения полезной информации.
20 Введение Советы и рекомендации относительно быстрого вы- Ч/ хода из затруднительного положения или экономии времени.., '• ;Ц< _ Предупреждения, помогающие избежать скрытых препятствий. : -Zj - W Развёрнутые пояснения новых терминов и определений,
Урок 1 Итак, приступаем Первый урок в этой книге посвящен началу работы в Unix после подключения к системе и регистрации в ней с помощью специального мандата. Кроме того, в данном уроке поясняют- ся принципы входа в систему в текстовом и графическом ре- жимах и выхода из нее. Unix применялась уже довольно давно, повсеместно и за- долго до появления проблемы двухтысячного года и бурного развития Internet. Со временем Unix превратилась из неудоб- ной и трудной для освоения системы в программный продукт, который поддерживается многими производителями. Теперь это без труда устанавливающаяся, хорошо документирован- ная настольная операционная и серверная система, мощность которой постоянно растет и уже достигла такого уровня, о ко- тором прежде приходилось только мечтать. Разумеется, это произошло не сразу. Совершенствование Unix происходило каждый год благодаря постоянной и кро- потливой работе над ее открытым исходным кодом, не пре- кращающейся разработке Linux и ежегодному росту числа ус- тановленных экземпляров по экспоненциальному закону. Со временем расширилось не только само присутствие Unix, но и ее потребительская база, включающая в себя пользователей и специалистов по системам Unix. При таких темпах разви- тия все больше людей (желают они того или нет) пользуются Unix как дома, так и на работе. Вероятно, вы выбрали эту кни- гу, потому что относитесь к их числу. Для того чтобы раскрыть истинную силу Unix, нужно, прежде всего, усвоить основы этой системы. В этом уроке показано, какие первые шаги сле- дует предпринять для того, чтобы начать работать в Unix. • Как входить в систему, используя текстовый и графи- ческий интерфейсы. • Как выходить из системы, используя текстовый и гра- фический интерфейсы.
22 Урок 1 В этом уроке будет рассмотрен также вход в систему с по- мощью графического пользовательского интерфейса KDE. Для этого нужно знать, как правильно подключиться к системе. Кроме того, здесь описываются все понятия, связанные с упо- мянутыми выше шагами, включая защиту системы, и отличия между входом в нее в текстовом и графическом режимах. Еще одна цель этого урока — представить ряд новых понятий, ко- торые более подробно будут раскрыты в следующих уроках. Практика в Unix — путь к совершенству В этом уроке вам предстоит сделать первые шаги для рабо- ты в Unix, но прежде следует сказать несколько слов о прак- тике. Значение практики трудно переоценить, поскольку именно ею достигается совершенство. По мере изучения ма- лознакомого вам поначалу материала этой книги вы в конце концов приобретете навыки опытного оператора Unix и по- чувствуете себя уютно в среде Unix. Когда новички видят, насколько быстро опытные пользо- ватели Unix вводят команды, они зачастую впадают в пани- ку, чувствуя, что так и останутся навсегда новичками, по- скольку не могут запомнить команды так быстро, как им того хотелось бы. Не следует, однако, думать, что если вы не мо- жете быстро вводить запомненные команды, то чего-то не знаете. Если вы действительно знаете, что делаете, то ско- рость особого значения не имеет. Начните с малого и посте- пенно развивайте в себе способность восстанавливать в памя- ти отдельные команды. Начинающему пользователю коман- ды Unix напоминают иностранный язык, и в какой-то мере это действительно так. Поэтому для изучения команд при- годны те же принципы, что и для изучения иностранных языков. Повторяя команды, вы развиваете в себе способность их вспоминать. И научиться делать это быстро можно лишь благодаря практике. Приобретя копию Unix, установите ее на своем домашнем ПК и попрактикуйтесь в наборе команд. Вы сразу же обнару- жите, насколько быстро команды запоминаются. Чем больше
Итак, приступаем 23 практиковаться, тем больше команд удается запомнить, а зна- чит, тем удобнее работать в Unix. Разумеется, такая практика совершенно не обязательна для изучения материала этой кни- ги. Она лишь позволит расширить ваши знания и навыки и, без сомнения, пойдет вам только на пользу, но выбор всегда оста- ется за вами. Для изучения Unix трудным оказывается еще один прин- цип. Несмотря на внедрение графических компонентов для удобства пользователей (например, графического интерфейса KDE), не следует забывать, что вся сила Unix по-прежнему ос- тается скрытой под спудом. Единственная возможность ис- пользовать Unix на полную мощность доступна только из ко- мандной строки. Некоторые операции просто невозможно вы- полнять из графического интерфейса. В то же время работа в Unix оказывается наиболее продуктивной из командной строки, где также можно получить необходимую справку. По- этому основное назначение этой книги — научить вас основ- ным приемам эффективной работы в Unix из командной стро- ки. Не бойтесь неизвестного, поскольку каждый шаг будет подробно пояснен до и после того, как он будет сделан. Многие не понимают истинной силы и эффективности Unix до тех пор, пока не научатся правильно пользоваться ею или многими сво- бодно доступными и сопутствующим ей инструментальными средствами. Основная цель данного урока — научить вас полу- чать доступ к командному процессору и выполнять команды. В конечном итоге вы должны уметь подключаться к системе Unix и чувствовать себя уютно в ее среде. Подготовка ко входу в систему Итак, ознакомившись вкратце с историей развития и ны- нешним состоянием Unix, начнем подготовку к регистрации в системе. Но прежде очень важно не забыть следующее: для входа в систему Unix необходимо зарегистрироваться с по- мощью специального мандата, который тесно связан с учет- ными записями в системе и предоставляется ее администра- тором. Так, регистрация в настольной операционной системе
24 Урок 1 Microsoft Windows XP Professional осуществляется с помо- щью учетной записи администратора и назначенного пароля, настроенного администратором данной системы для доступа к ней. В Unix логическая последовательность регистрации в системе, по сути, та же самая. Однако для выполнения этого процесса необходимо знать следующее. • В Unix имеются разные типы учетных записей: одни дают больше полномочий в зависимости от назначен- ных для них прав и привилегий, а другие — меньше. • В системах Unix чаще всего встречаются корневая учетная запись и учетные записи типичных пользователей. Корне- вая учетная запись является учетной записью пользовате- ля-администратора. Она дает наибольшие привилегии в системе и в то же время может нанести больше всего вре- да. Предоставление слишком больших привилегий тем пользователям, которым они на самом деле не нужны, чревато опасностями и поэтому нежелательно. • Попробуйте создать учетные записи для отдельных пользователей, чтобы отслеживать действия каждого из них с помощью таких мер безопасности, как контроль и регистрация в системе. Новые учетные записи должны предоставлять намного меньше привилегий, чем корне- вая учетная запись, а следовательно, они позволяют вы- полнять намного меньше операций в системе. (Если по- добная учетная запись присвоена вам для доступа к Unix на работе, подумайте о последствиях практического изу- чения Unix на работе без разрешения.) Кроме того, для управления одновременным доступом к учетным запи- сям многих пользователей можно приписать пользова- телей к группам. Группы обычно связаны с безопасно- стью системы и представляют собой категории пользова- телей, имеющих доступ к определенным данным или ка- тегорию привилегий, соответствующих конкретным полномочиям этих пользователей. • Unix — это многопользовательская платформа. Она да- ет многим пользователям возможность входить в сис- тему одновременно, настраивать свою рабочую среду и т.д. А поскольку Unix разрешает многим пользовате-
Итак, приступаем 25 лям одновременный доступ к системе, один из них мо- жет заниматься расчетами крупной электронной таб- лицы, а другой — иными видами расчетов. Так, на од- ном компьютере могут одновременно выполняться многие разновидности процессов, запущенных сотнями разных пользователей. Более подробно понятие про- цессов, а также их применение и управление ими рас- сматривается в уроке 11. • Unix чувствительна к регистру. Ввод команд в Unix может вызвать известные затруднения у тех, кто при- вык работать в Windows, где регистр не учитывается. Имена пользователей тесно связаны с учетными записями. Имя учетной записи обычно соответствует имени пользовате- ля, которое применяется для регистрации в системе, тогда как пароль — это вызов или реакция на попытку использовать конкретный мандат. Иными словами, пароль представляет со- бой информацию, которую вы должны ввести для получения доступа к системе. А меры безопасности позволяют идентифи- цировать вас как действительного пользователя системы. Если вы можете предоставить пароль, значит, вы получите возмож- ность подключиться к своей системе и работать в среде, настро- енной для вас администратором данной системы. Администра- тор системы Unix — это лицо, ответственное за настройку ва- шей учетной записи в системе и предоставление вам мандата для доступа к системе. Помните, что имена пользователей и пароли назначаются для учетных записей в системе, а ваш мандат — это имя пользователя и пароль для доступа к системе по приглашению. Итак, воспользуемся этими понятиями, что- бы начать процесс входа в систему. Теперь вам известно, как начать работу в Unix, но, прежде чем переходить к следующему разделу, по- смотрите на клавиатуру своего компьютера и убеди- тесь в том, что режим Caps Lock (Фиксация верхнего регистра) выключен, дабы избежать многих ошибок в процессе входа в систему! Не забывайте о том, что Дл Unix чувствительна к регистру. Эта типичная для мно- гих начинающих пользователей ошибка становится источником Многих неприятностей.
26 Урок 1 Процесс входа в систему А теперь приготовьтесь сделать первый шаг. Для этого вам понадобятся консоль Unix или удаленное соединение с систе- мой и приложение, эмулирующее терминал. Эмуляция терминала Удаленное соединение является одним из самых рас- пространенных способов подключения к системе Unix. Такое подключение используется потому, что системы Unix обычно находятся в специально назначенном мес- те для обеспечения их защиты и безопасности» Под- ключение к системам Unix осуществляется с помощью службы Telnet, обеспечивающей эмуляцию терминала. Более подробно об этом речь идет в уроке 18. Как упоминалось выше, после подключения к системе вам предлагается предъявить свой мандат, состоящий из имени пользователя и пароля. Как только вы предоставите эту ин- формацию, Unix перейдет к загрузке вашей пользователь- ской среды. Эта среда должна уже быть настроена для вас ад- министратором системы Unix. Он должен предоставить вам права и полномочия делать в системе то, что вам нужно. По- сле успешного входа в систему в командной строке появится приглашение на ввод команд. Но, прежде чем продолжить, выясним один очень важный вопрос. В систему Unix можно входить двумя способами: в текстовом режиме, рассматри- ваемом в следующем разделе, и в графическом режиме, опи- сываемом после текстового режима. Но даже при регистра- ции в графическом режиме приглашение командного процес- сора все равно появляется в графическом интерфейсе. При- чина этого поясняется далее в этой главе, а пока что следует запомнить, что главное — получить доступ к командной строке, даже если для этого придется перемещаться по гра- фическому интерфейсу в процессе входа в систему.
Итак, приступаем 27 Регистрация в текстовом режиме При регистрации в текстовом режиме пользователь сразу же достигает своей цели — приглашения командной строки или командного процессора. Изучение Unix несколько затрудняет тот факт, что экраны регистрации в текстовом режиме отличаются в разных дист- рибутивах Unix, что обычно вызывает досаду у большинства начинающих пользователей. Как правило, приглашения для регистрации в Unix имеют следующий вид: login: password: При появлении приглашения login: введите имя пользо- вателя и нажмите клавишу <Return>. Затем появится при- глашение password:. Успешно введя свои имя пользователя и пароль, вы достигнете приглашения командного процессо- ра. Это наиболее типичный пример появления приглашений для ввода имени пользователя и пароля, а любые отклонения от него не настолько значительны, чтобы в них нельзя было разобраться. Для того чтобы избежать недоразумений или прекраще- ния регистрации при входе в систему, важно помнить о сле- дующем. • Предъявляйте мандат с учетом регистра и без ошибок. • Принимайте во внимание параметры настройки вашей учетной записи. Она может быть настроена таким обра- зом, что если вы попытаетесь ввести слишком много не- верных паролей, то в дальнейших попытках вам будет отказано. • Предъявляя мандат, не пользуйтесь клавишей <Backspace>, поскольку в некоторых дистрибутивах Unix возврат на одну позицию не действует. Вводите данные аккуратно, чтобы сэкономить время. Завершив процесс входа в систему, вы можете сделать еще один шаг и перейти к следующему уроку. Но прежде озна- комьтесь с KDE и процессом регистрации с помощью графи- ческого интерфейса.
28 Урок 1 - Охраняйте свой мандат ? . Т .№ ч jjMT- Предлагая; ввести пароль, Unix блокирует его вывод на экран монитора, скрывая от любопытных глаз. Это делается для безопасности системы и для того, чтобы ваш мандат не попал в руки посторонних, которые мо- гут войти в систему от вашего; имени и нанести ей ущерб. Увидеть вводимый пароль на экране нельзя, но можно наблюдать за тем, что вы набираете на кла- виатуре. Именно это чаще всего и делается. Поэтому надежно охраняйте свой мандат. Если вы считаете, что ваш мандат скомпрометирован, обратитесь к сис- темному администратору или в справочную службу, чтобы они немедленно изменили его, если у вас нет полномочий сделать это самостоятельно. Как и все остальное в этой жизни, вопрос безопасности требу- ет тщательного осмысления и принятия верного ре- шения. Но, потратив однажды на это время; вы уже не будете возвращаться к данному вопросу, ч Л Регистрация в графическом режиме Ранее в этой главе была рассмотрена регистрация в систе- ме Unix в текстовом режиме. А с помощью среды настольной системы KDE (К Desktop Environment) в системе можно заре- гистрироваться и в графическом режиме. И в этом случае при запуске системы Unix происходит тот же самый процесс на- чальной загрузки и выдачи приглашения для предъявления мандата, но вместо текстового экрана регистрации запускает- ся среда X Window System. Из этой среды и загружается ко- мандный процессор или графическая среда, в которой вам предстоит работать. Чаще всего такой графической средой служит KDE, хотя не менее распространена и среда GNOME (обе среды более подробно рассматриваются далее в этой кни- ге). Для регистрации в системе Unix в графическом режиме вам предлагается тот же самый запрос, но вместо командной строки появляется диалоговое окно. Предъявив правильный мандат, вы сможете войти в систему и продолжить свою рабо- ту или же изучение Unix.
Итак, приступаем 29 Итак, рассмотрим регистрацию в графическом режиме бо- лее подробно. Для этого необязательно иметь доступ к терми- налу Unix — достаточно и домашнего ПК с установленной системой Linux. Загрузите систему, чтобы появилось диало- говое окно с той же элементарной информацией для ввода мандата (имени пользователя и пароля), хотя в этом окне мо- гут быть и другие варианты выбора, включая возможность изменить тип сеанса работы в системе. В любом случае, по- мимо некоторых команд, которые отображаются графически и которыми можно манипулировать с помощью мыши, при регистрации как в текстовом, так и в графическом режиме запрашивается одна и та же элементарная информация: имя пользователя и пароль. Г2Л Клавиатурные эквиваленты команд Для продуктивной работы в Unix вам необходимо ос- воить ряд новых клавиатурных эквивалентов команд, поскольку вам все чаще и чаще придется пользовать- ся командной строкой. Зная лишь несколько клавиа- турных эквивалентов команд, вы можете сэкономить время, перемещаясь в командном процессоре. В ча- ,ЭДстности, клавиша табуляции служит для циклического перемещения между полями .графического: интер- фейса. После ввода имени пользователя, например, • достаточно нажать клавишу табуляции, чтобы перей- ти к следующему полю. Таким образом, ваши руки ос- таются на клавиатуре и вам не нужно пользоваться мышью. Это лишь один из примеров рационального перемещения в Unix с помощью клавиатуры. Процесс выхода из системы По завершении сеанса работы в Unix необходимо выйти из системы. Это довольно простой процесс. Но перед тем, как приступать к выходу из системы, следует принять во внима- ние ряд важных моментов независимо от выбранного режима (текстового или графического). Прежде всего, не следует за- бывать о том, что Unix — это многопользовательская систе- ма, одновременно обслуживающая сотни клиентов, о кото-
30 Урок 1 рых также нужно помнить, выходя из нее. При входе в сис- тему вы представляетесь ей. Следовательно, Unix становится известно обо всех файлах, которые вы открывали. Если же при выходе из системы вы забудете закрыть программу, Unix сделает это автоматически, поскольку она отслеживает ваши действия. Это один из примеров того, насколько мощной яв- ляется Unix. Другой момент касается безопасности. Ведь постоянная регистрация в Unix связана с риском нарушения защиты этой системы. Поэтому по завершении сеанса работы в системе следует непременно выйти из нее. Рассмотрим на одном при- мере, что может произойти, если забыть выйти из системы. Допустим, что в начале дня вы вошли в систему и, проработав целый день, забыли выйти из нее. В таком случае кто-нибудь может воспользоваться вашим мандатом и внести в систему изменения, поскольку вы все еще зарегистрированы в ней. Напомним, что ваш мандат (имя пользователя и пароль) тес- но связан в системе с учетной записью, содержащей вашу личную информацию. Но теперь в системе произошли изме- нения без вашего ведома, и даже если вы скажете, что вы в этом не виноваты, это было сделано с помощью вашей учет- ной записи. Во избежание подобных проблем научитесь пра- вильно выходить из системы, ясно осознавая важность дан- ного процесса. Выход из системы Unix выполняется достаточно просто. Рассмотрим теперь, как это делается в текстовом и в графиче- ском режимах. Выход из системы в текстовом режиме Если вы работаете в режиме командного процессора,- для вы- хода из системы вам достаточно ввести следующую команду: >logout После выдачи команды выхода из системы Unix немед- ленно возвращается к приглашению для входа в систему. Итак, вы научились входить в систему Unix и выходить из нее. Если это было впервые, то поздравьте себя со столь зна- чительным достижением. Если же вы сделали это несколько раз, продолжайте упражняться, поскольку совершенство
Итак, приступаем 31 достигается практикой, а добиться желаемого результата в данном случае не так уж и трудно. Помните, что для работы в системе Unix нужно сначала войти в нее. Несмотря на всю простоту данной задачи, не забывайте также о своей рабочей среде, безопасности и целостности данных. Что же касается выхода из системы, то следует также упомянуть об отличиях в разных дистрибутивах Unix. Так, в одних дистрибутивах команда logout может не восприниматься, а в других вместо нее предполагается другая команда, например exit. Типич- ное сообщение об ошибке Not login shell (Не командный процессор входа в систему) может указывать на необходи- мость выдачи команды exit. Выход из системы в графическом режиме Для выхода из системы Unix в графическом режиме вам придется предпринять больше шагов, чем в текстовом режи- ме. Если в текстовом режиме для этого достаточно выдать од- ну команду, то в графическом режиме для выхода из системы приходится манипулировать самой графической средой. Пиктограмма, обозначающая основное меню, из которого на- чинается процесс выхода из системы, может меняться в зави- симости от конкретного дистрибутива Unix, но, как правило, первая пиктограмма (обозначенная меткой К или SuSE) вы- полняет команду Logout... из меню. После это вам предлага- ется завершить сеанс работы в системе, выключить компью- тер, перезапустить компьютер (“теплая” перезагрузка) или просто отменить выход из системы и вернуться в текущий се- анс работы в ней. Система без мыши < Помните, что не все системы оснащены мышью, но ^ обязательно требуют наличия клавиатуры, что опре- деляется во время запуска базовой системой ввода- вывода (BIOS). Для работы в Unix всегда нужна кла- виатура, поэтому практиковаться со входом и выхо- ж дом из системы лучше всего без мыши. Ведь очень часто мышь в системах Unix отсутствует.
32 Урок 1 Разновидности командных процессоров Итак, вы уже умеете входить в систему Unix и выходить из нее. Если же вы еще не приобрели достаточных навыков, про- должайте практиковаться до тех пор, пока не научитесь делать это как следует. Ведь каждый последующий урок в этой книге сложнее предыдущего. Как упоминалось выше, истинная сила Unix — в текстовой среде этой системы, где можно полностью выполнить любую ее команду. Нужно лишь знать, как пользо- ваться этими командами. Кроме того, для работы в Unix необ- ходимо выбрать подходящий командный процессор. Опытные пользователи Windows знают, что, согласно первоначальному замыслу, Windows должна была работать поверх дисковой операционной системы (DOS). Поэтому полностью установлен- ная операционная система состояла из DOS и расположенной поверх нее графической среды Windows. Вместе с одной графи- ческой средой Windows существовало несколько версий DOS. Этот же принцип применяется в Unix, где также можно изменить командный процессор (приглашение, с которым вы работали при входе в систему и выходе из нее). А в качестве графической среды применяется KDE. Все командные про- цессоры работают по одному и тому же принципу. Рассмот- рим теперь их разновидности. Если оболочка не внушает доверия . Изучая Unix, не пугайтесь терминолбгйй;:; Командный процессор: (или оболочка) — это не бблр^чем пред- почтение; Большинство команд и функций остаются без изменения в разных командных процессорах. Ес- ли вы не являетесь профессиональным разработчи- ч? ком или опытным пользователем Unix, то, скорее все- го, будете пользоваться тем коман ным процессо- ром, к которому привыкли с самого начала освоения Unix. Но одна из самых замечательных особенностей Unix состоит в том, что ее командный процессор можно без труда изменить, если, конечно, знать, как это де- лается. Благодаря этому система, и без того доста- точно эффективная, становится еще более гибкой \ и удобной для использования. л "• .
Итак, приступаем 33 Итак, в Unix на выбор предоставляются самые разные ко- мандные процессоры. Основное отличие между ними связано, главным образом, с программированием. Как правило, про- граммирование требуется для автоматизации конкретного процесса или задачи. Поэтому следует иметь в виду, что при выборе командного процессора изменяется и метод програм- мирования. Для автоматизации отдельных задач создается сценарий командного процессора. Он представляет собой файл с вызовами команд для автоматизации конкретного процесса. Более подробно о написании сценариев командного процессора речь пойдет в уроке 14. 0ft Эффективность сценария командного процессора Сценарий в какой-то степени подобен командному файлу DOS. В этом смысле командные файлы DOS в сравнении со сценариями командного процессора Unix подобны пригоршне песка в пустыне. Если вы только начинаете осваивать Unix и пока еще не умеете сами устанавливать и настраивать эту систему, то, скорее всего, пользуетесь тем командным процессором, кото- рый вам доступен. Ниже будут рассмотрены только наиболее часто применяющиеся разновидности командных процессо- ров и их преимущества. Однако выбор командного процессо- ра — это дело личных предпочтений. • sh — Bourne shell (командный процессор Боурна). Это самый распространенный командный процессор, дос- тупный практически во всех современных дистрибути- вах Unix. Он имеет простой синтаксис для создания сценариев, и поэтому чаще всего используется и осваи- вается пользователями Unix. • csh — C-shell. Этот командный процессор обязан своим названием языку программирования Си. Программи- рование на таком языке подобно написанию сценария командного процессора, поскольку в нем применяются те же самые принципы автоматизации задач, хотя и на более высоком уровне. Среда создания сценариев в ко- мандном процессоре csh похожа на язык Си и доста-
34 Урок 1 точно удобна для написания длинных сценариев, вы- полняемых на большинстве Unix-машин. Командный процессор csh знаком большинству разработчиков. • tcsh — расширенный C-shell. Если вы знакомы с ко- мандным процессором csh, то вам будет нетрудно осво- ить и tcsh. В этот командный процессор введен ряд расширений в том числе дополнение имени файла расширением и доступная предыстория выполнения команд. • bash— Bourne-again shell (возрожденный командный процессор Боурна). Этот командный процессор исполь- зуется по умолчанию в большинстве систем Linux. Менять командный процессор вы научитесь в уроке 15. Если вы не можете выбрать привычный вам командный про- цессор и начать работу над материалом этой книги именно с него, то к концу книги вы уже будете уметь это делать. А по- ка что перейдем от процессов входа и выхода из системы к выдаче команд по приглашению командного процессора, что- бы продуктивно работать в Unix. Работа с командным процессором Вам как пользователю Unix чаще всего придется работать в среде командного процессора. При этом у вас может воз- никнуть целый ряд вопросов и проблем. Самая распростра- ненная из них уже упоминалась выше: во время работы в Unix следует непременно выключить на клавиатуре режим Caps Lock, поскольку команды Unix чувствительны к регист- ру и будут действовать неверно, если ввести их не в том реги- стре. Неправильно используя регистр, иногда можно даже ввести неверную команду. Другая распространенная пробле- ма связана с отсутствием места нахождения команды в пере- менной среды PATH (см. урок 16).
Итак, приступаем 35 Следуйте правильным путем Для того чтобы лучше понять назначение переменной среды path в Unix, ее удобно сравнить с оператором path в Windows. Если ввести команду path в окне Windows DOS или в командной строке, то на экране появится аналогичная информация. Так, для запуска калькулятора в Windows достаточно ввести в команд- ' ' ной строке команду calc. Калькулятор запускается потому, что файл calc.exe находится в одном из ка- " / талогов, перечисленных в операторе path. То же са- мое имеет место и в Unix; Еще одно затруднение при работе в командном процессоре связано с “зависшим” процессом, который на самом деле мо- жет оказаться не более чем запущенной, оставшейся выпол- няться и никак, по-видимому, не реагирующей программой. Пример такой ситуации приведен на рис. 1.1. Рис. 1.1. Терминал не реагирует, поскольку в приоритет- ном режиме выполняется программа
36 Урок 1 • В данном примере на выполнение запущен типичный для Unix текстовый редактор vi. После его запуска создается впечатление, будто сеанс работы в Unix при- останавливается, а неопытному пользователю кажется, что система вообще “зависла”. В подобных случаях од- ни пользователи, которые не знают, как выйти из дан- ного положения, просто выключают систему и переза- гружаются, а-другие пробуют ввести типичные коман- ды Windows, которые иногда действуют. • Для выхода из текстового редактора vi и возврата к обыч- ному приглашению командного процессора имеется ряд комбинаций клавиш. В данном примере используется комбинация клавиш <Ctrl+z>, прерывающая выполне- ние программы и выполняющая возврат к приглашению командного процессора. В подобных ситуациях можно воспользоваться следующими комбинациями клавиш. • <Ctrl+d>. Указывает системе, что передача команде входных данных завершена. Полезна в том случае, если вы случайно запустили программу и не можете выйти из нее. • <Ctrl+c>. Это эквивалент команды прерывания в Unix. При этом выполнение текущей программы прекращается и происходит возврат к приглашению командного процессора. • <Ctrl+z>. Эта команда приостанавливает выполнение текущего процесса и осуществляет возврат к пригла- шению командного процессора. Именно эта комбина- ция клавиш и была использована для выхода из тек- стового редактора vi в приведенном выше примере. Итак, напомним, что вам уже известно о командных процес- сорах. Командные процессоры играют важную роль. Зная любой из них, можно выполнять одни и те же команды в разных ко- мандных процессорах, хотя и с незначительными отличиями в их функционировании. В этой книге предполагается, что вы вряд ли будете менять командный процессор, и поэтому практи- чески весь материал книги применим к любой системе Unix. Но по мере приобретения опыта работы в Unix возможность менять командный процессор станет для вас более актуальной.
Итак, приступаем 37 Резюме Теперь вы должны чувствовать себя уютно в среде Unix, поскольку умеете входить в систему и выходить из нее и ясно понимаете все, что связано с этими процессами. Кроме того, вы должны знать, как эти процессы выполняются в тексто- вом и графическом режимах. В уроке 1 вы сделали лишь первый шаг в Unix, но оста- навливаться на достигнутом не следует, ведь это только нача- ло. Прежде чем переходить к следующему уроку, убедитесь в том, что вы действительно умеете входить в систему и вы- ходить из нее, а также получать доступ к приглашению ко- мандного процессора для выдачи элементарных команд. Здесь вы научились входить в систему, открывать программу и выходить из системы. Вооружившись этими знаниями, те- перь вы можете перейти к уроку 2, в котором будет рассмот- рена встроенная в Unix справочная система — место, куда на- чинающие пользователи должны обратиться, перед тем как отступить или признать свое поражение. Справочная система Unix действительно очень полезна. Но, прежде чем перехо- дить к уроку 2, выучите как следует урок 1, поскольку при- обретенные в этом уроке знания понадобятся вам при изуче- нии остального материала книги.

Урок 2 Получение справки Этот урок посвящен получению справки. Ведь очень час- то, сидя за консолью Unix или перед экраном компьютерного монитора, чувствуешь себя беспомощным. В этом уроке вы научитесь справляться с подобными ситуациями. Сложность современных высокоскоростных компьютер- ных сетей постоянно растет по мере ввода в них дополнитель- ных свойств. В свою очередь, по мере развития, совершенст- вования и усложнения сетей и систем возникает потребность в дополнительной справке в самых разных областях знаний, и особенно это касается Unix, пользующейся славой загадоч- ной системы. Некоторых такое положение вещей вполне уст- раивает. Ведь далеко не все пользователи Unix знают, что в эту систему встроена справочная система, которая фактиче- ски помогает изучать Unix, если уметь правильно пользо- ваться ею. Вы уже умеете входить в систему и подключаться к Unix, а здесь вы научитесь выполнять одну из самых рас- пространенных операций по мере изучения материала этой книги: получать справку, когда в этом есть необходимость. В этом уроке рассматривается не только применение встроен- ной справочной системы, но и другие способы получения своевременной справки. Вопреки бытующему мнению, освоить Unix вполне воз- можно, если предпринять для этого правильные шаги. Спра- вочная система и другие формы помощи всегда в вашем рас- поряжении, если вы что-нибудь забудете, захотите изучить новые команды или провести дальнейшее исследование сис- темы. В этом уроке рассматривается целый ряд способов по- иска справки в Unix, включая использование оперативных страниц руководства и другие формы помощи в Unix, а также оперативные и прочие ресурсы, которые могут потребоваться для изучения Unix.
40 Урок 2 Справка по возникшей проблеме В этом уроке речь идет.о поиске и получении справки для нормальной работы в Unix. Здесь не рассматри- ваются пути решен я технических проблем, что вхо- дит в зада у со рудников справочной службы. Дан- ный урок посвящен вопросам получе ия помощи при изучении Unix, а не устранения возникших неполадок в систе е, то выходи за рамки данной книги. Поиск справки в Unix Теперь уже никого не удивляет, что в такие программные продукты, как Microsoft Windows, встроены справочные сис- темы. Возможно, вы даже пользовались ими. Подробные справочные системы встроены в большинство компьютерных операционных систем. И в этом отношении Unix не является исключением, поскольку она существовала задолго до появ- ления многих других операционных систем. При создании Unix во внимание принимались не удобства пользователей, а эффективность, функциональность, гиб- кость и управляемость. Unix — это система, управляемая, в основном, из командной строки. В ней, как правило, нет возможности установить на объект указатель мыши и щелк- нуть. Найти в Unix справочную систему непросто, если не знать, где и как ее искать. Но если уметь пользоваться спра- вочной системой Unix, то достаточно перейти к приглашению командного процессора и ввести нужную команду для досту- па к этой системе. Мышь для этого не нужна, если, конечно, речь не идет о среде X Window System. Если вы знаете, как получить доступ к встроенной в Unix справочной системе, она поможет вам выполнить практиче- ски любую команду, известную в данной системе. Следует, однако, иметь в виду, что в каждой версии Unix имеется свой вариант или форма справки, причем эти формы могут быть неодинаковыми. Так, команды для получения справки в SuSE Linux и Red Hat Linux не совпадают. Но это совсем не означает, что они не подобны или что они не действуют сход-
Получение справки 41 ным образом. Команды получения справки отличаются так- же в системах Sun Solaris и FreeBSD, но в целом их функции аналогичны. Несмотря на отличия в названиях большинство команд имеет одинаковые форматы. Если команда не дейст- вует, значит, при ее вводе в конкретной системе была допу- щена синтаксическая ошибка. Это лишний раз свидетельст- вует в пользу применения оперативных страниц руково- дства по системе. В подобных случаях на таких страницах можно получить всю необходимую помощь. Не забывайте, что истинная сила Unix — в ее командах, поэтому очень полезно иметь возможность постоянно прове- рять, по крайней мере, правильность выполнения или син- таксис конкретной команды. И в этом случае на помощь при- ходят оперативные страницы руководства. Использование оперативных страниц руководства Оперативные страницы руководства — это не просто сжатые текстовые файлы, расположенные в каталоге /usr/share/doc. Они содержат справочную информацию по командам Unix. Ино- гда на таких страницах указываются даже известные программ- ные ошибки, но самое главное — эти страницы оказывают боль- шую помощь, если уметь ими пользоваться. По мере усложнения программ постепенно начал склады- ваться и формат информационной справки для оперативных страниц руководства. Эти страницы имеют иерархическую структуру, содержат гиперссылки и средства перемещения с помощью мыши. Поначалу формат информационной справ- ки, часто используемой для помощи в текстовом редакторе Emacs, подавляет, однако пользоваться этим форматом не- сложно, если уяснить его особенности. Как будет показано в последующих разделах этого урока, в Internet имеется немало дополнительных ресурсов по Unix с оперативными страницами руководства. Такие страницы можно, в частности, найти в Google и Linux Documentation Project.
42 Урок 2 S—. —, , ...... .... .... .... .. . . ... . Как узнать больше Чтобы узнать больше о формате информационной справки, введите команду info info по приглаше- нию командного процессора. Эта команда предос- тавляет доступ к учебному пособию. Как упоминалось выше, для изучения Unix требуется справка определенной формы. Ведь не все, хотя и многие во- просы можно разрешить с помощью оперативных страниц руководства. Имеются разные формы справки. Допустим, что требуется справка по команде Is. С помощью этой команды выводится список имен файлов, находящихся в текущем ка- талоге. Синтаксис команды 1s можно найти на оперативных страницах руководства, но из этих страниц можно и не по- нять, как пользоваться данной командой в конкретной си- туации. Иными словами, возникшая проблема может ока- заться более сложной, чем те, которые можно разрешить с помощью оперативных страниц руководства. Именно здесь на помощь приходят опыт, практика й постоянное изучение системы и ее документации. Ведь оперативно доступные страницы служат лишь для справки. Они ничем вам не помо- гут, если вы не поймете, о чем они говорят, и не предпримете соответствующих действий. Так для чего же пользоваться оперативными страницами руководства вместо Internet и других ресурсов? Для ответа на этот вопрос необходимо вспомнить назначение подобных стра- ниц: они призваны оказывать вам помощь, а не выполнять вместо вас конкретные действия. На этих страницах находится вся информация о синтаксисе команд. Другое дело если вам нужны советы по применению команд. Но зачем искать ответ вне системы, когда его можно найти в самой системе? Следова- тельно, прежде чем обращаться к другим ресурсам, поищите ответ на оперативных страницах руководства. Кроме того, в Internet отсутствует вполне определенный ис- точник информации о Unix. Соответствующие ресурсы разбро- саны по всей Сети. Они могут оказаться полезными, если произ- водитель конкретного программного продукта известен (SuSE,
Получение справки 43 AIX, SCO АСЕ и т.д.) и предоставляет документацию к нему. Но даже если вы умеете искать информацию в Internet, в лучшем случае эта информация окажется не вполне достоверной. Для начинающих изучать Unix самый надежный источник— это оперативные страницы руководства, поскольку многие пользо- ватели Unix всегда опирались на них как на внутреннее средство оказания помощи для работы в системе. Эти страницы имеются везде, где есть Unix, если только не нарушены файлы или ссыл- ки на них. Итак, к преимуществам оперативных страниц руко- водства относятся следующие. • Это наиболее оперативно и просто доступный, исчер- пывающий источник информации о командах системы и их применении. • Они предоставляют сведения о назначении и примене- нии программ. • На них можно найти информацию о других утилитах, которые вас интересуют. Рекомендации на этих стра- ницах также могут оказаться полезными. • Разработчики и программисты могут найти на этих страницах полезную информацию по программирова- нию и написанию сценариев. Для отображения оперативной страницы руководства вос- пользуйтесь командой man. Если вы просто введете команду man и затем интересующую вас команду, то получите требуе- мый результат. >man 1s NAME (ИМЯ) Is list directory contents (выводит списком содержимое каталога) SYNOPSIS (РЕЗЮМЕ) Is [OPTION] . [FILE] DESCRIPTION (ОПИСАНИЕ) List information about the FILES (the current directory by default) (Выводит списком информацию о ФАЙЛАХ (текущего каталога по умолчанию)) ( .) (output removed) (вывод удален) В приведенном выше примере на оперативной странице руководства представлен весь синтаксис команды 1s. Эту ин-
44 Урок 2 формацию можно использовать для ввода дополнительных параметров данной команды. Как видите, оперативные страницы руководства не вводят команду вместо вас и не помогают решить конкретную зада- чу — они просто предоставляют всю необходимую информа- цию. На таких страницах можно найти дополнительную ин- формацию о команде, чтобы подробнее изучить ее многочис- ленные параметры, или так называемые ключи. Оперативные страницы руководства могут оказаться неве- роятно длинными. Но для упрощения работы со справочной системой имеются специальные команды apropos и what is. Полезные командь < ' .. . , Л . ' . . : ели вь види е на экране а,.., значит, на оператив- ной странице руководства имеется дополнительный текст для чтения. Для того чтобы увидеть этот текст, ажмите клавишу пробела. Оперативные страницы руковбде ва не прокручива- ются автоматически, поэтому вам придется делать это са остоятельно. Для пре ращения данного дей- ствия наж ите клавишу <q>, ч обы покинуть с раницу и вернуться к командной строке Дополнительная помощь Итак, ознакомив вас со встроенной в Unix справочной сис- темой и оперативными страницами руководства, доступными по команде man, рассмотрим другие способы применения данной команды, а также команд apropos и what is для по- иска дополнительной помощи. Как упоминалось выше, команда man нередко дает резуль- таты большого объема. Это не* совсем удобно, если на опера- тивной странице руководства требуется посмотреть лишь частичную информацию. Если же нужна только такая ин- формация, например краткое описание команды, для этой цели служат следующие команды: whatis man -f
Получение справки 45 apropos man -k Указав интересующую вас команду после любой из пере- численных выше команд (например, man -k 1s), вы получи- те более краткую информацию об искомой команде. Рассмот- рим приведенные выше команды более подробно. Команды whatis и man -f Команда man с ключом -f действует аналогично команде whatis, а та же команда с ключом -к — аналогично команде apropos. Истинные возможности большинства команд Unix раскрываются только с помощью их ключей, поэтому уделите особое внимание использованию этих ключей как в этом, так и в последующих уроках данной книги. (/) Ключи и флажки ? Выше было сказано, что для поиска справки доста- точно воспользоваться командой man с соответст- вующими ключами. А что собой представляют ключи? Ключ (называемый также флажком) — это параметр команды. Если команда выполняет основную функ- цию, то ключ (если он введен) видоизменяет команду. Так, в команде man используются ключи -к и -f, рас- сматриваемые в этом и следующем разделах. Не забывайте, однако, о том, что Unix чувствительна к регистру. В частности, ключи, введенные пропис- ными и строчными буквами, имеют разные значения, поэтому пользуйтесь ими аккуратно. Итак, введя искомую команду после man -к или whatis, вы получите краткое описание данной команды. Например, для вывода на экран краткого описания команды date введи- те приведенную ниже команду, а для возврата к командной строке нажмите клавишу <q>: >man -f date date (1) print or set the system date and time (вывести или установить системную дату и время) END
46 Урок 2 Для получения краткой справки о командах в вашей систе- ме должна присутствовать база данных what is. Если она уда- лена или вообще не была создана, то в ответ на команду what is вы можете получить сообщение об ошибке. В таком случае об- ратитесь за помощью к администратору системы Unix, по- скольку для создания указанной базы данных (если она отсут- ствует) требуется привилегированный доступ к системе. Команды apropos и man -к Команды apropos и man -к действуют аналогично коман- дам what is и man -к, но, в отличие от последних, они помо- гают искать результат по возможному совпадению. Иными словами, если вы не знаете, по какой именно команде вам требуется справка, но имеете некоторое представление о ее функции, укажите предполагаемую функцию после команды apropos или man -кив ответ получите результат хотя бы частичного совпадения с данной функцией. Попробуйте сравнить следующий результат выполнения команды apropos time с тем, что дает команда what is time: >apropos time clock (3) clock (n) convdate date (1) difftime (3) ftime (3) ftpshut (8) kbdrate (8) Idconfig (8) metamail nanosleep (2) nwfstime (1) parsedate (3) Определить время работы процессора Получить время и манипулировать им Преобразовать строковые и числовые данные даты и времени Вывести или установить системную дату и время Рассчитать разницу во времени Вернуть дату и время Закрыть ftp-серверы в указанное время Сбросить скорость повтора нажатий клавиш и время задержки Определить связи, динамически устанавливаемые во время выполнения Создать инфраструктуру для обработки мультимедийной почты типа mailcap Приостановить выполнение на указанное время Вывести/Установить дату и время сервера NetWare Преобразовать строковые данные даты и времени в числовые В приведенном выше примере получено довольно много результатов поиска по критерию time. А строка указыва- ет на наличие еще большего числа результатов, не поместив-
Получение справки 47 шихся на экране. Если вы не совсем точно знаете, что ищете и ваш запрос оказывается слишком неопределенным, резуль- таты поиска по такому запросу получатся весьма объемными. Для того чтобы найти среди этих результатов нужную ин- формацию, требуется время. Поэтому обращайтесь к коман- дам apropos и man -к, как к последнему средству для поиска справки. Другая помощь Помимо указанных выше средств оказания помощи, име- ется также встроенная справочная система для отдельных команд. А зачем она нужна, если достаточно и оперативных страниц руководства? Дело в том, что пользоваться такими страницами сложнее, чем встроенной справочной системой, поскольку для их загрузки требуется больше времени, а зна- чит, к ним нельзя быстро обратиться. Необходимую справоч- ную информацию по многим командам Unix дает аргумент командной строки --help, иногда даже в более краткой фор- ме: -h или -?. Напомним, что дистрибутивы Unix несколько отличаются друг от друга, и подобные сокращения допусти- мы в одних версиях и недопустимы в других. Кроме того, данный способ получения справки может не действовать, ес- ли справочная система не работает или недоступна. Для просмотра встроенной справки по команде date вве- дите следующее: >date --help Usage (Использование): date [OPTION]... [+FORMAT] or (или): date [OPTION] [MMDDhhmm[[CC]YY][.ss]] Display the current time in the given FORMAT, or set the system date. (Вывести текущее время в указанном ФОРМАТЕ или установить системную дату) -d, —date=STRING display time described by STRING, not 'now' (вывести время, указанное в СТРОКЕ, кроме строки 'now' (текущее время)) -f, --file=DATEFILE like —date once for each line of DATEFILE (аналогично -date, но для каждой строки из файла DATEFILE) -г, —reference=FILE display the last modification time
48 Урок 2 of FILE (вывести время последнего изменения ФАЙЛА) -R, —rfc-822 output RFC-822 compliant date string (вывести дату в строке по стандарту RFC-822) -s, --set=STRING set time described by STRING (установить время, указанное в СТРОКЕ) -u, —utc, —universal print or set Coordinated Universal --help Time (вывести или установить всемирное координированное время (по Гринвичу)) display this help and exit --version (вывести эту справку и выйти) output version information and exit (вывести сведения о версии и выйти) Такую информацию проще читать и использовать, хотя она и не столь подробна, как на оперативных страницах ру- ководства. Получение справки в графической среде KDE SuSE— один из немногих производителей программного обеспечения, по-прежнему предоставляющих руководства в напечатанном виде и старающихся оказать всяческую помощь пользователям своих программных продуктов после их уста- новки. Так, вместе с коробкой SuSE Linux Professional вы по- лучаете две толстые книги: Руководство администратора (Administration Guide) и Руководство пользователя (User Guide). Электронные версии обоих руководств доступны также в оперативном режиме. Эти руководства составлены достаточ- но просто и удобно для чтения, т.е. так, чтобы пользователь мог быстро освоить программный продукт. Они также помога- ют изучать Linux, а следовательно, и Unix. Справочный центр SuSE Help Center, рассматриваемый в следующем разделе, по существу, представляет собой ко- пию той же самой документации, встроенную в систему и доступную с помощью пиктограммы на рабочем столе.
Получение справки 49 Поиск в Help Center Откройте Help Center, введя команду susehelp в команд- ной строке, либо щелкните на пиктограмме спасательного жилета в среде KDE или GNOME. В обоих случаях справоч- ный центр открывается для внимательного изучения. Сравните организацию справочной информации в Help Center с оперативными страницами руководства. Как видите, оба варианта справки (текстовый и графический) оказывают посильную помощь в изучении Unix и работе в этой системе. Дополнительная документация Если Unix используется в организации, то за саму систему и распределение полномочий среди ее пользователей отвечает системный администратор. Этот сотрудник организации должен подготовить к использованию специальную докумен- тацию по вверенной ему системе Unix, включая такие ее формы, как журналы восстановления в аварийной ситуации, планы, журналы безопасности и журналы регистрации. Еще один удобный источник информации обычно предос- тавляется многими системными администраторами в форме справочника для начинающих пользователей сети. Спраши- вайте такие справочники у администратора своей системы Unix. Эти справочники можно использовать для изучения Unix и работы в этой системе. Работая с Unix в домашних условиях, пользуйтесь этой книгой и рядом удобных Web-ссылок для получения допол- нительной информации, если таковая потребуется. Другие формы документации можно также обнаружить в локальной корпоративной сети или в Internet, где оперативно доступную информацию можно отыскать довольно быстро. Примеры источников такой информации приведены в сле- дующем разделе.
50 Урок 2 Составьте собственную документацию Д Документация имеет первостепенное значение, по- скольку вы можете узнать из нее о том, как системы построены и соединены между собой, какие операци- онные системы в них применяются игтщ^ВбзможнрЛ у вас нет опыта или квалификации в данной области, по- этому зафиксируйте полученную информацию в удоб- номи обновляйте её по мере'йадб|й6сти/||; Оперативно доступные ресурсы по Unix и Linux Источники информации по Unix можно быстро найти с по- мощью поискового механизма. Для этого воспользуйтесь наи- более предпочитаемым вами Web-браузером и произведите по- иск по критерию “unix help” или “unix commands” (т.е. справка или команды Unix). Впрочем, поиск может быть и более кон- кретным. Но в любом случае для анализа результатов потребу- ется время. Ниже приведены наиболее полезные (на момент выхода этой книги из печати) Web-сайты по Unix и Linux. • http:/ / www. unix. org 11 ink_1 i s t. html — внушитель- ный список ссылок для поиска дополнительной информа- ции по мере надобности. • http://www.suse.com/— начальная страница SuSE Linux на английском языке. Здесь можно найти послед- ние новости, техническую и информационную поддерж- ку, а также загрузить программное обеспечение. • http://www.tldp.org/— начальная страница Linux Documentation Project (Проект документации по Linux). Это отличное место для поиска ответов на об- щие вопросы по Linux, а также для ознакомления со многими приложениями, входящими в дистрибутив SuSE Linux. • http: / /glue. linuxgazette. com/ — начальная стра- ница GLUE (Groups of Linux Users Everywhere — груп- пы пользователей Linux по всему миру). Воспользуй-
Получение справки 51 тесь этим сайтом для поиска ближайшей к вам группы пользователей Linux (LUG). • http://linuxgazette.net/— электронное издание Linux Gazette, цель которого — “сделать Linux чуть бо- лее интересной системой”. Это издание ориентировано на начинающих пользователей Linux. Свои вопросы от- сылайте Отвечающему (The Answer Guy). • http: / /www. google. com/1 inux — ссылка, по которой вы можете перейти на страницу поиска информации по Linux в Google. • http: / /www. х. org — начальная страница X.org, цен- тра разработок для графической среды X Window System. • http: / /www. kde. org — начальная страница сайта, по- священного графической среде К Desktop Environment. На этом удобно организованном сайте можно найти ссылки буквально на все, что связано с KDE. • http: / / dot. kde. org — сайт новостей о KDE со ссыл- ками на статьи об этой графической среде и ее приме- нении. Здесь можно также найти ссылки на сообщения для печати и прочие сведения о KDE. Дополнительные ресурсы и полезные ссылки по Unix при- ведены в приложении к этой книге. Резюме Существуют самые разные источники справочной инфор- мации по Unix. В зависимости от своих потребностей вы мо- жете искать такую информацию разными способами. Ниже приведены некоторые уже известные вам источники. • Оперативные страницы руководства по Unix. Для вы- вода на экран полной информации о конкретной ко- манде имеется команда man. А для получения краткого описания и поиска команд определенного типа служат команды man -k, man - f и what i s.
52 Урок 2 • Встроенная справочная система. Многие команды и утилиты имеют встроенную справку, отображаемую, как правило, с помощью аргумента командной строки --help или -h. • Документация. Каждая установленная копия Unix не- сколько отличается от других, отражая личные пред- почтения системного администратора. Местная доку- ментация помогает выяснить, в чем состоят отклоне- ния данной установленной копии Unix от общеприня- той нормы. • Оперативно доступные ресурсы. Сайт Linux Documenta- tion Project служит отличной отправной точкой для блуждания в море оперативно доступной информации по Linux. Несмотря на то что эта информация касается исключительно Linux, она пригодна и для других раз- новидностей Unix. Для поиска ответов на непростые вопросы полезно также обратиться в группу новостей comp.unix.*. • Справочная система графической среды KDE. В KDE встроена отличная справочная система для большинст- ва приложений этой графической среды. Для доступа к этой системе достаточно выбрать команду Contents (Содержание) из меню Help (Справка), которое имеется в каждом приложении.
УрокЗ Графическое сопряжение с Unix Этот урок посвящен основам X Window System — графи- ческой среды настольной системы, предназначенной для то- го, чтобы упростить работу в Unix. Краткий обзор X Window System Уметь входить в систему Unix и получать необходимую справку по ней — это уже неплохо. Теперь вы знаете, как полу- чить доступ к Unix, но что же дальше? Если вы сидите за консо- лью или перед экраном компьютерного монитора, перед вами — мигающий курсор, ожидающий ввода какой-нибудь информа- ции. С другой стороны, вы можете работать в среде графического пользовательского интерфейса. Эта среда уже упоминалась вскользь в предыдущих уроках, но теперь пора более подробно рассмотреть принцип ее действия на примере X Window System. 4тр скрь1вается внутри графической среды г Сравнивая X Window System с командным процессором, необходимо принять во внимание следующее: X Window System фактически работает поверх интерфейса с ко- мандной строкой, который вы уже начали изучать, 2 и позволяет перемещаться в среде Unix с помощью мыши, вместо того чтобы делать это по приглашению командного процессора. Но в этом преимуществе кро- "ется и ограничение графического пользовательского интерфейса. Он не позволяет воспользоваться всеми возможностями Unix, которые доступны только из ко- мандной строки. ; Д
54 Урок 3 Версии X Window System X Window System доступна в оригинальном и открытом виде. Эта среда активно развивается благодаря интенсивным разработкам, и чем больше таких разработок, чем проще и удобнее работать в Unix. Но и текущая версия X Window System достаточно удобна для использования, особенно если у вас имеется опыт работы с Microsoft Windows. Графическая среда X Window System сокращенно обозна- ется символом X, а ее исправленные версии — порядковым номером после буквы X. Например, текущая версия X обо- значается как X11R6.8.2. Это одиннадцатая версия X. А что означает R6? Номером версии R и 6 (а обобщенно — Rn) обозначают минимальный уровень исправления, а XII вместе с R6 — текущее состояние развития этого приложения. Функционирование X Window System После развертывания X Window System функционирует как сервер, а точнее как серверное приложение. В отличие от клиентского приложения, которым вы, возможно, пользуе- тесь в данный момент, оно предоставляет ресурсы для других программ и системных функций. Единственная в своем роде *^>^;Среда X Window System — это приложение, предос- тавляющее целый ряд функций отображения интер- фейса. Другие среды, в том числе Microsoft Windows и Apple Macintosh, такие функции не предоставляют. Когда клиенту требуется отобразить что-нибудь средства- ми X Window System и изменить параметры настройки, он делает запрос этих изменений серверу.
Графическое сопряжение с Unix 55 Клиент и сервер на одном компьютере V В связи с тем что X Window System функционирует как сервер, наличие клиента и сервера на одном компью- тере никакого значения не имеет. Эти приложения могут работать как на одной машине, так и раздельно ? - в компьютерной сети. . Существует уже довольно много версий X, и поэтому охва- тить их полностью в одном уроке невозможно. Следователь- но, ваша задача — как можно точнее усвоить этот урок, а за- тем продолжить, если потребуется, изучение X Window System, обратившись за дополнительной информацией по ад- ресам www. google. сот/1 inux и www. х. org. Запуск X Window System Теперь можно приступать к запуску X. Делается это очень просто: нужно лишь ввести соответствующую команду в ответ на приглашение командного процессора. Но прежде войдите в систему, чтобы получить доступ к командной строке. Если вы уже находитесь в X Window System, закройте это приложение и откройте его еще раз, чтобы попрактиковаться в его запуске. Следует, однако, иметь в виду, что если вы делаете это на рабо- те и не вполне уверены в своих действиях, попросите сначала разрешение у системного администратора или другого лица, занимающегося администрированием вашей системы. Если после начальной загрузки системы осуществляется переход непосредственно в X, значит, система настроена на автоматический запуск X. В противном случае вы можете при желании настроить ее на такой запуск X. Для запуска X Window System вручную после входа в сис- тему введите следующую команду: >startx Загружается X двумя способами: с помощью сценария startx (называемого также xll в некоторых дистрибутивах) и программы xinit. При использовании сценария startx осуществляется автоматический вызов программы xinit, а следовательно, это более предпочтительный способ запуска X.
56 Урок 3 (Подробнее о создании сценариев командного процессора речь идет в уроке 14.) А теперь, когда вы знаете, как запускать X Window System, рассмотрим более подробно эту графическую среду и запуск в ней приложений. После запуска сервера X необходимо также запустить ряд приложений X. Некоторые из них доступны по умолчанию по- сле начальной загрузки. В вашем начальном каталоге находит- ся файл .xinitrc, который автоматически выполняется при начальном запуске Unix, хотя этот типичный файл присутст- вует не во всех версиях Unix. Ниже приведены примеры анало- гичных файлов, применяющихся в других версиях Unix. • В дистрибутивах Linux используются файлы * * * * .ш4. • В IRIX используются вспомогательные оригинальные средства, если файл .xinitrc первоначально не за- гружается. Другие имена файла •xinitrc Как и многое другое в Unix, существуют разные вари- анты именования файла .xinitrc в отдельных дист- рибутивах, в том числе .xinit, .xinit, .xinitrc или .xsession. ; О:. Напоминаем, что Unix чувствительна к регистру, по- этому ввод команд и их ключей прописными или строчными буквами Меняет их значение. Рассмотрим, что собой представляет файл .xinitrc. Ни- же приведен пример содержимого такого файла: #!/bin/sh xrdb -load $НОМЕ/.Xlldefaults xscreensaver -timeout 10 & xterm -geometry 80x30+10+10 & Проанализируем содержимое файла . xinitrc по строкам. • В первой строке определяется использование команд- ного процессора Боурна. • Во второй строке определяется загрузка базы данных ресурсов сервера из файла .Xlldefaults в начальный каталог пользователя.
Графическое сопряжение c Unix 57 • В третьей строке определяются запуск команды xscreensaver, назначение лимита времени ожидания в течение 10 минут и последующий переход процесса в фоновый режим. • В четвертой строке определяется запуск команды xterm (терминала) в формате 80 символов в ширину и 30 символов в высоту и с отступом на 10 символов сверху и слева от края экрана. База данных ресурсов сервера рассматривается далее в этой главе. ЁЧто означает “амперсанд” Все команды и программы, запускаемые из файла .xinitrc, кроме управляющего процесса, оканчиваются знаком “амперсанд” (&). Этот знак означает, что указан- - ; щ..... ная программа должна выпол няться в фоновом режиме. А теперь, когда вам известны основы X Window System и назначение команды startx, программы xinit и файла .xinitгс, свяжем все это вместе в нечто осмысленное, чтобы вы научились вносить изменения в конфигурацию среды Unix. Это позволит вам сделать среду Unix более удобной для работы. Связывая все вместе Программа xinit служит для запуска сервера X Window System. Далее из каталога /etc/init запускается перечис- ленная первой клиентская программа. Если такая программа отсутствует, xinit осуществит поиск файла .xinitrc (сценария командного процессора) в начальном каталоге пользователя. Если же этот файл отсутствует, вы можете соз- дать его в своем начальном каталоге. Рассмотрим этот файл еще раз: #!/bin/sh xrdb -load $НОМЕ/.Xlldefaults xscreensaver -timeout 10 & xterm -geometry 80x30+10+10 & В первой строке из файла .xinitrc объявляется команд- ный процессор, в котором написан сценарий. Тип выбранного
58 Урок 3 командного процессора определяет набор используемых в нем команд. Так, если сценарий был написан в C-shell, следует непременно пользоваться командами, соответствующими синтаксису этого командного процессора. Например, в первой строке приведенного выше сценария указан sh, т.е. стандартный для Unix командный процессор Боурна, используемый для написания простых сценариев. А для более сложных сценариев требуется командный про- цессор посложнее, например C-shell. Командный процессор sh выполняет команды, указанные в файле или набираемые на клавиатуре терминала. В следующей строке данного сценария указан личный файл инициализации $НОМЕ/ . XI Ide faults . . XI1, который представляет собой не что иное, как файл параметров пользо- вателя, или профильный файл. Свой профильный файл вы можете отредактировать вручную в каталоге $НОМЕ/. Редак- тировать файлы в Unix вы научитесь в уроках 6-10 этой книги. Выберите командный процессор BASH, чтобы ЛИ не “биться башкой о стенку” В системах Unix чаще всего используется командный процессор BASH. Число его пользователей сущест- венно возросло благодаря повсеместному распро- странению Linux. Это более предпочтительный ко- мандный процессор, чем sh, поскольку в последнем отсутствуют такие свойства, как предыстория выпол- нения команд и псевдонимы, что не очень удобно для работы. В частности, предыстория выполнения ко- манд избавляет от необходимости вводить одну и ту жё команду по сто раз на день. В BASH достаточно нажать клавишу <?>, чтобы вызвать уже выполняв- шиеся команды, хранящиеся в системной памяти. Ес- ли же при нажатии этой клавиши выводятся непонят- ные и нечитаемые команды, значит, используется бо- лее старый вариант командного процессора. Далее необходимо запустить на выполнение любые прило- жения, которые предполагается использовать. В приведенном выше примере сценария .xinitrc такими приложениями яв- ляются xterm и xscreensaver, запускаемые на выполнение в
Графическое сопряжение с Unix 59 фоновом режиме. В качестве других приложений, которые це- лесообразно запустить на выполнение во время начальной за- грузки системы, можно порекомендовать диспетчер окон и клиент электронной почты. Но независимо от сделанного вы- бора вы должны знать, где и как следует делать подобные из- менения. В частности, научившись редактировать файлы, вы можете впоследствии организовать запуск нужных вам при- ложений во время начальной загрузки системы. В данном случае управляющим процессом служит окно xterm. При закрытии приложения, обозначенного как управ- ляющий процесс, прекращается и весь сеанс работы в X Window System. Рассмотрим еще один пример сценария . xinitrc: #! /bin/sh xrdb $НОМЕ/.Xprofile xsetroot -solid gray & xclock -g 60x50-0+0 -bw 0 & xterm -g 60X24+0+0 & xterm -g 60x24+0-0 Этот сценарий похож на предыдущий, что полезно для за- поминания, а в конечном счете и для изучения Unix! Данный пример наглядно показывает, как постепенно раскрываются истинный потенциал и гибкость Unix. В сценарий можно включать для автоматического запуска практически все что угодно и даже вызывать одни сценарии из других. Для того чтобы связать все вместе, рассмотрим в данном примере сценария последнюю строку. В этой строке следует указывать управляющий процесс, а раз это управляющий процесс, то в конце данной строки амперсанд не вводится. Что происходит в этом сценарии? Он запускается по ко- манде xinit, а затем читается содержимое файла . Xprof ile. В итоге формируется рабочая среда пользователя. В данном примере для корневого окна указывается сплошной серый цвет и используется текущее значение системного времени. После этого инициализируются два сеанса xterm (один — в качестве управляющего процесса), а также окно xconsole.
60 Урок 3 Запуск «console , Окно xconsole рекомендуется запускать всегда. Это делается, главным образом, для того, чтобы консоль- ные сообщения не появлялись на экране. Если не за- пустить xconsole, то придется постоянно обновлять экран, что не очень приятно. Расположение окна После запуска системы Unix и инициализации рабочей среды можно указать конкретное расположение окна, как было показано в первом примере сценария . xinitrc: #!/bin/sh xrdb -load $НОМЕ/.Xlldefaults xscreensaver -timeout 10 & xterm -geometry 80x30+10+10 & Расположение окна устанавливается с помощью ключа -geometry (-g). Это нетрудно сделать, как следует из приве- денного выше примера. Не пугайтесь числовых значений в данном ключе — это всего лишь параметры окна. Зная на- значение команды xterm, ее ключа и параметров, можно ука- зать конкретное расположение и размеры любого окна. Гео- метрию окна составляют его размеры и расположение на эк- ране. В данном примере геометрия окна определяется число- выми значениями 80x3 0+10 + 10, обозначающими следующее: • 8 0x3 0 — размеры окна; • +10+10 — расположение окна; эти цифры означают не математическую сумму, а координаты местоположения окна на экране. Таким образом, окно xterm размерами 80x30 появится на экране, начиная с точки, имеющей координаты +10+10. Эти изменения стандартного расположения и размеров окна, встроенных в программу, указываются в сценарии .xinitrc. Если они вас не устраивают, перейдите в свой начальный ката- лог и отредактируйте файл .xinitrc, изменив по своему ус- мотрению геометрию окна. Внесенные вами изменения возы-
Графическое сопряжение c Unix 61 меют действие при последующей начальной загрузке системы либо при запуске X Window System по команде startx. Если вы предпочитаете графический интерфейс X Window System, то для просмотра используемой геометрии окна при- меняйте команду xwininf о (рис. 3.1). Рис. 3.1. Применение команды xwininfо Перезапуск Для запуска X Window System по специальному сце- нарию .xinitrc введите команду xinit по пригла- шению в командной строке на экране своей рабочей станциил Если при попытке выполнить эту команду появится сообщение об ошибке, в таком случае вам придется удалить файл блокировки во временном ка.-. удаления каталога rm, указав соответствующие ключ и путь. Так, по команде rm - f I tmp/ * удаляется все, что находится в каталоге tmp, а по команде rm /tmp/.хо-lock — конкретный файл.
62 Урок 3 Итак, ознакомившись достаточно подробно со средой X Window System и ее специальной настройкой, вы можете не только входить в систему и получать справку, но и на- страивать свою рабочую среду так, чтобы почувствовать себя уютнее в Unix. Кроме того, вы научились пользоваться неко- торыми командами и получили общее представление о пере- мещении в графической среде. А теперь рассмотрим дополни- тельные способы и приемы специальной настройки, позво- ляющие сделать работу в Unix еще более удобной. Специальная настройка X Window System Итак, продолжим наш урок, чтобы больше узнать о специ- альной настройке рабочей среды. Запуск X Window System возлагается, в основном, на конкретный диспетчер окон, вы- бранный при запуске системы. В этом разделе вы научитесь выбирать диспетчер окон в зависимости от своих конкретных потребностей. Но сначала рассмотрим общие функции и на- значение диспетчеров окон. В настоящее время имеется достаточно большой выбор диспетчеров окон, составляющих друг другу конкуренцию, что повышает ценность выбранного программного продукта. Как и все остальные конкурирующие друг с другом про- граммные продукты, одни диспетчеры окон лучше, чем дру- гие. В частности, большинство диспетчеров окон X Window System предназначены для работы с трехкнопочной мышью. При этом кнопки мыши выполняют следующие функции. • Левая кнопка мыши служит для указания, выполне- ния щелчка и выбора. • Центральная кнопка мыши служит для выполнения таких общих функций, как перемещение внутри окон и изменение их размеров. • Правая кнопка мыши служит для выполнения специаль- ных функций приложения, включая открытие всплы- вающих меню. Если такое назначение кнопок мыши вас не устраивает, вы можете его изменить. Но его полезно запомнить для того,
Графическое сопряжение с Unix 63 чтобы просто знать стандартные функции всех трех кнопок мыши, или же на тот случай, если в системе Unix потребуется использовать трехкнопочную мышь. В среде X Window System используется также понятие сфокусированного ввода при наборе с клавиатуры. Это озна- чает, что во время работы в Unix ввод можно сфокусировать где угодно при условии, что система соответственно настрое- на на такую функцию. В X имеется несколько возможностей для фокусирования ввода. Большинство диспетчеров окон можно настроить на следующее. • Фокусирование ввода на переднем окне. • Фокусирование ввода на выбранном окне. • Фокусирование ввода на том окне, в котором находится курсор. Если настроить Unix на фокусирование ввода на выбранном окне, этим выбранным окном совсем необязательно окажется X. Полезно также знать, что, если диспетчер окон настроен на фоку- сирование ввода на том окне, в котором находится курсор, ввод может быть направлен в частично скрытое окно. В Microsoft Windows и Apple Macintosh активным считается диалоговое окно, находящееся на переднем плане. Если же требуется окно прило- жения, находящееся на заднем плане, его нужно выбрать, чтобы таким образом переместить на передний план. А в Unix достаточно поместить курсор над окном, находящимся на заднем плане, что- бы активизировать его, и оно будет действовать, как окно передне- го плана. Имейте это в виду, чтобы не перепутать окно, в котором вы действительно работаете, с тем окном, в котором вы предпола- гали работать. При переходе к окну, которое кажется неактив- ным, обращайте особое внимание на местоположение курсора. Обратимся вновь к файлу .xinitrc и, в частности, к ко- манде xrdb. Каково ее назначение? #!/bin/sh xrdb -load $НОМЕ/.Xlldefaults Для ответа на этот вопрос необходимо ознакомиться с ба- зой данных ресурсов, в которой выбираются параметры кон- фигурации X Window System. Большинство конфигураций X хранятся в серверной базе данных ресурсов. Для доступа к ним клиент делает соответствующий запрос серверу. Сервер проверяет наличие запрашиваемой информации в своей базе
64 Урок 3 данных. Если сервер находит требуемую информацию, то предоставляет ее клиенту, а если не находит, то сообщает клиенту, что у него нет такой информации. Кроме того, сервер проверяет глобальные параметры пользо- вателя по запросу клиента. Для загрузки базы данных ресурсов после запуска X служит команда xrdb. Кроме того, по команде xrdb требуемая конфигурация загружается из файла с точкой. Подробнее файлы с точкой рассматриваются в уроке 16. Обращайтесь к документации Каждая версия Unix допускает специальную настрой- ку, но ногда приходится иметь дело с уже настроен- ной версией. Для того чтобы видоизменить рабочую среду надлежащим образом, требуется время. И что- бы не делать это методом проб и ошибок, почаще об- ращайтесь к документации, хранящейся в системе отдельно для каждого используемого в ней диспетче- ра окон. В идеальном случае для практики в настрой-? ке рабочей среды подходит испытательйая система Unix. Имея в своем распоряжении такую эксперимен- тальную лабораторию, можно стать настоящим мас- тером в видоизменении рабочей среды. На этом рассмотрение специальной настройки среды X Window System завершается. Теперь вы можете принять по умолчанию параметры настройки своей рабочей среды, уста- навливаемые по сценарию .xinitrc при начальной загрузке системы, либо изменить их по своему усмотрению. Научив- шись редактировать файлы с помощью текстовых редакторов vi и emacs в последующих уроках этой книги, вы можете за- тем вернуться к этому разделу данного урока, чтобы попробо- вать внести любые изменения в настройку своей рабочей сре- ды. А теперь перейдем к рассмотрению доступных в настоя- щее время диспетчеров окон. Диспетчеры окон Диспетчеры окон вступают в действие там, где оканчива- ются функции X Window System, которые носят ограничен- ный характер. Когда же требуются расширенные функции,
Графическое сопряжение с Unix 65 выходящие за пределы возможностей X, на помощь приходит диспетчер окон. У начинающих изучать Unix могут возникнуть опреде- ленные затруднения с диспетчером окон. Ведь Unix — до та- кой степени настраиваемая система (это, пожалуй, ее поло- жительное, а не отрицательное качество), что экран у сидя- щего рядом с вами коллеги может выглядеть совсем иначе, чем у вас, — все зависит от того, как настроен диспетчер окон. Но это обстоятельство не должно вас обескураживать. Самый лучший выход из подобного затруднения — учиться самому на практике настраивать свою рабочую среду. По мере продвижения к цели первоначальный страх перед неизвест- ным быстро исчезнет. Существуют самые разные диспетчеры окон. В этом разде- ле данного урока рассматриваются наиболее часто встречаю- щиеся диспетчеры окон, в том числе самый распространен- ный диспетчер окон twm. Диспетчер окон twm twm — наиболее часто используемый и простой диспетчер окон. Он обладает далеко не самым богатым набором средств, но поскольку этот диспетчер окон получил наиболее широкое распространение, он стал фактически неофициальным стан- дартом. Если уметь правильно пользоваться twm, то привыч- ную рабочую среду можно сделать намного более удобной, зна- чительно расширив ее возможности. С помощью этого диспет- чера окон можно добиться многого, в том числе создать кноп- ки, добавить всплывающие меню и прочие элементы оконного интерфейса. Для запуска twm достаточно ввести следующую команду по приглашению командного процессора: >twm Откроется диспетчер окон, если до этого не был открыт другой аналогичный диспетчер. Во избежание конфликтов между двумя одинаковыми диспетчерами окон открывать их одновременно запрещается. После запуска twm вы получаете возможность работать в этом диспетчере окон для специальной настройки всего, что только вам потребуется. Но прежде ознакомьтесь с докумен-
66 Урок 3 тацией к этому диспетчеру, поскольку в системе могут ока- заться и многие другие диспетчеры окон, включая рассмат- риваемые в следующем разделе. Где хранятся изменения V Файл, в котором хранятся все изменения конфигурации (и много других изменений), называется .twmrc. Он, скорее всего, находится в вашем начальном каталоге. Другие диспетчеры окоп К сожалению, выбор зачастую лишь усложняет дело. Это справедливо не только для всей вычислительной техники в целом, но и для Unix и диспетчеров окон. В силу большого разнообразия диспетчеров окон мы просто не в состоянии рас- смотреть все их разновидности. Вместо этого приведем крат- кий обзор наиболее распространенных диспетчеров окон, чтобы дать некоторое представление об их особенностях. Выбор диспетчера окон зависит от личных предпочтений и конкретных потребностей. Если вы знаете, какой диспетчер вам нужен, а еще лучше — имеете некоторый опыт его при- менения, то вам будет намного проще работать с ним впослед- ствии. Помимо twm, имеются следующие наиболее часто применяемые диспетчеры окон. • After Step — диспетчер окон, поддерживающий такие дополнительные свойства, как улучшение графики и обесцвечивание изображения. Для его применения требуется качественная видеоплата, исключающая об- ращение к карте соответствия цветов. «' уШ' Карты соответствия цветов у - Карта соответствия цветов представляет собой не что иное, как набор цветовых полей, которым присвоены поддающиеся управлению индексные значения. Иными словами г карта соответствия цветов состоит из ряда элементов, определяющих значения отдел ьных цветов. • ctwm — диспетчер окон с вкладками, имеющий трех- мерный анимационный вид.
Графическое сопряжение c Unix 67 • fvwm — весьма распространенный трехмерный вирту- альный диспетчер окон. Он потребляет мало памяти и работает довольно быстро. • fvwm2 — вторая версия fvwm. Отличается от предыду- щей версии дополнительными возможностями уско- рить и упростить работу в графической среде. • tvtwm — другая версия twm, предоставляющая такие дополнительные преимущества, как возможность соз- дания виртуального рабочего стола. • Blackbox— диспетчер окон, распространенный среди тех пользователей, которые желают работать с други- ми, более крупными диспетчерами. Следует, однако, иметь в виду, что это далеко не полный перечень диспетчеров окон, наиболее распространенным сре- ди которых является twm. Зная назначение, функции и основные разновидности диспетчеров окон, вы теперь можете настроить свою рабочую среду наиболее подходящим для вас образом. И в завершение данного урока рассмотрим графическую среду настольной системы KDE. Среды настольных систем В прошлом оконные диспетчеры Unix применялись для управления выводом на экран пользователя и для специаль- ной настройки его рабочей среды. Но с появлением и после- дующим развитием Linux это положение быстро изменилось. Усовершенствованные среды настольных систем для Linux и новых версий Unix теперь предоставляют пользователям возможность сделать свою рабочую среду более разнообраз- ной и развитой. На рабочем столе можно выполнять самые разные задачи, включая доступ практически ко всем программам, запуск командного процессора, ввод команд, а также управление файлами, рассматриваемое в следующем уроке. Это наиболее характерные для любой операционной системы задачи, хотя на рабочем столе можно выполнять и многие другие задачи.
68 Урок 3 Простота, которая может оказаться хуже воровства , Re следует,'ддна^Йаб^^ ла Unix— в командной строке. Старайтесь не привы- кать к графическому интерфейсу, с которым работать поначалу проще, чем с командной строкой. Найдите оптимальное сочетание текстового и графического способов работы в Unix, а также освойте как следует возможности командной строки, чтобы не попасть в полную зависимость от графического интерфейса. KDE В этом, последнем, разделе данного урока будет рассмотрена среда настольной системы KDE (К Desktop Environment). Суще- ствуют и другие среды данного типа, к наиболее распространен- ным из которых относятся GNOME и NLD (Novell Linux Desktop; подробнее об этой среде речь идет на Web-сайте компании Novell по адресу http: //www.novell.com/products/desktop/). Несмотря на разработку новых сред, KDE по-прежнему остается наиболее распространенной средой настольной сис- темы, которую нетрудно освоить, поскольку документация на нее достаточно обширна. (Напомним, что обращение к до- кументации и исследование — это две наиболее важные со- ставляющие изучения Unix.) По степени распространенности среду KDE можно сравнить с диспетчерами окон. В связи с расширяющимся разнообразием сред настольных систем выбор наиболее подходящей среды и в этом случае зависит от конкретных потребностей. Следует, однако, иметь в виду, что KDE устанавливается по умолчанию в качестве стандартной оболочки во многих дистрибутивах Linux, включая SuSE Linux Professional компании Novell. Среда KDE представляет собой отличный диспетчер окон, и если вы освоите ее как следует, она позволит вам делать практически все что угодно. С помощью KDE можно, напри- мер, специально настроить свою рабочую среду так, как нуж- но. Дополнительные сведения об изменении рабочей среды и командного процессора приводятся в уроке 16.
Графическое сопряжение с Unix 69 Делайте вой выб р осознанно W Среда настольной системы KDE (К Desktop Environment) или GNOME (GNU Network Object Model Environment— среда объектной модели сетевой свободно распростра- няемой системы GNU) располагается поверх большин- ства современных копий X. Для того чтобы выбрать наи- более подходящую среду, определите сначала свои по- требности, а затем исследуйте возможности каждой среды настольной системы. И только после этого уста- новите выбранную среду и пользуйтесь ею. Так как же KDE взаимодействует с X Window System? При обычном входе в систему SuSE Linux используется графиче- ский экран регистрации, о котором речь шла в уроке 1. Этот экран дает первое представление о X Window System. После входа в систему происходит настройка вашей рабочей среды. А что если вам нужно ее изменить? В SuSE Linux для этой це- ли служит инструментальное средство SaX (или SaX2 для версии SuSE Linux Professional компании Novell). Это инст- рументальное средство запускается на выполнение в первый раз во время установки SuSE Linux для указания типа видеоплаты, графических драйверов и установки стандарт- ной конфигурации X. Все эти параметры настройки хранятся в файле/etc/Xll/XF86Config/.XF86Config. Помимо описания пользовательского интерфейса, KDE предоставляет комплекс инструментальных средств для настройки машины. Если вам раньше приходилось работать в Windows или Macintosh, вы быстро освоите и KDE, поскольку в этой среде применяется тот же принцип указания и выбора объектов с помощью мыши. Если вы стремитесь сделать свою рабочую среду в Unix бо- лее похожей на среду настольной системы Windows или Macin- tosh, воспользуйтесь KDE, но помните, что истинная сила Unix — в ее командах, выполняемых из командной строки. Резюме В этом уроке вы изучили основы графического пользова- тельского интерфейса в целом и X Window System в частно- сти. Кроме того, вы научились пользоваться xinit и другими
70 Урок 3 системными программами, или утилитами, а также специ- ально настраивать свою рабочую среду. И наконец, вы озна- комились с диспетчерами окон и с такими средами настоль- ных систем, как KDE. • В основу X Window System положена модель “клиент/ сервер”. • Для запуска сервера X Window System служит про- грамма xinit. • Для начала сеанса работы в X Window System, выпол- нения основных функций отображения и прочих дей- ствий служит сценарий командного процессора. • С помощью команды startx упрощается процесс объе; динения отдельных команд в единый файл, к которому можно быстро обратиться. • Если в командной строке не указан файл сценария ко- мандного процессора с помощью ключа -х, команда startx осуществляет поиск файла, указанного в пере- менной среды из пользовательского файла . xinitrc. • В тех случаях, когда программа не указана, команда xinit осуществляет поиск файла в начальном каталоге пользователя. Это может быть .xinitrc или иной ука- занный файл. • Из файла .xinitrc осуществляется вызов других про- грамм для загрузки основных параметров, определен- ных в сценарии, включая указание на запуск программ в фоновом режиме с помощью амперсанда (&). • Далее запускаются клиентские программы из каталога /etc/init. • Если файл .xinitrc отсутствует, его можно создать и ввести в свой начальный каталог. • Для специальной настройки X Window System требует- ся диспетчер окон, который позволяет сделать эту сре- ду более удобной для работы (например, ввести строки заголовков окон или всплывающие меню).
Урок 4 Особенности файловой системы Этот урок посвящен основам файловой системы Unix, а также элементарному перемещению по ней. Итак, вы уже умеете входить в систему, искать справку и перемещаться в X Window System. Теперь вам необходимо ознакомиться с самым важным элементом Unix — файловой системой! В Unix практически вся просматриваемая инфор- мация принимает форму файла, в связи с чем очень важно уяснить преимущественное положение файловой системы. К концу этого урока вы научитесь без особого труда переме- щаться по файловой системе. В Unix предоставляются до- вольно сложный доступ к файлам и развитые средства управ- ления ими, что служит явным признаком внутренней силы данной системы. Итак, приступим к изучению способов, по- зволяющих раскрыть эту силу в полной мере. Строение файловой системы Файловая система Unix — одна из самых прочных и гиб- ких современных систем данного типа. Эта файловая система строилась для эффективности, но не простоты использова- ния, поэтому перемещение по ней — в какой-то степени за- гадка. Но это не должно вас особенно беспокоить, поскольку цель данного урока — помочь вам преодолеть всякие препят- ствия и недоразумения на данном пути. В этом разделе мы сделаем первый шаг к поставленной цели, рассмотрев конст- руктивные особенности файловой системы Unix. В Unix файловая система построена таким образом, что в ней имеется один корневой каталог, в отличие, например, от Microsoft Windows, в которой имеется несколько имен диско-
72 Урок 4 водов: С: \ , D: \ и т.д. Таким образом, в Unix дерево файловой системы вырастает из корневого каталога. На рис. 4.1 приведен пример дерева файловой системы. robscrap Рис. 4.1. Пример дерева файловой системы Unix Корневой каталог не следует путать со всемогущей “корне- вой” учетной записью администратора, о которой речь шла при изучении способов входа в систему в уроке 1. Зри в корень, но в какой Напомним, что в Unix лицом, обладающим абсолют- ным контролем над всей системой, является корне- вой пользов тель. Это о пользователя не следует пу- тать с корневым каталогом, которьГ служи основа- нием файловой системы. Постарайтесь впредь не пу- тать эти два понятия. " f | Г Еще одна интересная особенность строения файловой систе- мы Unix состоит в том, что установленные в ней жесткие диски не обозначаются именами дисководов. В отличие от Windows, установленные жесткие диски обозначаются в файловой системе Unix, как каталоги. Некоторые считают, что так файловая сис- тема в Unix становится более понятной, чем в Windows. Так, ес- ли в системе установлен жесткий диск, то для быстрого перехода из текущего места на этот диск достаточно ввести правильную
Особенности файловой системы 73 команду по приглашению командного процессора. В Unix поль- зователь совершенно избавлен от необходимости знать, какое оборудование установлено в системе и каково физическое место- положение файлов, к которым ему требуется получить доступ. Одно из преимуществ такого строения файловой системы заклю- чается в том, что если жесткий диск выйдет из строя, то работу можно возобновить, как только этот диск будет заменен и вновь установлен, что входит в обязанности администратора системы Unix. Еще одно преимущество состоит в возможности быстро и просто находить в файловой системе все, что требуется, непо- средственно по приглашению командного процессора, что вы вскоре научитесь делать. Как упоминалось ранее, Unix чувствительна к регистру, поэтому данный принцип распространяется не только на вы- полнение команд, но и на поиск файлов. Будьте чувствительны, но только к регистру При изучении Unix постоянно помните о чувствитель- ности этой системы к регистру, будь то поиск данных, или ввод команд. Многие начинающие пользователи Unix привыкли работать в Windows и других операци- онных системах, которые, как правило, не чувстви- тельны к регистру, поскольку построены по принципу простоты использования. А для работы в Unix — са- мой мощной з всех современных операционных сис- тем — требуется совсем иной подход. Еще одна особенность строения файловой системы Unix — подход к атрибутам файлов. Как известно, в Microsoft Windows атрибуты представляют собой характеристики, присваиваемые файлам или каталогам с целью предоставить пользователю управление доступом к данным в определенной форме. Так, если имеется файл, который никто не должен изменять, ему можно присвоить атрибут “только для чтения”. Этим гарантируется, что другие пользователи не смогут изменить файл при его про- смотре. Аналогично Windows в Unix применяются три следую- щих атрибута файлов. Чтение Запись Выполнение
74 Урок4 В Unix эти три атрибута могут быть использованы и в отри- цательной форме. Иными словами, файл можно сделать чи- таемым и нечитаемым, записываемым и незаписываемым, вы- полняемым и невыполняемым. Как правило, файлы данных обозначаются, как читаемые и записываемые, а программные файлы, как читаемые и выполняемые. Но это правило не абсо- лютное, хотя оно чаще всего соблюдается в отношении типов файлов, с которым приходится работать в данный момент. И еще одно замечание, которое следует иметь в виду во время работы в файловой системе Unix: предлагая Unix сделать что-то, нужно быть внимательным. Это не значит, что нужно бояться Unix, но следует принимать во внимание, что в ней нет столько внутренних проверок, как в других операционных системах. Ес- ли, например, попытаться изменить или удалить что-нибудь во время работы в Microsoft Windows, эта операционная система дважды проверит, действительно ли пользователь желает вы- полнить данную операцию. Ничего подобного не происходит при вводе команд по приглашению командного процессора в Unix. Следовательно, если вы практикуетесь на рабочей системе, будь- те внимательны и осторожны. В связи с этим вновь настоятельно рекомендуется получить копию Unix или Linux и использовать ее в качестве экспериментальной лаборатории, не особенно бес- покоясь о том, что совершенные ошибки могут отрицательно сказаться на работоспособности системы. Итак, ознакомив вас со строением файловой системы Unix, перейдем к способам перемещения по ней и к командам, с по- мощью которых можно раскрыть истинную силу Unix. Перемещение по файловой системе Как правило, перемещение по файловой системе — это ед- ва ли первое, чему учат в Unix, не только по упомянутым выше причинам, но и просто потому, что это помогает ориен- тироваться в данной системе, т.е. знать, где находишься и куда нужно следовать, чтобы добраться до конечной цели. Это аналогично планированию путешествия. Нужно не про- сто выйти из дому, сесть в машину и поехать, а тщательно
Особенности файловой системы 75 спланировать каждый этап путешествия с учетом его сложно- сти. В Unix для подобного планирования нужно знать соот- ветствующие команды и уметь ими пользоваться, чтобы ра- ботать с файлами данных, править Web-страницы и т.д. Самые элементарные команды для работы с файловой сис- темой Unix выполняют перемещение между каталогами и поиск в них отдельных файлов. Применение команды pwd Пользователи Windows и DOS часто вводят команду dir (directory — каталог) из командной строки. Эта команда осуществляет вывод содержимого текущего каталога. Если же указать полный путь к другому каталогу, команда dir выведет содержимое этого каталога. А в Unix содержимое те- кущего каталога выводится по команде pwd (present working directory— текущий рабочий каталог). В Unix эта информа- ция отображается иначе, чем в Windows. Так, в Windows путь С: \Windows\Тетр означает, что в каталоге Windows на диске С: данной операционной системы имеется папка (каталог) Тетр. А в Unix путь означает несколько иное. Так, /priv/home/ rob /temp/ означает кратчайший путь к теку- щему файлу или каталогу из корневого каталога. Всякий раз, когда по приглашению командного процессо- ра вводится команда pwd, Unix сообщает, в каком месте фай- ловой системы вы находитесь. Ниже приведен пример при- менения данной команды: >pwd /priv/home/rob/temp/ Вам нужно привыкнуть к такому строению файловой сис- темы, поскольку ее каталогами вам придется все чаще поль- зоваться по мере изучения Unix. Начальный каталог Начальный каталог уже не раз упоминался в этой книге, но пока еще не рассматривался подробно. Поэтому в данном разделе поясняется, насколько начальный каталог важен для пользователя Unix.
76 Урок4 Для каждого пользователя системы Unix должен быть на- значен персональный каталог, в котором он может хранить свои данные. Такой каталог называется начальным. В свой начальный каталог вы попадаете после входа в сис- тему Unix. В нем вы оказываетесь по умолчанию. Все, что находится в этом каталоге и ниже него, принад- лежит вам. Его содержимое надежное защищено и не доступ- но для других пользователей, если не указано иное. Что означает “тильда” В Unix к домашнему каталогу можно обращаться с по- мощью знака “тильда” Запомните это на будущее, чтобы сэкономить немного на вводе лишней йнфорйа- ции. Тильдой можно пользоваться для перехода не ^только в свой начальный каталог, но и в начальный ка- талог другого пользователя, указав дополнительно его имя: ~имя_пользователя. Итак, свое местоположение в файловой системе Unix вы можете определить с помощью команды pwd. А теперь пока- жем, каким образом можно просматривать содержимое ката- лога на предмет наличия других каталогов и файлов. Вывод списка файлов в Unix Все рассмотренные до сих пор команды используются не- часто, хотя и очень важны. А к следующей команде типич- ный пользователь Unix обращается постоянно, поэтому ей нужно уделить особое внимание. Это команда 1s, выводящая список файлов. Если она выдается без аргументов (называе- мых также ключами), то выводится список файлов и подка- талогов, находящихся в текущем каталоге. А для вывода списка файлов из другого каталога достаточно указать путь к нему в качестве аргумента или просто перейти в этот ката- лог, а затем выдать команду 1s. Ниже приведен пример при- менения команды 1s: >pwd /pr iv/home/rob/1emp/newwebs i te/ >ls cgi_bin index.html images vrml
Особенности файловой системы 77 В данном примере предполагается, что перед выдачей ко- манды pwd был осуществлен переход в новый каталог (newwebsite). По команде 1s был получен список файлов в данном каталоге, включая и файл index.html вновь соз- данной HTML-страницы. А теперь попробуйте определить свое местоположение в файловой системе, проверив текущий рабочий каталог, а затем выведите список файлов и других каталогов в том месте, где вы находитесь теперь. В дальней- шем вы научитесь менять каталоги, а пока что освойте как сле- дует обе рассмотренные выше команды. Если же вы знаете свое местоположение в операционной системе Unix, то выполнять команду pwd перед выводом списка файлов не нужно. Как упоминалось ранее, для вывода списка файлов из дру- гого каталога вы можете воспользоваться командой 1s <имя каталога>, если не знаете, как менять каталог. Так, если те- кущий каталог остается начальным, то содержимое корнево- го каталога можно получить по следующей команде: > 1s / CDROM lib bin priv core tmp dev temp etc usr include var Эта команда позволяет убедиться в том, что все данные в кор- невом каталоге относятся к категории каталогов. Следователь- но, если информация не известна вам точно, проверяйте ее с по- мощью данной команды! Для получения более подробных сведений о содержимом каталога служит ключ -1 (длинный список) команды 1s. Так, если воспользоваться командой Is -1 <имя каталога> в приведенном выше примере, то содержимое корневого ка- талога будет представлено совершенно в ином свете: > Is -1 / total 12 dr-xr-xr-x 2 root 512 Jan 8 1996 CDROM lrwxrwxr-x 1 root 6 Dec 7 1995 bin -> /usr/bin —r——r——r—— 1 root 7401946 Dec 24 20:15 core drwxr-xr-x 3 root 11264 Nov 7 13:02 dev drwxr-xr-x 11 root 3072 Nov 7 13:01 etc drwxr-xr-x 46 root 2560 Jan 11 1995 include drwxr-xr-x 23 root 4096 Oct 13 16:29 lib drwxr-xr-x 4 root 512 Jul 4 1997 priv
78 Урок 4 drwxrwxrwx drwxrwxrwx drwxr-xr-x lrwxrwxr-x /usr/var 3 root 512 Nov 24 00:30 tmp 3 root 512 Nov 24 00:30 temp 29 root 1024 Oct 27 17:53 usr 1 root 8 May 21 1995 var -> Кому принадлежит этот файл < Одна из замечательных особенностей строения фай- ловой системы Unix состоит в том, что с помощью ко- манды is можно узнать, кому принадлежит отдель- ный файл, что немаловажно. Как упоминалось ранее, изучать Unix по дистрибутиву, от- клоняющемуся от принятой нормы, не совсем удобно. В этом случае результат выполнения команды 1s может выглядеть не- сколько иначе, чем было показано выше. В этом нет никакого противоречия, поскольку в разных версиях Unix команда 1s да- ет несколько отличающиеся друга от друга результаты, в кото- рых, впрочем, нетрудно разобраться. Обратитесь за справкой по команде 1s, воспользовавшись командой man, чтобы уточнить ее синтаксис и те результаты, которые она может дать в вашей сис- теме. Кроме того, попробуйте воспользоваться командой help из командной строки. Но, как правило, команда 1s дает сходные результаты независимо от используемой версии Unix. Итак, вы научились определять свое местоположение в фай- ловой системе и просматривать содержимое каталога. А теперь вам нужно научиться правильно читать результат выполнения команды 1s, поскольку это очень важно для продвижения в ос- воении Unix дальше начального уровня. Рассмотрим следующий пример: > 1s -1 / total 12 dr-xr-xr-x 2 root 512 Jan 8 1996 CDROM lrwxrwxr-x 1 root 6 Dec 7 1995 bin -> /usr/bin —r——r——r—— 1 root 7401946 Dec 24 20:15 core drwxr-xr-x 3 root 11264 Nov 7 13:02 dev drwxr-xr-x 11 root 3072 Nov 7 13:01 etc drwxr-xr-x 46 root 2560 Jan 11 1995 include drwxr-xr-x 23 root 4096 Oct 13 16:29 lib drwxr-xr-x 4 root 512 Jul 4 1997 priv drwxrwxrwx 3 root 512 Nov 24 00:30 tmp drwxrwxrwx 3 root 512 Nov 24 00:30 temp
Особенности файловой системы 79 drwxr-xr-x 29 root 1024 Oct 27 17:53 usr lrwxrwxr-x 1 root 8 May 21 1995 var -> /usr/var Наведение мостов В этом й в последующих уроках данной книги будет поддерживаться неразрывная связь с командами, представленными в предыдущих уроках, Это позво- лит вам не забывать освоенные ранее команды и нау- читься пользоваться всеми известными вам коман- : Тдами вместе. Поддержание такой неразрывной связи между командами необходимо для окончательного овладения Unix. - Подобный подход к изучению Unix-можно сравнить с наведением мостов, поскольку одна команда при- меняется на основании другой или же вместе с дру- гой командой для расширения функциональных воз- можностей. Именно для этого и предназначены ко- манды Unix. В действительности истинный потенциал Unix раскрывается только тогда, когда команды этой ^системы объединяются в сценарий для создания кон- кретного процесса или функции. В приведенном выше примере команда 1s использована с ключом -1 для вывода содержимого указанного каталога. Рассмотрим полученный результат выполнения этой коман- ды (листинг) более подробно. • В первой строке полученного результата указывается общий объем выводимой информации. В данном случае это 12 строк. • В каждой последующей строке выводится подмножест- во важной информации. На рис. 4.2 приведена разбив- ка каждой такой строки на части. Если уметь читать листинг (разбитый в данном случае на пять частей), то его содержимое нетрудно понять. • В первой части строки, приведенной на рис. 4.2, указа- ны атрибуты данных (файла или каталога). Напомним, что для управления доступом к данным в системе Unix используются атрибуты чтения (г), записи (w) и выпол- нения (х).
80 Урок 4 dr-xr-xr-x 2 root 512 Jan 8 1996 CD ROM 2 3 4 5 Puc. 4.2, Пример листинга файловой системы Unix • При более подробном анализе данной части строки выяв- ляются атрибуты чтения (г) и выполнения (х). Кроме того, в начале строки указана буква d, обозначающая каталог, а не файл. Строки, начинающиеся со знака обозначают обычные файлы, а строки, начинающиеся с буквы 1, — каталоги bin и var. Буква 1 в данном случае обозначает связь. Подробнее о связях речь пойдет в уроке 6. • Кроме того, сами атрибуты обозначают конкретные права доступа к данным, более подробно рассматри- ваемые в уроке 19 наряду с групповой и индивидуаль- ной принадлежностью файлов. • Во второй части строки, приведенной на рис. 4.2, указа- но слово root, просто обозначающее учетную (в данном случае корневую) запись пользователя, которому при- надлежат конкретные данные, представленные в этой строке. Как видите, пользователю с корневой учетной записью принадлежит все, что находится в корневом ка- талоге. (Еще раз напоминаем об отличиях между корне- вой учетной записью и корневым каталогом.) • В третьей части строки, приведенной на рис. 4.2, ука- зана величина дискового пространства (в байтах), ко- торое в данный момент занимают данные. • В четвертой части строки, приведенной на рис. 4.2, указана дата последнего видоизменения Скайпа или ка- талога. В данном случае каталог в последний раз был изменен в январе 1996 года. Как правило, стандартные системные файлы, каталоги или программы не изме- няются в отличие от файлов таких данных, как Web- страница в приведенном выше примере.
Особенности файловой системы 81 • В пятой части строки, приведенной на рис. 4.2, указан по- следний фрагмент информации: имя файла или каталога. В следующем разделе рассмотрение свойств команды 1s будет связано со скрытыми данными, которых вам может не- доставать. Скрытые данные Если у вас есть опыт обращения со скрытыми данными в Microsoft Windows, то аналогичным образом вы можете посту- пать со скрытыми данными и в Unix. Об этих данных нужно знать и просматривать их по мере надобности. Файловая система всегда сообщает о таких данных, как в следующем примере: >15/ total 10 Если после выдачи команды указывается в целом 12 строк, а видно только 10, то для получения такого же результата, как и в предыдущем примере, вероятно, нужно дополнить команду 1s соответствующим аргументом. О длинном листинге вы уже знаете, а теперь попробуем вы- вести файлы, имена которых начинаются с точки (.). Такие фай- лы по умолчанию не выводятся, и поэтому для их просмотра требуется специальный запрос. В данном случае для просмотра подобных файлов используется команда 1s с аргументом all: > Is -all total 12 Обратите внимание на отличия в результатах выполнения команды 1s в двух последних примерах. В первом случае вы- водятся только 10 файлов и два скрыты, а во втором — все двенадцать файлов. В Unix имеется немало способов расширения возможно- стей команды 1s, помимо тех, которые были рассмотрены выше. В частности, данные можно выводить с табуляцией, сортировкой или же коротким списком. Помимо упомянутых выше ключей -1 и -а, у команды 1s имеются следующие час- то используемые ключи: • -F: служит для указания атрибутов файлов; • -R: служит для вывода рекурсивного списка всех фай- лов, находящихся ниже указанного каталога.
82 Урок 4 (/) Не забывайте 6 чувствительности команд к регистру ' > Используя такие аргументы команд, как приведенные выше, обращайте внимание на регистр, в котором их следует указывать. Помните, что выполнение невер- ной команды может нанести ущерб и вам, и самой системе Unix, поскольку в ней не предусмотрено мно- го проверок, предохраняющих вас от неверных дей- ствий. Если вы не знаете точно, какие ключи требуют* ся для достижения конкретных резуль атов, обра- > щайтесь за помощью к справочной системе. ? :• Итак, вы уже умеете входить в систему, получать справку, если таковая требуется, выполнять элементарное перемеще- ние по файловой системе Unix, определять свое местополо- жение в этой системе после регистрации, а также просматри- вать содержимое каталогов по указанному пути. Не так уж и плохо для начала. Вы можете даже поздравить себя со значи- тельными успехами, достигнутыми за столь короткое время. Освоив всего лишь несколько уроков, вы уже можете понем- ногу работать в среде Unix. В следующем разделе вам пред- стоит добиться еще больших успехов, научившись перехо- дить из одного каталога в другой и искать в Unix все, что вам потребуется для решения конкретных задач. Смена каталогов по команде cd Сменить каталог в Unix так же просто, как вывести его со- держимое. Если с помощью команды 1s выводится содержи- мое каталога, то с помощью команды cd меняются каталоги. Переход из одного каталога в другой может потребоваться для правки и удаления файла, а также для выполнения са- мых разных задач. Кроме того, команда cd помогает упраж- няться в применении других команд и предоставляет больше возможностей для перемещения по файловой системе Unix. С помощью команды cd можно мгновенно сменить ката- лог, но прежде вы должны знать, где вы находитесь и куда вам нужно следовать. Для этой цели служат уже известные вам команды. Так, команда pwd отображает каталог, в кото- ром вы находитесь в данный момент, а команда 1s с конкрет-
Особенности файловой системы 83 ными аргументами выводит содержимое данного каталога, включая файлы, а возможно, и другие каталоги. Если в пе- речне содержимого текущего каталога указан другой каталог и вы желаете получить к нему доступ, воспользуйтесь для этого командой cd. Полный синтаксис команды cd следую- щий: cd <имя каталога>. Вы уже знакомы с понятиями начального и корневого ка- талогов, поэтому воспользуйтесь упомянутыми выше коман- дами для перехода из одного каталога в другой: > pwd /priv/home/rob > cd / > pwd / В приведенном выше примере сначала определен текущий каталог, а затем осуществлен переход в корневой каталог. Для возврата в исходный каталог выполните следующие действия: > pwd / > cd /priv/home/rob > pwd /priv/home/rob Как видите, для возврата из корневого каталога к исход- ному не нужно по очереди сменять каталоги /priv, /home и /rob. Для этого достаточно указать путь к исходному ката- логу priv/home/rob в команде cd. (7) Команды Unix подобны командам Windows, V/ но лишь отчасти А. В настольных системах Microsoft Windows имеется та- кая же команда cd, как и в Unix. С этими и другими Unix-подобными командами вы можете ознакомить- ся, перейдя в Windows по команде Starts Run (Пуск^ Выполнить) в диалоговое окно запуска программ и введя сначала cmd или интересующую вас команду, а затем help в командной строке;<В итоге появится перечень команд, в котором можно найти и команду cd. Ее структура и применение сходны в обеих опера- ционных системах.
84 Урок 4 Смена каталогов по командам pushd и popd Вслед за командой cd вам необходимо освоить команды pushd и popd для перемещения по файловой системе Unix. Так, для смены каталога по команде pushd <имя каталога> нужно указать имя каталога, а для смены каталога по коман- де popd это не требуется. При смене каталогов по этим командам используется стек каталогов — тип памяти для хранения данных, работающей по следующему принципу. Данные вводятся и располагаются друг над другом, образуя стек. Первыми удаляются данные, введенные последними, поскольку они находятся на вершине стека. Таким образом, по запросу из команды pushd данные помещаются в стек, а по запросу из команды popd — извле- каются из него. Благодаря этому обе команды действуют эф- фективнее и быстрее, чем команда cd. Ниже приведены при- меры выполнения команд pushd и popd. > pwd /priv/home/rob Или > pwd /priv/home/rob > pushd /var/adm /var/adm /priv/home/rob > pwd /var/adm Тогда > popd /priv/home/rob > pwd /priv/home/rob Опробуйте обе команды, чтобы убедиться на практике, на- сколько удобно ими пользоваться. И та, и другая команды нормально работают в любом дистрибутиве Unix. Теперь вам известно почти все о перемещении по Unix и ее загадочной, на первый взгляд, файловой системе. Эти знания нужно лишь расширить, рассмотрев более подробно упоми- навшиеся ранее пути к файлам.
Особенности файловой системы 85 Относительные и абсолютные пути При смене каталогов место, куда требуется перейти, мож- но указать явно с помощью верно выбранного пути. Путь представляет собой ряд каталогов для перехода от корневого к текущему каталогу или файлу. Но в Unix применяются два типа путей: абсолютный и относительный. О них нужно обя- зательно знать, чтобы до конца понять порядок перемещения по файловой системе. Путь, начинающийся с корневого каталога и оканчиваю- щийся именем файла или каталога, называется абсолютным. Иными словами, абсолютные пути содержат абсолютно все, что требуется для перехода к нужному каталогу или файлу, в том числе корневой каталог. Ниже приведен один из приме- ров указания абсолютного пути: > cd /usr/local/bin С другой стороны, относительный путь является укоро- ченным вариантом абсолютного пути. Он содержит только каталог, в котором вы работаете в настоящий момент, и не включает в себя корневой каталог. Ниже приведен один из примеров указания относительного пути: > cd bin Относительные пути указываются относительно текущего каталога. Если абсолютные пути включают в себя корневой каталог, то относительные пути — не включают. Итак, вы научились определять свое местоположение в фай- ловой системе, выявлять содержимое отдельных каталогов и пе- реходить из одного каталога в другой. В этом уроке были не только представлены некоторые важные команды, но и даны по- лезные теоретические сведения. При этом вы освоили перемеще- ние по файловой системе из командной строки. А теперь вам предстоит научиться делать то же самое с помощью графическо- го интерфейса, а точнее — среды KDE.
86 Урок 4 Перемещение по файловой системе с помощью графического интерфейса В этом разделе будет показано, каким образом можно перемещаться по файловой системе с помощью KDE. Система управления файлами в KDE выполняет те же самые функции, что и командная строка, но информация в данном случае представлена в графическом виде, что дает возможность указать и выбрать ее с помощью мыши. Кроме того, система управления файлами в KDE действует на основе Web- браузера, установленного в операционной системе. Допустим, что таким Web-браузером является Konqueror. Для переме- щения по файловой системе откройте Web-браузер Konqueror и укажите в поле адреса путь к нужному файлу так же, как в командной строке Unix. С другой стороны, вы можете ука- зать и выбрать щелчком место, куда вам нужно перейти. Кроме того, в Web-браузере Konqueror можно в любой мо- мент просмотреть содержимое Web-сайтов. Простые действия в KDE В KDE отдельные файлы обозначены пиктограммами, по виду которых можно, как правило, определить тип файла (рис. 4.3). Как следует из рис. 4.3, каталоги в KDE обозначены папка- ми, т.е. так же, как и в Microsoft Windows. Двойной щелчок на каталоге аналогичен выполнению команды cd для перехода к данному каталогу из командной строки. Однако, перемещаясь по KDE, вы можете получить доступ ко всем своим файлам, не вводя ни одной команды по приглашению командного процес- сора. Кроме того, если требуется переместить или скопировать файлы, это можно сделать, щелкнув мышью на выбранном файле и перетащив его из Web-браузера Konqueror в нужное место. А для удаления выбранных файлов следует сначала пе- ретащить их на пиктограмму корзины для мусора (Trash), а за- тем завершить данное действие, щелкнув правой кнопкой мы- ши на этой пиктограмме и выбрав команду Empty Trash Bin (Опорожнить корзину для мусора) из контекстного меню.
Особенности файловой системы 87 Рис. 4.3. Вид файловой системы в KDE создания новой папки в KDE воспользуйтесь следую- щей процедурой. 1. Щелкните правой кнопкой мыши на том месте, где должна появиться новая папка. 2. Выберите команду New (Создать) из контекстного меню. 3. Выберите команду Folder (Папка) из подменю. Для перехода к начальному каталогу в KDE найдите папку с пиктограммой дома и щелкните на ней. Откроется окно диспетчера файлов KDE с содержимым начального каталога. Того же результата можно добиться, введя тильду (~) в поле адреса в браузере Konqueror (напомним, что тильда является сокращенным обозначением начального каталога). Поупражнявшись немного в перемещении по файловой системе в KDE, вы быстро убедитесь, что это делается так же оперативно и изящно, как и в коммерческих настольных сис- темах. Кроме того, вы можете убедиться, что перемещаться по файловой системе нетрудно как в графическом интерфей- се, так и по приглашению командного процессора.
88 Урок 4 Резюме В этом уроке вы приобрели основные навыки работы с фай- ловой системой Unix. Если у вас возникли какие-нибудь за- труднения при изучении материала данного урока, позанимай- тесь дополнительно, прежде чем переходить к следующему уроку. В этом уроке были рассмотрены следующие вопросы. • Система Unix чувствительна к регистру, поэтому уде- ляйте внимание регистру, особенно при переносе фай- лов с Unix-машины на ПК. • Файлы Unix имеют три атрибута: чтение, запись и вы- полнение. С помощью этих атрибутов можно управлять доступом к файлам. • Местоположение пользователя в файловой системе оп- ределяется по команде pwd. • Содержимое каталога выводится по команде 1s. • Переход в другой каталог из текущего осуществляется по команде cd. • Команда pushd запоминает исходный каталог, а ко- манда popd возвращает в этот каталог. • Пользуйтесь относительными путями везде, где это возможно, поскольку они короче и проще запоминают- ся, чем абсолютные пути. Ведь намного удобнее вос- пользоваться относительным путем из текущего ката- лога, чем абсолютным путем из корневого каталога. • Не забывайте, что все эти свойства и команды действуют совместно. В Unix мелкие программы и свойства можно объединить в удобное инструментальное средство, вы- полняющее именно те функции, которые вам требуются. • Среды настольных систем упрощают перемещение по каталогам и файлам, автоматизируя многие рутинные операции и предоставляя удобный интерфейс для вы- полнения более сложных операций. Если в вашей сис- теме отсутствует среда KDE, ее можно установить или же воспользоваться другой средой настольной системы с аналогичными возможностями.
Урок 5 Методы перемещения по файловой системе Этот урок посвящен методам поиска файлов в Unix как из командной строки, так и в среде KDE. Итак, вы научились перемещаться по файловой системе Unix, сменяя каталоги и выводя их содержимое. А теперь вам предстоит освоить методы поиска данных в этой системе по запросу. Допустим, вам необходимы файлы, которые вы предполагаете обнаружить в системе, например старая элек- тронная таблица, которая потребовалась вновь. Если такой файл был создан пять лет назад, то вряд ли вы помните, где он хранится, но в то же время можете хотя бы частично вспомнить его имя. В таком случае вы можете призвать на помощь встроенную в Unix справочную систему. В этом уроке будет показано, как внутренние ресурсы Unix используются для быстрого поиска данных, чтобы не искать их вручную. Если вам известно имя файла, но вы не знаете, где он находится, для сбора требуемой информации можете прибег- нуть к помощи таких команд, как grep и find, вместо того чтобы искать данные по всей файловой системе посредством команд cd и 1s. После этого вам останется лишь перейти в нужный каталог и вывести его содержимое. Итак, начнем урок с рассмотрения команды find. Применение команды find Чтобы найти файл в системе Unix, нужно точно знать, где он находится. Если же критерий поиска не вполне определен, то сам поиск может усложниться. В любом случае для поиска файла в системе нужно хотя бы что-то знать о нем.
90 Урок 5 Для поиска файла по имени нужно знать хотя бы часть его имени. Чем точнее указывается имя искомого файла, тем бы- стрее он находится, поскольку в этом случае сужается об- ласть поиска. Вместо неизвестных символов в имени искомо- го файла и пути к нему можно использовать метасимволы. Такие возможности имеются и в любой другой операционной системе, включая Microsoft Windows. Метасимвол — это символ, сопоставляемый со многими другими символами. Так, метасимвол * сопоставляется с любым числом символов. Применение метасимволов более подробно будет рассмотрено на примерах, представленных на протяжении всей остальной части этой книги. Если имя файла неизвестно ни полностью, ни даже частич- но, значит, о файле нужно знать что-нибудь другое. В качестве критерия поиска можно использовать дату создания файла и его размер. На основании этих данных с помощью команды find можно получить результаты совпадения с предваритель- но сформированным запросом на поиск нужной информации. В следующем упражнении вы научитесь пользоваться коман- дой find для поиска файла по имени. 1. Прежде чем искать, нужно выяснить, что именно тре- буется найти. Следовательно, укажите имя файла или какой-нибудь другой критерий его поиска. Напомним, что в критерий поиска файла по имени можно вклю- чить метасимволы. 2. Выберите каталог для поиска. Если искать требуется по всей файловой системе, то начинать нужно с корне- вого каталога /. 3. Введите команду f ind <началъный каталог> name <имя_файла> -print. Если же конкретный файл нужно искать в корневом каталоге, то данная команда должна иметь следующий вид: >find / -name *.rpm -print /var/lib/YasST2/you/mnt/i386/update/9.2/deltas/kernel- source- 2.6.8-24_24.13. i586.delta.rpm
Методы перемещения по файловой системе 91 Файлы найдены. А что дальше? Если предложить Unix найти файл и не потребовать вывести результаты поиска, Unix может найти файл, но ничего не сообщить о нём, В большинстве дистри- бутивов Unix для вывода результатов поиска данных используется аргумент -print. В данном примере осуществляется поиск в корневом ката- логе файлов RPM, которые могут быть использованы для ус- тановки и обновления версий системы Unix или Linux. Такой метод поиска удобен в том случае, если заранее неизвестно, где искать данные, либо если требуется сэкономить время на выискивании файлов вручную. Обработка сообщений об ошибках Продолжая поиск файлов в системе Unix, можно столк- 'нуться с рядом таких мелких проблем, как ненайденный файл, сообщение об ошибке или затруднение, которое следует принять к сведению. В приведенном ниже при-'" • мере .возникает затруднение в связи с поиском на кон- кретном носителе CD-ROM и гибком диске. find: /media/cdrom: No medium found find: /media/floppy: No medium found Это типичная ошибка, сообщающая о том, что на ука- занных монтированных дисководах ничего не было найдено. К другим ошибкам поиска относятся проблемы дос- тупа к каталогам, для поиска в которых у пользовате- ля нет,полномочий, или же такие необычные затруд- нения, которые может разрешить только один из старших администраторов системы Unix. Поэтому в подобных случаях обращайтесь за помощью к сис- темному администратору.
92 Урок 5 Учитесь прерывать поиск i Выполняя поиск, будьте внимательны, чтобы не за- прашивать данные во всей файловой системе по слишком общему критерию. Ведь результатов такого поиска, возможно, придется ждать довольно долго. Если же поиск затянулся, его можно прервать, нажав комбинацию клавиш <Ctrl+C>. Если и это не помога- ет, обратитесь к системному администратору. Поиск файла по дате создания Иногда не удается вспомнить имя файла или его расшире- ние, но может быть известна дата его создания, которая слу- жит еще одним критерием поиска. Формировать такой кри- терий следует с учетом особенностей системы Unix, в которой обычно выполняется поиск файлов, созданных после указан- ной даты. Рассмотрим формирование критерия поиска файла по дате создания на примере следующей процедуры. 1. Определите, сколько дней назад был создан файл. 2. Выберите исходный каталог для поиска. 3. Введите следующую команду f ind с аргументом - с t ime: find <исходный каталог> -сtime <сколько дней файлу> -print. Например: >find -ctime 5 -print Эта команда указывает Unix искать в начальном каталоге пользователя файл, которому менее пяти дней, и вывести ре- зультаты поиска на экран. А теперь, когда вы знаете, как искать файлы по дате их создания, научитесь искать их по размеру. Поиск файла по размеру В предыдущих примерах команда find была использована для поиска файла в указанном месте и по дате его создания. Это два весьма полезных критерия поиска файлов, если неиз-
Методы перемещения по файловой системе 93 вестно их местоположение. Но зачем искать файл по его раз- меру? Не проще ли запомнить его имя? Как ни странно, файлы иногда приходится искать по их размерам. Характерным тому примером служат большие графические файлы, используемые в системе Unix для Web- дизайна. Такие файлы, как правило, намного больше файлов текстовых документов и электронных таблиц. Для поиска файла по размеру воспользуйтесь следующей процедурой. 1. Выберите искомый размер файла и найдите по команде find все файлы выбранного размера, а также файлы большего объема. 2. Выберите исходный каталог для поиска. 3. Введите следующую команду f ind с аргументом -size: find <исходный каталог> -size <k> -print Например: >find ~/ -size 1024k -print /home/rob/updates/testgraphic.jpg Приведенная выше команда find обнаружила графиче- ский файл, размер которого больше 1024 Кбайт. Что еще можно найти If Команда find обладает весьма развитыми средства- ми. Как следует из приведенных выше примеров, эта команда действует весьма эффективно вместе с ар- гументами -name, -ctime и -size. Но этим ее воз- можности не исчерпываются. Напомним, что истинная сила Unix— в командной ’ . строке. Для более углубленного изучения возможно- стей команды find обратитесь к оперативным стра- ницам руководства по этой команде (см. урок 2).
94 Урок 5 Поиск данных с помощью других команд Unix В предыдущем разделе данного урока вы ознакомились с командой find. Если уметь ею пользоваться, данные можно научиться искать весьма эффективно. Однако для поиска дан- ных имеются и другие команды, в том числе whereis и which. Команда whereis С помощью команды whereis осуществляется быстрый поиск данных в указанных каталогах. Так, если требуется найти файл с именем test в указанных каталогах, содержа- щих исходный код программ, двоичные файлы и оператив- ные страницы руководства, по данной команде будут найде- ны экземпляры test, встречающиеся в именах файлов. Ко- манда whereis осуществляет быстрый поиск файла по задан- ному критерию: >whereis test test: /usr/bin/test /usr/share/man/manl/test.1.gz /usr/share/man/manlp/test.Ip.gz Возможно, полученный результат — это не совсем то, что вы ищете, но все же команда whereis иногда бывает весьма полезной. Команда which Еще одной полезной командой является which. Эта команда помогает находить файлы, указанные в переменной среды PATH, которая уже упоминалась ранее в этой книге и будет до- полнительно рассматриваться в уроке 16. Это означает, что данные могут быть найдены по команде which лишь в тех мес- тах (каталогах), которые указаны в переменной среды PATH. Команду which нецелесообразно использовать в сценарии, но это совсем не означает, что она не приносит никакой поль- зы. С ее помощью можно, например, очень быстро найти файл для последующей правки, если точно известно, что его местоположение указано в переменной среды PATH.
Методы перемещения по файловой системе 95 Команда grep Команда grep — одна из наиболее часто используемых и из- вестных в Unix. Освоив эту команду, вы сможете искать файлы, содержащие отдельное слово или шаблон. Если уметь пользо- ваться командой grep, то в файле можно найти конкретную ин- формацию, например особый термин. Когда речь шла о поиске данных в системе Unix, этот по- иск сужался до таких разных критериев, как размер файла и дата его создания. Аналогичным образом поиск можно су- зить и по команде grep. Как будет показано ниже, grep является одной из самых развитых сервисных программ, встроенных в Unix. Данная программа подразделяется на отдельные команды: grep, egrep и fgrep. Эти три команды отличаются тем, что они способны обрабатывать регулярные выражения — шаблоны, сопоставляемые с разными текстовыми строками. Регуляр- ные выражения определяют текстовые шаблоны, которые могут быть использованы для поиска в файлах даже в том случае, если конкретное искомое слово (или фраза) неизвест- но. Для того чтобы воспользоваться командой grep, выпол- ните следующую процедуру. 1. Выберите слово или фразу для поиска. 2. Найдите файл для поиска. 3. Введите по приглашению командного процессора ко- манду: grep <шаблон для поиска> <один или несколько файлов для поиска> Например: >grep "test" *.html index.html:you passed the test В данном примере выполнен быстрый поиск слова test в любом файле, похожем на файл HTML. Команда grep со- служит вам еще большую службу при изучении регулярных выражений.
96 Урок 5 Использование средств поиска в KDE Если вы пользуетесь графическим пользовательским ин- терфейсом, то, скорее всего, вы работаете в среде KDE, в ко- торой также можно быстро находить нужные файлы. По команде Find Files (Найти файлы) из главного меню от- крывается одноименное диалоговое окно, элементы интер- фейса которого не требуют особых пояснений. Вместо ввода таких команд поиска, как find, whereis и which, в диалого- вом окне Find Files указывается, что, как и где нужно искать. В этом диалоговом окне имеются те же средства для поис- ка данных, что и у команд find и grep, только в KDE они доступны в более простой форме с помощью графического ин- терфейса. Еще раз подчеркнем, что предпочтительнее поль- зоваться командной строкой, которая помогает изучить осо- бенности применения отдельных команд. Чем лучше вы бу- дете знать команды, тем лучше вы подготовитесь к работе со сценариями, когда дойдете до урока 14. Итак, рассмотрим поиск файлов в системе Unix средства- ми KDE на примере следующей процедуры. 1. Определите файлы, которые вам нужно найти, а затем щелкните на пиктограмме кнопки К, расположенной на панели инструментов, чтобы вызвать главное меню KDE. 2. Выберите из главного меню команду Find Files. 3. Выберите критерий поиска на одной из трех следую- щих вкладок: Name and Location (Имя и местоположе- ние), Date Modified (Дата последнего изменения) и Ad- vanced (Дополнительно). Если вы не знаете точно, что именно следует искать, воспользуйтесь метасимволами (например, *. грш). 4. Щелкните на небольшой пиктограмме с увеличитель- ным стеклом, расположенной на панели инструментов диалогового окна Find Files, чтобы найти файлы, соот- ветствующие заданному критерию поиска.
Методы перемещения по файловой системе 97 Прежде чем начинать поиск, следует выяснить, какой файл требуется найти, а затем изменить, если нужно, место и критерий поиска. Используя командную строку или графиче- ский интерфейс KDE, данные можно искать по следующим критериям: дата создания или последнего изменения, размер, местоположение и имя файла. Как только файл будет найден, его можно выбрать и рабо- тать с ним либо завершить поиск. На этом рассмотрение ме- тодов поиска файлов в системе Unix завершается. < Поиск информации в сети Если ваша система Unix подключена к сети, вы можете получить доступ к другим системам для поиска нужной того запоминающего устройства, подключенного к ва- М 3 1 шей системе Unix, используя упомянутые выше коман- ды и инструментальные средства. Следует, однако, иметь в виду, что поиск в сети требует времени, по- скольку он может Ыйти за п еделы локально систе- мы. Если вы не знаете, где находятся искомые данные (в локальной системе или за ее пределами), обрати- тесь за помощью к системному администратору. > Прежде чем переходить к следующему уроку, повторите весь пройденный ранее материал. В данной книге материал последующих уроков построен на материале предыдущих, поэтому разрешите любые неясные вопросы, прежде чем дви- гаться дальше. Для освоения Unix очень полезно повторение пройденного. Ведь для того чтобы по-настоящему знать Unix, нужно выучить команды этой системы назубок. Без этого вы вряд сможете приобрести навыки создания сценариев и тем самым поразить своими знаниями окружающих. В следую- щем уроке будут рассмотрены основные функции сопровож- дения файловой системы, включая создание и удаление фай- лов и каталогов.
98 Урок 5 Резюме В этом уроке были представлены основные методы поиска файлов и каталогов в системе Unix, а также различные коман- ды, используемые для этой цели. Кроме того, здесь было пока- зано, как искать конкретное содержимое файлов по команде grep. В конце урока были рассмотрены средства поиска фай- лов в среде KDE. Уделите время освоению команд find и grep, чтобы убедиться, насколько они полезны для поиска данных в системе Unix. Мы показали лишь малую часть того, на что спо- собна команда grep, если освоить ее как следует, для чего ре- комендуется обратиться к соответствующим оперативным страницам руководства. Теперь, когда вам известны эффек- тивные средства поиска информации в Unix, вы уже не поте- ряетесь в этой системе, как, впрочем, и ваша информация. • Команда find. Осуществляет поиск конкретной ин- формации во всей файловой системе Unix либо в от- дельном каталоге по самым разным критериям. В этом уроке были представлены примеры поиска файлов по имени, дате создания и размеру. • Команда whereis. Служит для поиска файла програм- мы, ее исходного кода или оперативных страниц руко- водства по ней. В результате поиска в заданных общих местах расположения файлов возвращаются пути ко всем найденным файлам. • Команда which. Результат поиска по этой команде за- висит от значения переменной среды PATH. Эта команда осуществляет поиск файла с конкретным именем по путям, указанным в данной переменной. • Команды grep (grер / egrep /fgrep). Это набор ко- манд для эффективного поиска содержимого файлов по указанному слову или шаблону. Возможности ко- манды grep в сочетании с регулярными выражениями (см. урок 13) становятся практически безграничными. • Утилита Find. В среде KDE имеется простой и удобный интерфейс, выполняющий многие функции команд find и grep.
Урок 6 Работа в командной строке Этот урок является продолжением предыдущего урока. Он посвящен созданию и удалению данных в системе Unix. Мы завершили предыдущий урок рассмотрением средст в поиска файлов в среде KDE. В этом уроке мы уделим основ- ное внимание командной строке и покажем, как управлять данными (файлами и каталогами), эффективно используя возможности командной строки Unix. Кроме того, мы рас- смотрим способы создания и удаления каталогов. Подобные операции требуется выполнять по разным при- чинам. Если приходится работать с очень большими объема- ми данных, то, организовав их в каталоги с подходящими именами, можно сэкономить немало времени на поиске дан- ных. С другой стороны, иногда возникает потребность создать каталог, поместить в него данные и отправить их кому- нибудь в организованном виде. Кроме того, пустые каталоги приходится время от времени удалять ради экономии свобод- ного места и, опять же, для того, чтобы содержать данные в организованном порядке. Не спешите удалять нужные дойные л:.\ \ • ./ . < < ' .. л , '-'g Сйегей! Ui|x чвоспр^ указания пользователя буквалЁнр, поэтому будьте очень внимательны, вводят конкретную команду. Прежде чем использовать лю- б.ую из команд, рассматриваемых в этом уроке, при- мите ксведению следующее.
100 Урок 6 Если вы изучаете Unix на работе, не практикуйтесь на важных для вас и вашей организации данных. Попроси- те разрешения на работу в Unix, если боитесь сделать ошибку и потерять важные данные» В домашних усло- виях вы можете делать в системе все что угодно, если усанов еее с юч те одл учебных целей. Управлять файлами из командной строки нетрудно. В сле- дующем разделе данного урока будут представлены основы работы с файлами и папками в Unix из командной строки. Работа с файлами из командной строки Unix С инструментальными средствами Unix удобнее всего ра- ботать из командной строки. В этом отношении очень полез- ны команды touch и tm, выполняющие различные скрытые от пользователя функции таким же образом, как и команда where is, рассмотренная в предыдущем уроке. Файлы можно создавать и править в Unix самыми разными способами. Командная строка служит в качестве основного интерфей- са с файловой системой Unix, а также в качестве главного ин- струментального средства для создания, удаления и реорга- низации файлов. В этом уроке вы научитесь манипулировать данными в системе Unix с помощью команды touch, а также команд, позволяющих удалять вновь созданные данные. Команда touch Новый пустой файл довольно просто создается в Unix с по- мощью команды touch. Эта команда служит для обновления времени последнего изменения файла текущим временем. Та- кая потребность возникает нечасто, но о том, что это можно сделать, нужно все же знать. Как правило, команда touch ис- пользуется с одной конкретной целью: для резервного копиро- вания данных и их восстановления в аварийной ситуации. Ре- зервным копированием и восстановлением данных занимается администратор системы Unix. Существуют разные виды и ме-
Работа в командной строке 101 тоды резервного копирования и восстановления данных. Один из них называется инкрементным резервированием. Возмож- но, вам и не придется заниматься резервным копированием данных в Unix, но эта процедура, без сомнения, будет оказы- вать влияние на вашу работу в данной системе. В большинстве организаций принимаются специальные меры для резервного копирования и защиты наиболее ценных данных. Команда touch может быть использована для инкремент- ного резервирования, помогая установить факт завершения резервного копирования данных. Даже если данные вообще не менялись, с помощью команды touch можно изменить да- ту их последнего изменения, т.е. сымитировать это измене- ние в момент обращения к данным по команде touch. Это, в частности, удобно для работы с резервными копиями, хотя данной команде можно найти и другое применение в Unix. а Откуда взялся это овый файл? Выполняя команд touch, можно случайно создать '< новый фай , есл не указать имя файла, который действительно существует в системе Unix. Так, если указать в команде touch файл unixmaster, который на самом деле называется unixmasters, в текущем .. , каталоге будет создан новый файл unixmaster, что можно проверить с помощью команд pwd и is. А теперь покажем, как пользоваться командой touch, на конкретном примере. В данном примере демонстрируется изменение даты последнего изменения файла и создание но- вого файла с помощью команды touch. Для этого выполните следующую процедуру. 1. Определите имя одного или нескольких файлов, кото- рые требуется обновить или создать. 2. Выдайте команду touch <имя_файла>. Например, введите следующую команду: > touch backupfile Если файл резервной копии уже существует, дата его по- следнего изменения будет изменена в соответствии с текущим
102 Урок 6 временем. Если же такой файл не существует, он появится в системе как пустой файл с датой последнего изменения, об- новленной текущим временем. Как видите, это делается дос- таточно просто. Команду touch можно использовать и в других целях. Ко- гда вы освоите Unix в достаточной степени, чтобы писать сце- нарии командного процессора, то найдете команду touch весь- ма полезной для создания флаговых файлов, обеспечивающих взаимодействие сценариев друг с другом (см. урок 14). Пользуйтесь временем правильно If Для работы в Unix или любой другой операционной системе необходимо правильно установить систем- ное время. Как правило, это делается системным ад- / министратором централизованно, а не локально. Ес- ли система Unix подключена к сети, то правильное время может быть извлечено из сети. А если она не подключена к сети, то правильное время, скорее все- го, получается из локальной системы. Поэтому обра- щайте внимание на то, какое время показывает сис- тема Unix и откуда оно берется. / Установка правильного времени в системе Unix спо- собствует не только управлен ю файлами, но и реги- страциии безопасности системы/ Удаление файлов по команде rm Если по команде touch в системе Unix был случайно соз- дан файл, его, скорее всего, придется удалить. В этом разделе будет показано, как файлы удаляются из системы Unix. В частности, ненужные файлы удаляются из системы Unix по команде rm. Следует, однако, иметь в виду, что данной ко- мандой нужно правильно пользоваться, иначе можно удалить из системы не те данные. Поэтому будьте особенно внима- тельны, ведь это не среда Microsoft Windows, где проверяется каждый шаг пользователя, когда он удаляет файл. Для уда- ления файла из системы Unix по команде rm придерживай- тесь следующей процедуры.
Работа в командной строке 103 1. Определите файлы, которые требуется удалить. 2. Выдайте команду rm <имя_файла>. Как видите, пользоваться командой rm так же просто, как и командой touch. Нужно лишь найти файл для удаления и указать его имя. Удаление нескольких файлов < Для того чтобы удалить несколько файлов, укажите их имена по очереди, отделив друг от друга пробелом. Аналогичным образом можно ввести в список или удалить из списка несколько файлов, над которым нужно выполнить определенные действия (в данном случае удалить из системы). Ниже приведен пример применения команды rm: rm newfile2 В ответ на команду rm для удаления указанного файла может появиться следующий запрос: remove newfile (y/n)? (удалить файл newfile (да/нет)?) Кроме того, команду rm можно применять с несколькими ключами, назначение которых поясняется на оперативных страницах руководства по данной команде. Команда rm имеет несколько полезных ключей, в том чис- ле-!, -f и -г. Так, ключ -i означает диалоговый режим уда- ления, в котором пользователь должен подтвердить удаление файла. Этот ключ обеспечивает столь знакомую для пользо- вателей Microsoft Windows страховочную проверку, которая требуется системе для того, чтобы убедиться в серьезности намерений пользователя удалить файл. Таким образом, диалоговый режим команды rm— это все- го лишь способ для системы Unix лишний раз убедиться в том, что вы желаете удалить указанные данные. И если вы действительно желаете их удалить, нажмите клавишу <у>. При этом произойдет возврат к приглашению командного процессора, а указанные данные будут удалены из системы. Диалоговый режим обычно настраивается администрато- ром системы Unix, если только это не система с достаточно высокой степенью специальной настройки.
104 Урок 6 Следующий ключ -f команды rm служит для удаления файлов с определенными правами на доступ. Это дает воз- можность удалять файлы, не обращая внимания на права доступа к ним. Напомним, что при создании файлов могут быть установлены определенные права на доступ к этим фай- лам (даже такие, которые запрещают их читать). Но иногда возникает потребность удалить файл, не имея прав на его чтение или запись. Что означает тёрмин £‘рекурсивный” "Ж В этом уроке рассматриваются команды, которые мо- гут выполнять рекурсивные действия, если применя- ются с определенным ключом. А что это означает? Что каса ггся управления файлами в Unix и структуры « каталогов, где хранятся файлы прочие данные, то термин “рекурсивный” означает действие, выпол- няемое от начала и до конца каталога, включая все подкаталоги, до тех пор, пока еще можно обнаружить какие-то данные. Таким образом, рекурсивные действия имеют по- вторный и исчерпывающий характер. Поиск данных по всем каталогам будет продолжаться до полного завершения операции. г И наконец, рассмотрим ключ -г команды rm, который оз- начает рекурсивный режим. В этом режиме удаляется все со- держимое указанного каталога, включая и подкаталоги. По- этому пользуйтесь командой rm с ключом -г очень осторожно. Семь раз проверь, один раз удали < цйЭ и д рекурсивном режиме командБ1гт можно дрвольно| быстро удалить большой объем данных. Поэтому в отсутствие резервной копии перейдите в каталог, который вы собираетесь удалить, и просмотрите его содержимое по команде 1s. Итак, вы уже знаете, как удаляются файлы. А теперь рас- смотрим еще один важный аспект управления файлами в Unix: создание каталогов.
Работа в командной строке 105 Команда mkdir Как упоминалось выше, каталоги служат, в основном, для хранения данных в организованном порядке. Вероятно, вам уже приходилось иметь дело с каталогами, содержащими сотни фай- лов. При такой организации файловой системы в ней нелегко бу- дет что-то найти, если не помнить имя каждого файла. Каталог Unix подобен телефонному справочнику, который составлен в алфавитном порядке и по категориям для быстро- го поиска номеров телефонов частных и общественных орга- низаций, коммунальных и административных служб. Анало- гичным образом можно организовать данные и в Unix, ис- пользуя каталоги. В этом разделе данного урока вы научитесь создавать каталоги. Для создания каталога выполните следующую процедуру. 1. Выберите структуру организации каталогов и присвой- те имя своему новому каталогу. 2. Выдайте команду mkdir <имя_каталога>. Например: > mkdir test По этой команде создается новый каталог test, который располагается в текущем каталоге. Для того чтобы опреде- лить текущий каталог, выдайте сначала команду pwd, а затем создайте новый каталог по команде mkdir и просмотрите со- держимое текущего каталога по команде 1s. А теперь, когда вы научились создавать каталоги, вам нужно научиться уда- лять их из системы Unix. Команда rmdir По команде rmdir удаляется пустой каталог. Это означает, что удаляемый каталог не должен вообще содержать данные. Для удаления каталога выполните следующую процедуру. 1. Определите один или несколько каталогов, от которых нужно избавиться. 2. Выдайте команду rmdir <имя_каталога>.
106 Урок 6 Убить сразу нескольких зайцев Не забывайте, что одновременно можно удалить не- сколько каталогов, указав их в той последовательно- сти, в какой они должны удаляться, как и в остальных командах управления файлами. Так, если требуется удалить каталоги test и testl, это можно сделать С помощью одной команды: rmdir test testl. В следующем примере по команде rmdir удаляется ката- лог test, созданный в предыдущем примере: rmdir test Как видите, это делается достаточно просто. Если теперь вывести содержимое текущего каталога, в нем уже не ока- жется каталога test, поскольку он был удален. Если у вас возникнут затруднения с удалением каталога из системы Unix, сделайте его сначала пустым. Иногда каталог удобно “опорожнить” с помощью команды rm *, а затем удалить его. Такое применение метасимвола “*” полезно запомнить на бу- дущее, поскольку он часто используется в данной команде во время работы в Unix (подробнее о метасимволах и регуляр- ных выражениях речь идет в уроке 13). А теперь вам нужно освоить рассмотренные выше опера- ции создания и удаления файлов и каталогов в наиболее ти- пичных и полезных комбинациях, а также получить ответы на следующие часто задаваемые вопросы: “Почему нужно сделать каталог пустым перед его удалением?” и “Можно ли удалить каталог, содержащий файлы?”. Конечно, можно, но с помощью рекурсивной команды rm -г. Та же самая команда, но рекурсивная Рекурсивная команда удаления очень похожа на обыч- ную команду удаления файлов, только она действует иначе, если применяется в другом контексте (т.е. в кон- тексте каталогов, а не файлов). В этом случае она удаля- ет все содержимое указанного каталога.
Работа в командной строке 107 Команда rm -г Файлы и каталоги можно удалить одновременно с помо- щью команды пл -г, указав в ней каталог, а не файл. Ведь команда rmdir удаляет только пустые каталоги. Следова- тельно, нужно найти способ удаления каталога и его содер- жимого. Именно это и позволяет сделать команда rm в рекур- сивном режиме. Для удаления каталога и всего, что в нем содержится, вы- полните следующую процедуру. 1. Найдите каталог, который требуется удалить. 2. Выдайте команду rm -г <имя_каталога>. При вводе данной команды можно указать не только сам удаляемый каталог, но и все, что в него входит, как в сле- дующем примере: > rm /priv/home/rob/test2 Если вы попытаетесь удалить каталог, в котором находи- тесь в данный момент, то можете получить в ответ сообщение об ошибке. Это положение нетрудно исправить, перейдя в за- ранее известный, надежный каталог (например, в начальный каталог, обозначаемый тильдой). Так, для возврата в началь- ный каталог достаточно ввести команду cd ~ /. Только представьте, как далеко вы уже продвинулись в изу- чении Unix! Теперь вы умеете не только перемещаться по файло- вой системе Unix из командной строки, но и создавать данные в этой системе и удалять их из нее, а также постепенно связывать отдельные команды в единый процесс. Далее вам предстоит нау- читься копировать файлы из одного места в другое. Команда ср Для создания копии файла служит команда ср. Эта ко- манда позволяет скопировать один файл в новое место или же несколько файлов в один целевой каталог. Подобную опера- цию приходится выполнять над файлами неоднократно во время работы в Unix. В частности, с помощью команды ср можно довольно быстро создать резервную копию файла. Для создания копии файла по команде ср выполните сле- дующую процедуру.
108 Урок 6 1. Определите сначала имя исходного файла, а затем имя целевого файла для копирования. 2. Выдайте команду ср <исходный файл> сцелевой файл>. Иногда в отдельный каталог приходится отправлять не один, а десяток файлов. В таком случае при выдаче команды ср нужно указать список исходных файлов, копируемых в один каталог, как в следующем примере: ср <исходный файл1> <исходный файл2> [ сцелевой каталог> Для того чтобы посмотреть, как копирование файлов реа- лизуется на практике, введите следующую команду: > ср testfile /priv/home/rob/storage В данном примере файл test file копируется из текущего каталога и помещается в каталог /priv/home/rob/storage. Подобная операция обычно выполняется для пересылки фай- ла из рабочей среды в конкретное место хранения (например, в начальный каталог) для соблюдения принятого порядка ор- ганизации данных в системе Unix. В каталоге для хранения файлов могут также находиться подкаталоги для хранения электронных таблиц, документов и HTML-страниц. Это об- щепринятая практика, которой вы можете придерживаться в своей рабочей среде для хранения данных в организованном порядке. А теперь расширим приведенный выше пример, отправив в каталог HTML несколько файлов по следующей команде: > ср /priv/home/rob/index.htm /priv/home/rob/test/banner.htm links.htm /priv/home/rob/storage/HTML В данном примере применения команды ср системе Unix предписывается скопировать файл index.htm из каталога /priv/home/rob/index.htm, в котором он был сохранен в последний раз, а также файлы banner.htm и links.htm и поместить их в каталог /priv/home/rob/storage/HTML. Для дальнейшего изучения команды копирования файлов обратитесь к оперативным страницам руководства по данной команде. Далее вам предстоит научиться копировать каталоги.
Работа в командной строке 109 Команда ср -г Итак, вы овладели основами копирования файлов. А как насчет каталогов? Рекурсивный режим, рассмотренный ранее в этом уроке, может быть эффективно использован и для ко- пирования многих каталогов, подкаталогов и файлов в вы- бранный целевой каталог. Для копирования каталогов в команде ср также преду- смотрен рекурсивный режим. Так, используя синтаксис ср г данной команды, каждый исходный каталог (и входящие в него файлы) можно скопировать в указанный целевой ката- лог, придерживаясь следующей процедуры. 1. Укажите данные, которые должны быть скопированы в целевой каталог. 2. Выдайте команду ср -г <исходный каталог1> <исходный каталог2> [ ] сцелевой каталог>. По этой команде происходит поочередный переход в ука- занные целевые каталоги и рекурсивное копирование данных в целевой каталог, как в следующем примере: > ср -г /priv/home/rob/storage/HTML /etc/HTMLLAB Эта команда копирует каталог /ргiv/home/гоЬ/storage/ HTML и его содержимое в каталог /etc/HTMLLAB. Благодаря рекурсивному режиму каталог HTML и входящий в него под- каталог, например, IMAGES копируется в целевой каталог /etc/HTMLLAB. Используя рекурсивный режим команды ср, вы можете теперь копировать и каталоги. Перейдем к перемещению файлов и каталогов. Команда mv Перемещение файлов отличается от их копирования. С одной стороны, при копировании по команде ср источник данных остается на прежнем месте, а копия создается в дру- гом месте или же в том же самом месте, но под другим име- нем. С другой стороны, при перемещении по команде mv файл или каталог перемещается или переименовывается в зависи- мости от указанного места его назначения, а имя файла опре- деляет порядок применения данной команды.
110 Урок 6 Рассмотрим два примера применения команды mv. Для перемещения файла выполните следующую процедуру. 1. Найдите файл, который требуется переместить по имени. В данном случае требуется переместить исходный файл. 2. Выдайте команду mv <исходный файл> <каталог>. В данном примере применения команды mv указанный файл перемещается в тот каталог, в котором он должен в ито- ге оказаться. Эту же команду можно использовать и для пе- реименования файла, например, в том же самом каталоге: mv <текущее имя файла> <новое имя файла> А почему в одном и том же каталоге можно только пере- именовывать файл, но нельзя перемещать его? Если бы это было возможно, в каталоге оказались бы два одинаковых эк- земпляра файла, что не допускается ни в Unix, ни в любой другой операционной системе. Для нормального функциони- рования файловой системы наличие дублирующих друг друга и совершенно неразличимых элементов данных в одном и том же исходном месте не только недопустимо, но и бесполезно. Ведь если отредактировать один из них и сохранить, то как затем отличить их друг от друга? Разве что по размеру? Аналогичным образом можно перемещать и каталоги, указав их вместо имен файлов. Куда подевался файл Перемещенные данные можно легко потер ть. По- этому, выполняя перемещение данных, тщательно продумывайте свои действия, чтобы случайно не на- рушить работу Web-сайта, службы или приложения. В этом отношение копирование — более надежная операция, хотя она п иводит к накоплению на жестком диске лишних данн ix. Если не продумывать свои дей- ствия тщательно, то можно переполнить запоминаю- щее устройство лишними скопированными данными или же вывести систему из строя, переместив данные, которые следовало бы скопировать. Будьте внима- ельны! Но если вы соверш те ошибку, обрат тесь за помощью к администратору сис емы Unix или же вос- пользуйтесь проверенным на практ ке ко андами, которые помогут вам найти правильное решение.
Работа в командной строке 111 А теперь посмотрим, как перемещение файлов по команде mv реализуется на практике: > mv /priv/home/rob/storage/HTML/index.htm /etc/HTMLAB В данном примере исходный файл (index.htm) перемеща- ется в каталог etc/HTMLAB. Как видите, перемещение файлов выполняется достаточно просто. Но что если требуется пере- местить несколько исходных файлов по месту назначения? Как и в команде ср, исходные файлы указываются в команде mv по очереди. Например, для перемещения нескольких фай- лов в целевой каталог выполните следующее: > mv /priv/home/rob/storage/HTML/index.htm /priv/home/rob/storage/HTML/GRAPHICS/bl.jpg b2.jpg /etc/HTMLLAB По этой команде файл index.htm из каталога /HTML пере- мещается вместе с файлами изображений формата JPEG в ка- талог /etc/HTMLLAB. Прежде чем переходить к завершающему разделу данного урока, укажем на одно ограничение команды mv, о котором вам следует знать. В предыдущем уроке упоминалось о том, что данные могут храниться как в локальной системе, так и в уда- ленной системе, доступной из сети. В последнем случае требу- ется удаленный доступ к данным. Однако при удаленном дос- тупе к данным команда mv не в состоянии перемещать каталоги с одного физического устройства на другое. Для преодоления этого ограничения команды mv можно, в частности, скопиро- вать файл из локальной системы в удаленную, а затем удалить его оригинал. Все команды для выполнения этой операции вам уже известны. И в завершение данного урока вам предстоит научиться соз- давать связи, которые уже упоминались в уроке 4 при поясне- нии результатов вывода содержимого каталога по команде 1s. Команда In При выводе содержимого каталога по команде 1s могут указываться связи с другими файлами. Такие связи создают- ся с помощью команды In. Команда In служит для формирования псевдонимов и свя- зей с другими файлами в системе Unix. Если создать управ- ляемые связи с другими файлами, то при выводе содержимо-
112 Урок 6 го каталога по команде 1s исходный файл будет появляться в разных местах файловой системы под разными именами. Практическое применение данной команды состоит в том, что она позволяет связывать исходный файл, имя которого постоянно меняется, с таким именем, которое может запом- нить каждый пользователь. Например, файл sales_report (отчет от продажах), к которому постоянно обращаются все агенты по сбыту, может постоянно обновляться секретарем, связывающим этот файл с целым рядом устаревших файлов. Агентам по сбыту нужно запомнить имя лишь одного, а не многих файлов, чтобы не искать и не запрашивать имя нуж- ного им файла. Благодаря этому упрощается работа в Unix. Для создания связи выполните следующую процедуру. 1. Укажите конкретный файл, который нужно связать с другим файлом. Команда In создаст связь между име- нем исходного файла и альтернативным именем для доступа к этому файлу. Для этого нужно знать перво- начальное имя файла, а также имя, по которому следу- ет обращаться к нему. 2. Выдайте команду In -s <настоящее имя файла> <альтернативное имя файла>. 3. Выдайте команду Is -1 для просмотра длинного спи- ска файлов в каталоге и созданной только что связи. Создавая связь по команде In, нужно соблюдать точность, чтобы не указать по ошибке имя несуществующего файла, иначе такая связь окажется бесполезной, поскольку она ни с чем не связывает. Следовательно, проверьте лишний раз пер- воначальное имя исходного файла и укажите его без ошибок при создании связи с этим файлом. Еще одно осложнение при связывании файлов может воз- никнуть в том случае, если забыть указать ключ -sb команде In. С помощью этого ключа указывается гибкая, а не жесткая связь. Но поскольку жесткие связи обычно не применяются конечными пользователями Unix, мы не будем углубляться в значение этого понятия. Его объяснение выходит за рамки данной книги, адресованной тем, кто лишь начинает изучать Unix. С другой стороны, если этот вопрос вас интересует, вы можете изучить его самостоятельно. Как уже не раз упомина-
Работа в командной строке 113 лось в этой книге, для освоения Unix нужно постоянно учить- ся и практиковаться. Ниже приведен пример создания связи по команде In: > In -s /priv/home/rob/storage/HTML/123456789ABC.htm /etc/ HTMLLAB/easy В данном примере создается связь easy в каталоге HTMLLAB с файлом HTML, который находится в каталоге HTML и имеет длинное и не очень удобное для запоминания имя. Теперь вам должна быть понятна не только последователь- ность, но и практическая причина создания связи. И в завер- шение данного урока уделим внимание правильному использо- ванию относительных и абсолютных путей. Выбор правильного пути В уроке 5 были рассмотрены отличия между абсолютным и относительным путями. Управляя файлами с помощью ко- манд ср и mv, вы можете указывать разные пути. Что же ка- сается рекомендаций относительно оптимального выбора пу- ти к файлам, то на эту тему можно написать еще 50 таких книг, как эта. Но самое главное — не забывать о том, что имя файла может быть указано в качестве аргумента команды как по абсолютно- му, так и по относительному пути. Это обстоятельство нужно принимать во внимание при вводе команд. Ведь команда может быть выполнена неверно, потому что в ней неправильно указаны пути к файлам. Так, наличие или отсутствие каталога / в отно- сительном и абсолютном путях может стать причиной неверного выполнения команды или появления сообщения об ошибке. В таком случае пройдите еще раз материал предыдущего урока, посвященный путям к файлам, чтобы применить полученные знания в процессе изучения и освоения команд на практике. Резюме В этом уроке вы приобрели дополнительные навыки управления файлами, заложив прочное основание для изуче- ния материала ряда последующих уроков, в которых вы нау- читесь читать и править файлы.
114 Урок 6 На данном этапе вы уже должны уметь входить в систему Unix и управлять данными, хранящимися в ней локально, а также перемещать, копировать и удалять файлы и каталоги. В следующем уроке вы научитесь читать файлы и продол- жите совершенствовать свои навыки управления файловой системой и перемещения по ней, чтобы работать в Unix более продуктивно. Итак, подведем краткий итог. В этом уроке вы изучили ряд следующих полезных команд управления данными, хра- нящимися в системе. • Команда touch. Устанавливает дату последнего изме- нения файла в соответствии с текущим временем. След- ствием этого является создание новых пустых файлов, если таковые требуются. • Команда пл. Удаляет файлы. Если вы не совсем увере- ны в своих действиях, применяйте команду пл с клю- чом -i для большей надежности. Ведь если команда пл используется в рекурсивном, недиалоговом режиме, она может стереть все данные на диске. • Команда ср. Копирует один или более файлов. Проще говоря, если источником копирования является один файл, то и местом назначения должен быть один файл, а если копируется несколько файлов, то местом их на- значения должно быть нечто, допускающее хранение многих файлов (например, каталог). При желании в каталог можно также скопировать единственный файл. • Команда mv. Действует почти так же, как и команда ср, только переименовывает или перемещает файлы. Коман- да mv не позволяет перемещать каталоги с одного физиче- ского устройства на другое, поэтому принятая в Unix ап- паратная абстракция на эту команду не распространяется. В таком случае можно воспользоваться командой ср. • Команда In. Создает альтернативные имена, по кото- рым можно получать доступ к файлу или каталогу. Это удобно в том случае, если один файл должен появлять- ся в разных местах либо информация, поступающая из разных источников и в разное время, должна быть дос- тупна под именем одного и того же файла.
Урок 7 Чтение файлов Этот урок посвящен чтению файлов, находящихся в сис- теме Unix. Продолжим рассмотрение методов управления файлами, основываясь на понятиях, уже известных из предыдущих уро- ков. В этом уроке будет представлен ряд полезных команд для чтения содержимого файлов. Это интересно хотя бы потому, что, освоив управление файлами в Unix, вы, возможно, навсе- гда останетесь приверженцем данной системы! В Unix большие файлы можно читать по частям. Так, если вам приходится ка- ждое утро читать журнал безопасности, который ведется в сис- теме Unix, то с помощью специальной команды вы можете просмотреть лишь последние записи в этом журнале. Итак, вы научились управлять файлами. Это было самое трудное. А теперь вам нужно научиться читать данные, хра- нящиеся в системе Unix, не обращаясь к инструментальному средству редактирования текста с графическим интерфейсом или текстовому редактору. В этом уроке представлен ряд по- лезных инструментальных средств, которыми можно пользо- ваться весьма оперативно, а значит, и работать продуктивно в Unix. Вместо того чтобы тратить время на взаимодействие с громоздким графическим интерфейсом, вам достаточно вве- сти такую короткую команду, как cat, чтобы получить в счи- танные секунды нужную информацию. Команда cat Как правило, изучение Unix начинается с команды cat. Название этой команды означает не домашнее животное, а сцепление (конкатенацию) указываемых элементов, в еди- ное целое. Команда cat обеспечивает самый простой способ просмотра содержимого файлов.
116 Урок 7 ^то означает“сцепление* • •' |®|йВ Многие термины в вычислительной технике трудно усваиваются, поскольку они имеют сложное опреде- ление, подчас составленное из первых букв отдель- ных слов. В данном случае термин сцепление означа- ет не что иное, как объединение отдельных элемен- тов для повышения эффективности. ... Сцепление применяется в Unix, поскольку в этой сис- теме можно составить единый файл из двух файлов, последовательно расположенных в одной строке. Элементы данных (строки) и содержимое (файлы) могут быть объединены в единый элемент или файл. В этом отношении сцепление дает возможность объ- единять отдельные элементы для простоты их ис- пользования. ..... Команда cat является побочным результатом данно- го определения. Она позволяет сцеплять вместе все данные, указанные, как единое целое. А теперь, когда даны определение понятия “сцепление” и назначение команды cat, покажем, как она действует. В этом уроке она будет рассматриваться в свете чтения фай- лов, а в уроке 12 — с точки зрения ввода-вывода. Для вывода содержимого файлов достаточно указать в ко- манде cat те файлы, которые требуется просмотреть. Если вы хотите убедиться в истинной силе Unix, выведите по команде cat, например, содержимое файла изображения bl.jpg. Unix откроет этот файл и выведет его содержимое на экран, хотя и в неудобном для чтения, а порой и непонятном виде. Этот пример лишний раз показывает, что Unix делает бук- вально то, что от нее требует пользователь! Примером тому служит файл hosts, находящийся в ката- логе /etc каждой системы. Ниже приведен лишь небольшой фрагмент содержимого этого файла, поскольку он довольно большой. Но именно в этом и заключается одно из главных преимуществ команды cat. Достаточно лишь указать коман- ду cat и каталог (если это не текущий каталог) либо файл.
Чтение файлов 117 >cat hosts # # hosts В этом файле описан ряд преобразований имен хостов в адреса _____________________ # для подсистемы TCP/IP. Он используется, # в основном, во время начальной загрузки системы, когда серверы доменных имен не работают. # В небольших системах этот файл может быть использован вместо именованного сервера доменных имен. # Синтаксис: # IP-адрес Полное Уточненное Имя Хоста Сокращенное Имя Хоста # 127.0.0.1 localhost (Вывод удален) В приведенном выше примере команда cat была исполь- зована для просмотра содержимого файла hosts в текущем каталоге /etc. В данном случае выведен лишь один фраг- мент, поскольку длинный выходной поток был удален. А ос- тальное содержимое данного файла может быть просмотрено с помощью других команд, рассматриваемых далее в этой главе. Таким образом, с помощью команды cat можно до- вольно просто и быстро просматривать содержимое файлов. Очень важно знать, что позволяет и чего не позволяет де- лать команда cat. Эта команда возвращает сообщение об ошибке, если попытаться просмотреть с ее помощью каталог. В этом сообщении указывается, что просмотр каталогов по команде cat не допускается. Следовательно, команда cat предназначена для просмотра содержимого файлов, а не ка- талогов. Для этой цели можно также указать имена несколь- ких файлов. Но по такому запросу выводится длинный спи- сок сцепленных элементов данных. Указывайте в команде cat только имена файлов, но не каталоги, иначе запрос не достигнет цели. Кроме того, следует проверить правильность указания метасимволов в запросах по команде cat. Так, если требуется найти все файлы в каталоге /etc, где могут нахо- диться файлы hosts, для этой цели следует сузить поиск до файла, который нужно просмотреть по команде cat. С помо- щью команды cat можно также просматривать несколько файлов.
118 Урок 7 Конечно, по команде cat вы можете одновременно про- смотреть содержимое всех файлов, но результаты такого за- проса окажутся довольно объемными и будут выведены на экран так быстро, что вы даже не сумете уловить первое предложение. А теперь покажем, как просматривать резуль- тат запроса полностью, чтобы ничего не упустить. Сначала нужно найти файлы для просмотра: >find host* hosts hosts.conf hosts.allow hosts.deny В данном запросе указан критерий поиска host*, в кото- ром используется метасимвол, поэтому на экран выводятся все файлы, имена которых начинаются со слова host. Далее файлы объединяются для просмотра их содержимого по ко- манде cat: >cat host* В итоге на экран выводится больше информации, чем можно прочитать. Поэтому для более удобного просмотра и чтения больших объемов данных ниже будут рассмотрены дополнительные средства, в частности — пейджеры, замед- ляющие вывод данных на экран и тем самым облегчающие их чтение. Повышение удобочитаемости выводимых данных с помощью пейджеров Команда cat вполне подходит для оперативного вывода краткой информации, но как быть с большими файлами, со- держимое которых прокручивается настолько быстро, что его невозможно прочитать? Ведь если содержимое файла не по- мещается на экране, что, как правило и бывает, от такого вы- вода на экран не будет никакой пользы, если нужно посмот-
Чтение файлов 119 реть только начало файла. Для замедления вывода данных по команде cat до такой степени, чтобы их удобно было читать, служат пейджеры, разбивающие выводимую информацию на страницы. В Unix для этой цели служат новые команды more и less. Некоторые пользователи часто называют их общим термином “пейджер”. Рассмотрим вкратце назначение и функ- ции этих инструментальных средств командной строки. Команда more Для того чтобы воспользоваться командой more, доста- точно ввести ее вместе с именем одного или нескольких фай- лов, содержимое которых требуется отобразить. Эта команда действует так же, как и команда cat. Поэтому самое глав- ное — помнить, когда нужно применять одну из этих команд вместо другой. Покажем команду more в действии на сле- дующем примере: >more hosts.allow (Output removed) Для обоснованного применения этой команды требуется достаточно большой файл, содержимое которого не помеща- ется на экране. Если ввести команду неверно или указать не- достаточно большой файл, выполнение команды more не при- несет никакой пользы. Если же команда more вводится с длинным файлом, на эк- ране терминала сразу же происходят изменения. Как резуль- тат действия данной команды в левом нижнем углу экрана появляется сообщение: --More--(53%) Величина 53% — это количество информации, уже выве- денной на экран, а остальное содержимое файла еще предсто- ит просмотреть. Таким образом, по величине, указываемой в процентах, можно судить о том, сколько страниц просмат- ривается. Так, если указано 25%, для просмотра выведено три или четыре страницы. Для перехода к следующей странице достаточно нажать клавишу пробела, а для выхода из команды — клавишу <q> или комбинацию клавиш <Ctrl+z>. При нажатии клавиши <s> информация выводится построчно, что удобно, если вы-
120 Урок 7 водимые данные нужно прокручивать по строкам, а не по страницам. В этом разделе было показано, как пользоваться командой more для постраничного вывода информации. Конечно, ото- бражать содержимое файлов можно и с помощью команды cat, но в этом случае в вашем распоряжении имеется намного меньше средств управления для просмотра больших файлов. Вот тогда и применяется команда more. А теперь рассмотрим команду less, которая представляет собой новую версию ко- манды more. Таким образом, вы можете сделать больше меньшими средствами! “Меньше” значит “больше” * В вычислительной технике отдельные термины могут приобретать совершенно противоположный смысл, : как, например, назначение команд more и less. В частности, новая команда less еще больше улуч* шает постраничный вывод и часто используется ад- министраторами систем Unix, а следовательно, она, скорее всего, доступна в вашей системе. Команд less Команда less применяется аналогично командам cat и more. У них даже синтаксис почти одинаковый. Отличают- ся они лишь своими функциями. Команда less предоставля- ет еще больше возможностей для управления постраничным выводом, чем две другие команды. Ниже приведен характерный пример отличий между ко- мандами more и less: >more hosts.allow Если попробовать переместиться по содержимому файла с помощью клавиш управления курсором при использовании команды more, то можно довольно быстро обнаружить, что перемещаться вперед можно только с помощью клавиши пробела. А теперь попробуйте сделать то же самое с помощью команды less: >less hosts.allow
Чтение файлов 121 В этом случае вы можете перемещаться вверх и вниз по со- держимому файла с помощью клавиш управления курсором. А если вы работаете в такой программе эмуляции терминала, как telnet, или в защищенном командном процессоре, то мо- жете даже переместиться в буфер справа. В любом случае, ес- ли вы подключены к системе Unix, где доступны команды more и less, проверьте их функции на практике. В остальном команда less действует аналогично командам more и cat. Так, при нажатии клавиши пробела происходит постранич- ное листание содержимого файла, а при нажатии клавиши <q> — выход из команды. Yy} П оси еип лучи е Если вы считаете, то команда less повысит произво- дительность вашего труда на работе, попросите уста- новить ее в системе. - Итак, выше были представлены основы чтения файлов с помощью команд cat, more и less. Но иногда возникает потребность просмотреть лишь часть файла, например, конец журнала регистрации или начало сообщения электронной почты, т.е. его заголовок, в котором указаны отправитель и получатель данного сообщения. Для тех случаев, когда нуж- но просмотреть не весь файл, а только его часть, служат ко- манды head и tail. Команда tail Запомнить назначение команд tail и head нетрудно. Ко- манда tail используется в том случае, если нужно увидеть конец файла. Если же требуется увидеть начало файла, то для этой цели служит команда head. А теперь рассмотрим функ- ции обеих команд, начав с команды tail, Команда tail действует весьма эффективно, быстро и про- сто. Так, если требуется просмотреть 10 нижних строк файла, достаточно указать саму команду и соответствующий файл, например: >tail hosts.allow
122 Урок 7 или >tail -20 hosts.allow Вывод содержимого файла по этой команде начинается снизу вверх, причем по умолчанию выводятся 10 нижних строк. Если же нужно указать конкретное число просматри- ваемых строк, отсчитайте это число от конца файла. Совсем иначе действует команда head. Она отображает на- чало файла. Рассмотрим теперь эту команду. Команда head В тех случаях, когда нужно просмотреть не конец, а нача- ло файла, применяется команда head. Как и в команде tail, в данной команде нужно указать имя просматриваемого фай- ла, например: >head hosts.allow ИЛИ >head -20 hosts.allow Вывод по этой команде осуществляется сверху вниз, а не снизу вверх, причем по умолчанию выводятся 10 верхних строк. (Л) Не пугайте хвост с головой < Применяя команды head и tai 1, не забывайте О том, что если нужно вывести не 10 строк (что обычно дела- ется по умолчанию), а другое их количество, то число просматриваемых строк следует указать с помощью ключа -# соответствующей команды, где #™ число строк. Напоминаем, что дополнительные сведения о любой команде можно получить с помощью команды help или оперативных страниц руководства, доступных в системе Unix.
Чтение файлов 123 На этом данный урок, посвященный чтению файлов из командной строки, завершается. Для этой цели в Unix име- ются и другие команды и средства, но их рассмотрение выхо- дит за рамки данной книги. Обращайтесь за дополнительны- ми сведениями по данному вопросу к справочной системе Unix (см. урок 2), чтобы расширить свои знания и опыт рабо- ты в Unix. Что же касается управления файлами, то теперь вы должны уметь читать файлы с помощью команд cat, more,less,head и tail. Резюме Чтение файлов в системе Unix выполняется довольно про- сто. Трудности работы из командной строки постепенно ума- ляются и исчезают по мере расширения ваших знаний о Unix. В этом уроке вы научились читать файл с помощью ряда ко- манд, вводимых по приглашению командного процессора Unix. Материал данного урока дает ясное представление о са- мых разных способах отображения содержимого файлов как полностью, так и частично. Ниже приведен краткий обзор команд чтения файлов. • Команда cat. Эта команда сцепления отображает по очереди содержимое всех указанных файлов, не оста- навливаясь в конце страниц. • Команды more и less. Это так называемые пейджеры. Они осуществляют постраничный вывод содержимого указанных файлов. Команда less предоставляет боль- ше возможностей для прокрутки содержимого файлов назад, чем команда more, которая допускает прокрутку просматриваемых данных только вперед. • Команда head. Отображает несколько первых строк файла. Эта команда полезна для просмотра заглавной информации в таких файлах, как сообщения электрон- ной почты.
124 Урок 7 • Команда tail. Отображает несколько последних строк файла. Если эта команда используется вместе с ключом -f, она дает возможность выводить содержимое файла по мере его формирования. Вместо того чтобы реализо- вывать данное свойство в каждой программе, достаточ- но воспользоваться командой tail -f. • Другие форматы файлов. Помимо текста и HTML, в Unix могут встречаться и другие форматы файлов. В данном уроке были вкратце рассмотрены эти форма- ты и программные средства для работы с ними.
Урок 8 Правка текста Этот урок посвящен основам редактирования файлов из командной строки и графического пользовательского ин- терфейса в среде Unix. Помимо чтения файлов, следует также показать, как они редактируются. В этом уроке рассматриваются основы редак- тирования файлов в двух средах: командной строке и графиче- ском пользовательском интерфейсе. Для обеих сред редактиро- вание файлов является типичной операцией. Навык редакти- рования файлов очень важен для любого пользователя, будь то автор, осваивающий инструментальные средства правки тек- ста, либо начинающий пользователь электронной почты, наби- рающий текстовые сообщения писем для отправки. В этом уроке будут представлены две наиболее часто при- меняемые в среде Unix программы редактирования файлов: текстовые редакторы vi и emacs. Если редактор vi вызыва- ется из командной строки, то редактор emacs — из графиче- ского пользовательского интерфейса. Итак, после чтения файлов разными способами вам пред- стоит научиться создавать и редактировать их указанными выше инструментальными средствами. Расширяйте свой арсенал - ; V If В одном уроке практически невозможно охватить бес- ;свойства обеих упомянутых выше программ f//редактирования файлов. Они достаточно обширны и содержат немало отличных инструментов. Если вы серьезно намерены овладеть Unix, то сначала освойте : инструментальные средства правки текста, поскольку вам придется очень часто пользоваться ими в Unix.
126 Урок8 Мы постараемся рассмотреть оба редактора как можно бо- лее подробно, хотя и затронем лишь малую часть их свойств. В этом уроке будут представлены основы создания, редакти- рования и сохранения файлов наряду с элементами переме- щения по тексту и некоторыми полезными советами. Правка текста в Unix Правка текста является весьма распространенной операцией в любой среде. Как известно, большинство Web-сайтов и связан- ных с ними Web-страниц функционируют на Web-серверах под управлением Unix или Linux. Типичный Web-сайт состоит из каталогов и файлов, к которым посетитель сайта обычно осуще- ствляет доступ из своего Web-браузера. Подобные файлы хра- нятся в формате HTML, а следовательно, они подлежат редакти- рованию. После редактирования эти файлы отражают конкрет- ную конфигурацию сайта. И все это может быть сделано в любой стандартно установ- ленной копии Unix или Linux с помощью редактора vi либо emacs. Достаточно создать документ, а затем сохранить его в файле с расширением . htm (т.е. в формате HTML— языка гипертекстовой разметки документов) в каталоге, организо- ванном для Web-сайта. Это простейший способ создания пер- вой Web-страницы. Но это далеко не все возможности упомянутых выше тек- стовых редакторов. Для того чтобы раскрыть их истинный потенциал, нужно учиться едва ли не всю жизнь. Что касается редактирования файлов, то пользователи Unix разделились на две группы сторонников текстовых ре- дакторов vi и emacs. Но независимо от того, какой из этих редакторов лучше, можно быть уверенным в одном: они об- ладают огромным потенциалом, а значит, способны удовле- творить любые потребности пользователя. Как правило, те пользователи, которые привыкли работать с командным про- цессором, предпочитают редактор vi, а те, которые больше работают в графической среде, — редактор emacs. В этом уроке будут рассмотрены оба редактора. Но незави- симо от вашего выбора не останавливайтесь на тех основах, которые даются в этом уроке. Изучите более глубоко тот ре- дактор, которому вы отдали предпочтение.
Правка текста 127 Редактор vi В настоящее время vi относится к одним из самых распро- страненных редакторов среди пользователей Unix. Он приме- няется уже давно, и число его сторонников постоянно растет. Это хорошо организованное, четко функционирующее инст- рументальное средство, не требующее много памяти. Можно сказать, что vi — это самый универсальный редактор в Unix. В то же время он не совсем удобен для использования. В дей- ствительности научиться редактировать файлы в Unix труд- нее всего с помощью редактора vi. Истинная сила этого ре- дактора заключается в низких непроизводительных затратах и высокой функциональности. Для того чтобы воспользоваться редактором vi, нужно лишь открыть его по команде vi, выполнив следующую процедуру. 1. Выберите файл, который требуется отредактировать в редакторе vi. 2. Выдайте команду vi <имя_файла>. Создавать файлы в редакторе vi очень просто Редактор vi можно открыть, и не указывая имя фай- ла. В этом случае новый файл будет создан автомати- чески. Сохранив этот файл, вы оцените данный ре- дактор по достоинству. Для правки уже существующего файла в редакторе vi введите следующую команду: > vi /etc/HTMLLAB/index.htm В редакторе vi откроется файл index. htm, представляю- щий собой начальную страницу Web-сайта. Если у вас нет та- кого файла, найдите по команде find любой подходящий для редактирования файл и откройте его в редакторе vi. После открытия файла в редакторе vi предоставляется множество команд для редактирования этого файла. Если вы открываете HTML-документ, то должны знать, как правится код HTML для внесения изменений на Web-сайте. С другой стороны, это может быть файл справки по конкретному при- ложению, установленному в системе. Независимо от сделан-
128 Урок 8 ного выбора вы обнаружите в редакторе vi широкий набор команд для работы с открытыми файлами. Но прежде нужно выбрать конкретный режим работы в редакторе vi. Этот ре- дактор работает в двух режимах: команд и вставки. • Режим команд позволяет управлять положением кур- сора, удалением символов и сохранением файлов. • Режим вставки позволяет вставлять символы. Открыть файл в редакторе vi просто, но совсем другое де- ло — отредактировать и сохранить его, чему вы, собственно, и должны научиться. Для того чтобы редактировать файлы, необходимо овладеть основными операциями в редакторе vi, а для этого нужно знать клавиатурные эквиваленты этих операций. Наиболее типичные из них приведены в табл. 8.1. Таблица 8.1. Клавиатурные эквиваленты типичных операций в редакторе vi Режим Клавиша или комбинация клавиш Действие Команд <1> Перемещение вправо <h> Перемещение влево <k> Переход к предыдущей строке <х> (после установки кур- сора на удаляемом символе) Удаление символа <d> (нажать два раза) Удаление всей строки, в том числе пустой <А> (после установки курсо- Присоединение в конце ра на присоединяемой строке) строки <i> (до символа, на кото- ром находится курсор) или <а> (после символа, на ко- тором находится курсор) Переход в режим вставки :<w> и <Return> Сохранение файла :<w> <имя_фаила> Сохранение файла под но- вым именем :<q> и <Return> Выход из редактора vi :<q!> и <Return> Выход без сохранения
Правка текста 129 Окончание табл. 8.1 Режим Клавиша или комбинация Действие клавиш Вставки <Esc> Переход в режим команд <Backspace> Забой, или удаление, но <Delete> только вставленных данных Это далеко не полный перечень, который может быть до- полнен другими клавиатурными эквивалентами полезных операций в редакторе vi. Для этого вам лучше обратиться к специальной литературе по редактору vi. Без сомнения, это пойдет вам только на пользу. Напомним, что в этой книге рассматриваются лишь ос- новные операции для редактирования файлов в текущей сре- де Unix. Остальное вы можете освоить самостоятельно, рабо- тая в своей испытательной системе, как в экспериментальной лаборатории. Вы быстро обнаружите, что это самый простой способ научиться работать в Unix. Ниже приведен пример применения редактора vi для ре- дактирования файла test. Для выполнения данного упраж- нения вам потребуются лишь два клавиатурных эквивалента операций: <Return> и <Esc>. Первый из них служит для пе- рехода на новую строку, а другой — для смены режима. Итак, создайте новый файл test: > vi test Это новый файл, созданный мною! Проверьте его! Здорово, правда? Мне тоже так показалось В ответ вы получите от Unix следующее сообщение: "test" [New file] 4 lines, 61 characters Если вы еще помните, как пользоваться командой cat, то можете быстро просмотреть содержимое вновь созданного файла test: > cat test Это новый файл, созданный мною! Проверьте его! Здорово, правда? Мне тоже так показалось
130 Уроке Как видите, редактор vi пригоден для редактирования файлов самых разных типов. Следует, однако, иметь в виду, что для изучения редактора vi и практического овладения им требуется время. Можно надеяться, что вы и далее будете пользоваться этим редактором. А если нет, то, может быть, вам больше придется по вкусу редактор emacs. Редактор emacs Те, кто отдают предпочтение редактору emacs, терпеть не могут редактор vi, и наоборот. Остается надеяться, что, пройдя этот урок, вы сделаете правильный выбор, руково- дствуясь собственным мнением относительно пригодности того или иного редактора для ваших личных нужд. Итак, рассмотрим редактор emacs. Самое большое отличие между редакторами vi и emacs — в их разных весовых категориях. Если редактор vi — очень лег- кий инструмент, то редактор emacs — довольно тяжеловесный, хотя и столь же, если не более, функционально полный инстру- мент. Однако и тот, и другой способны удовлетворить практиче- ски любые ваши потребности. Поэтому выбор наиболее подхо- дящего редактора— это, скорее, дело личных предпочтений. Лишь немногие пользователи достигают такого уровня, чтобы ясно представлять себе все отличия между обоими редакторами и понимать, почему один из них больше подходит в определен- ных обстоятельствах, чем другой. При выборе текстового редак- тора начинающий пользователь Unix должен руководствоваться следующими соображениями: редактор vi достаточно функцио- нален и требует немного таких вычислительных ресурсов, как оперативная память и время центрального процессора (т.е. это легкий инструмент^ А редактор emacs потребляет немало вы- числительных ресурсов и, соответственно, налагает более тяже- лое бремя на систему, снижая ее производительность, если ис- пользует слишком много ресурсов (т.е. это тяжеловесный инст- румент). Объясняется это тем, что редактор emacs содержит не- мало вспомогательных средств, в том числе клиент электронной почты, язык программирования и многое другое. С технической точки зрения редактор emacs намного бо- лее функционален, чем редактор vi, но, опять же, все зависит от ваших потребностей в редактировании файлов. За допол-
Правка текста 131 нительные функции приходится расплачиваться потреблени- ем больших ресурсов. Это своего рода компромисс, на который приходится идти, исходя из того оборудования, на котором работает Unix. Если редактор vi работает в двух режимах (команд и вставки), то редактор emacs всегда работает в ре- жиме вставки. Вместо отдельного режима в нем используют- ся управляющие функции, выбираемые с помощью комбина- ции, начинающейся с клавиши <Ctrl>. Эти функции будут рассмотрены несколько ниже. Итак, рассмотрев отличия ме- жду обоими редакторами, покажем, как работает редактор emacs на примере следующей процедуры. 1. Выберите файл, который нужно открыть для редакти- рования. 2. Выдайте команду emacs <имя_файла>. Как видите, редактор emacs открывается очень просто. После открытия он действует аналогично редактору vi в от- ношении манипулирования содержимым файла, его сохране- ния и т.д. Создавать файлы в редакторе emacs не менее У MpqW j Как и редакто v’ редактор emacs можно открыть, не указывая имя редактируемого файла. При этом авто- матическ соз ется новьГ файл : Справку в открытом редакторе emacs можно получить са- мыми разными способами. Но для этого нужно сначала нау- читься перемещаться в редакторе emacs, что требует такой же практики, как и в редакторе vi. Нужна элемен рная грамотность В представленном ниже перечне приведены операции для перемещения в редакторе emacs: и соответствую- щие комбинации клавиш, начинающиеся с клавиши <Ctrl>. Это означает, что сначала нужно нажать клави- шу <Ctr!>, а затем клавишу соответствующего символа
132 Урок8 Ниже приведены некоторые полезные операции, помо- гающие перемещаться в редакторе emacs и изучать его воз- можности. • Как упоминалось выше, в редакторе emacs отсутствует отдельный режим для ввода команд. Он работает в един- ственном режиме вставки, а если требуется другой режим, то для этой цели служат управляющие клавиши. В этом редакторе можно набирать либо текст, либо команду, не переключая режимы, как в редакторе vi. В частности, для набора текста достаточно ввести его, а если требуется ввести команду, это можно сделать с помощью управ- ляющей клавиши, как правило, в следующей комбина- ции: <СЬг1+дополнительная клавиша>. • Для перемещения курсора в редакторе emacs служат клавиши управления курсором, что характерно для большинства версий этого редактора и видов термина- лов. Это удобно для освоения emacs. Овладев клавиатур- ными эквивалентами основных операций, вы быстро поймете, насколько просто пользоваться этим редакто- ром. Если же клавиши управления курсором по какой- то причине не действуют, то для перемещения курсора вперед можно воспользоваться комбинацией клавиш <Ctrl+f>, назад — <Ctrl+b>, на предыдущую строку — <Ctrl+p> и на следующую строку — <Ctrl+n>. • Для удаления всего текста от курсора и до конца теку- щей строки служит комбинация клавиш <Ctrl+k>. • Для отмены действия служит комбинация клавиш <Ctrl+g>. Так, если вы начали набирать команду, а за- тем передумали, воспользуйтесь комбинацией клавиш <Ctrl+g>. • Строки удаленные с помощью комбинации клавиш <Ctrl+k>, можно восстановить, нажав комбинацию клавиш <Ctrl+y>. • Для сохранения редактируемого файла следует нажать последовательно комбинации клавиш <Ctrl+x> <Ctrl+s>. • Для сохранения файла под новым именем следует на- жать последовательно комбинации клавиш <Ctrl+x> <Ctrl+w> <имя_файла> <Return>.
Правка текста 133 • Для выхода из редактора emacs следует нажать последо- вательно комбинации клавиш <Ctrl+x> <Ctrl+c>. В от- вет на предложение со стороны emacs сохранить буфера и результат редактирования вы можете выбрать вариант как с сохранением, так и без сохранения результата. Помимо перечисленных выше управляющих функций, в редакторе emacs имеются функции, выбираемые с помо- щью клавиши <Esc>. Исторически сложилось так, что они называются метакомандами. Многие интересные метакоманды редактора emacs дос- тупны с помощью комбинации клавиш <Esc+x>, после чего вводится конкретная команда, например info. При этом вы- водится перечень всех команд со сходными именами. Из этого перечня всегда можно выбрать нужную команду. Пользуйтесь учебным пособием по emacs Для дальнейшего изучения редактора emacs рекомен- дуется удобное учебное пособие. Для доступа к учеб- ному пособию по emacs следует запустить этот редак- тор и нажать комбинацию клавиш <Ctrl+hi> (т.е. нажать и удерживать клавишу <Ctrl>, нажать клавишу <h>, от- пустить клавишу <Ctrl> и нажать клавишу <!>). Если же после комбинации <Ctrl+h> нажать клавишу <?>, а не <i>, появятся многочисленные альтернативные вари- анты выбора другой справочной информации. А теперь, когда рассмотрены способы редактирования файлов из командной строки, покажем, каким образом фай- лы редактируются в среде KDE из графического пользова- тельского интерфейса. Редактор, встроенный в KDE В графической среде имеется также встроенный и доста- точно развитый редактор. Для работы с файлами в таких графических средах, как KDE, предоставляются средства, поддерживающие мышь, что вполне естественно, поскольку пользователь ожидает от графического интерфейса Unix та- ких же функциональных возможностей, как и у Apple Macin- tosh и Microsoft Windows.
134 Урок 8 В этом разделе данного урока мы оставим на время ко- мандную строку и перейдем к работе в графическом пользо- вательском интерфейсе. Для активизации‘редактора, встро- енного в среду KDE, щелкните на пиктограмме с буквой К на панели инструментов KDE, а затем выберите пункт Applica- tions (Приложения) из всплывающего меню и пункт Editor (Редактор) из его подменю. Эта последовательность действий зависит от конкретного дистрибутива Unix, но в любом слу- чае вы сможете найти встроенный редактор из меню, чем-то напоминающего меню Пуск в среде Windows. После открытия встроенного в KDE редактора появится окно, приведенное на рис. 8.1. Рис. 8.1. Встроенный в KDE редактор Встроенный в KDE редактор допускает обычные операции выделения, копирования, вставки и удаления текста с помо- щью мыши, характерные для редактора с графическим поль- зовательским интерфейсом. Но это довольно громоздкий инст- румент, поэтому для его загрузки требуется время, особенно на оборудовании не самого высокого класса. Если для пользовате- лей Microsoft Windows и Apple Macintosh, ожидающих завер- шения операции (например, загрузки) выдается предупрежде- ние о том, что система занята выполнением текущей операции, KDE не выдает такого предупреждения или пиктограммы ча- сов. Поэтому нужно набраться терпения и ждать загрузки ре-
Правка текста 135 дактора. Это отнюдь не означает, что система “зависла”, не реа- гирует на действия пользователя или игнорирует их. В среде KDE можно также перемещаться по файловой сис- теме, устанавливая указатель мыши и щелкая на пиктограм- мах, выполняющих роль гиперссылок. Для того чтобы от- крыть редактируемый файл, достаточно выбрать его, как по- казано на рис. 8.2. Рис, 8,2. Поиск файла для редактирования Далее остается лишь отредактировать файл. При закры- тии редактора можно сохранить файл, прежде чем выйти из этого инструментального средства редактирования. Резюме В этом уроке были представлены два наиболее распростра- ненных на платформе Unix текстовых редактора: vi и emacs. Можно надеяться, что материал данного урока побудит вас приобрести отдельную книгу по одному из этих редакторов для дальнейшего изучения. В среде Unix приходится довольно час- то редактировать файлы. В связи с этим очень важно освоить хотя бы один текстовый редактор из тех, которые были рас- смотрены в данном уроке, vi, emacs, и встроенный в среду KDE редактор с графическим интерфейсом. Изучив основы ре- дактирования файлов в этих инструментальных средствах, вы можете продолжить их освоение самостоятельно.
136 Уроке Помните, что учиться лучше всего на практике, и в этом уроке вам были предоставлены все необходимые средства для выполнения трех наиболее важных операций в текстовом ре- дакторе. • Запуск избранного редактора • Правка текста • Выход с сохранением результатов правки Зная, как выходить из текстового редактора без сохране- ния результатов, вы можете безбоязненно экспериментиро- вать с редактированием файлов, используя избранный вами редактор в качестве экспериментальной лаборатории, чтобы овладеть им в полной мере. А теперь приведем краткое изло- жение данного урока, прежде чем переходить к следующему уроку, в котором вам предстоит ознакомиться с дополнитель- ными инструментами редактирования файлов и тем самым пополнить свой арсенал средств для работы в Unix. • Редактор vi удобен для внесения мелких, оперативных изменений в файлы. Интерфейс этого редактора нельзя назвать вполне понятным и удобным для пользователя. Повсеместное распространение, быстродействие и скром- ные требования редактора vi к дисковому пространству делают его наиболее пригодным для быстрой правки и ра- боты на чужой машине. • Клавиша <Esc> осуществляет быстрый выход из ре- дактора vi без сохранения внесенных изменений. • Редактор emacs содержит все, что требуется для редак- тирования файлов, и многое другое. На устаревшем оборудовании этот редактор работает очень медленно, но современные быстродействующие машины, очень дешевые диски и оперативная память сводят этот не- достаток практически на нет. Воспользуйтесь учебным пособием по emacs, изучите его справочные файлы и найдите книгу по этому редактору, чтобы извлечь из него максимальную пользу. • Комбинации клавиш <Ctrl+x> <Ctrl+c> позволяют быстро выйти из редактора emacs без сохранения вне- сенных изменений по соответствующему запросу.
Урок 9 Утилиты правки текста и управления файлами Этот урок посвящен дополнительным утилитам редакти- рования и управления файлами, упрощающим работу в Unix. Этим уроком мы завершаем рассмотрение темы управле- ния файлами и их редактирования. Ранее были представлены основы создания файлов и управления ими, а теперь рассмот- рим некоторые редкие, но весьма полезные команды, помо- гающие выполнить конкретное задание. Во время работы над книгой приходится выполнять самые разные операции, включая набор и правку текста, управление и манипулирование файлами. Например, каждый урок этой книги должен содержать 8-10 страниц, для чтения которых требуется около 10-15 минут. Для этого нужно знать количе- ство слов в текстовом файле или документе. Такую информа- цию предоставляет большинство текстовых редакторов. В Unix подсчет слов в документе осуществляется по ко- манде wc. Эта и другие команды (утилиты) управления фай- лами будут рассмотрены в данном уроке, чтобы вы могли ос- воить их и работать более эффективно в среде Unix. Материал данной книги очень важно изучать последова- тельно, поскольку в этом случае раскрываются различные функции отдельных команд. Например, в одном уроке пока- зано, как команду grep можно использовать одним способом, а в другом уроке — совершенно иным способом. Таким образом, изучение команд с постепенным расшире- нием их набора оказывается столь же эффективным, как и сама система Unix. Так, изучая методы создания сценариев командного процессора (см. урок 14), вы в то же время осваи- ваете инструмент или утилиту, помогающую автоматизиро-
138 Урок 9 вать выполнение конкретного задания или функции, а следо- вательно, упростить вашу работу в системе. Итак, рассмот- рим, прежде всего, команду wc. Команда wc В целом, команда wc подсчитывает слова и выводит итого- вое их количество. Сокращение wc означает “подсчет слов”. Если требуется увидеть, сколько слов введено в файл, доста- точно выполнить команду wc, указав в ней имя файла с абсо- лютным или относительным адресом. В итоге команда выдаст не только количество подсчитанных слов, но и число строк и байтов, содержащихся в файле. Команда wc отлично подходит для получения текущих статистических данных о том файле, с которым вам прихо- дится работать. Так, если требуется просмотреть по команде tail конец файла, который может оказаться довольно боль- шим, с помощью команды wc можно очень быстро определить число строк в этом файле. После этого для просмотра конца файла остается лишь указать требуемое число строк в коман- де tail. Для того чтобы воспользоваться командой wc, укажите имя анализируемого файла в следующей форме: wc <имя_файла>. Если передать этой команде несколько файлов, она обработает все эти файлы и выдаст общий итог. В сле- дующем примере приведен простой запрос файла регистра- ции начальной загрузки, в котором сообщается, что именно было обнаружено при выполнении последовательности на- чальной загрузки Unix: >wc /var/log/boot.msg 340 225 20102 /var/log/boot.msg Полученный результат позволяет судить о размере файла регистрации начальной загрузки и указать нужное число строк, если потребуется просмотреть конец этого файла по команде tail. В приведенном выше примере указан ряд чисел, возвра- щаемых Unix при выполнении команды wc. Первое число оз- начает количество строк в файле. Следовательно, в данном
Утилиты правки текста и управления файлами 139 файле содержится 340 строк. Второе число означает количе- ство слов, а третье число — количество символов в файле. И в конце итоговой строки дублируется имя файла и путь к нему. Объем задания на печать Более подробнопечать рассматривается в уроке 17, а пока что команду wc можно использовать для опре- деления объемов задании на печать. Какое еще применение можно найти команде wc? Если нужно вывести только количество строк, слов или символов в файле, воспользуйтесь ее ключами -1, -w или -с соответст- венно. Команда split Теперь вы знаете, как получить статистические данные о файле и его логической структуре. Рассмотрим далее, как с по- мощью команды split большой файл разбивается на указан- ные пользователем части. Для того чтобы воспользоваться ко- мандой split, нужно лишь убедиться в том, что файл, с кото- рым нужно работать или который следует переслать кому-то другому, имеет достаточно большой размер. После этого оста- ется лишь выполнить команду split, чтобы разбить файл на части. Итак, для разбиения файла на части воспользуйтесь следующей процедурой. 1. Выберите файл, который нужно разбить на части. Это может быть, например, файл регистрации начальной загрузки, который, как правило, оказывается довольно большим и поэтому требует разделения на поддающие- ся манипулированию части. 2. Определите число строк, которые нужно сохранить в каждом выходном файле. Это очень важный момент, поскольку таким образом определяются размеры фай- лов, на которые разбивается исходный файл. Для этой цели служит команда sort -1 <число строк>. 3. Укажите базовое имя файла для вывода результатов.
140 Урок 9 4. Выдайте команду split дополнительные параметры разбиения> <входной файл> <выходной файл>. Ниже приведен пример применения команды split: >split -1 3 boot.msg splitfile В данном примере файл boot .msg разбивается на два фай- ла по три строки в каждом. Количество строк указывается с помощью ключа -1. Команду split полезно запомнить для разбиения данных на такие части, с которыми удобно рабо- тать или отправить другим. Если же потребуется восстановить файл из отдельных час- тей, это можно сделать с помощью уже известной вам коман- ды cat. Так, если имеется ряд файлов с именами <базовое имя файла>аа, <базовое имя файла>аЬ, <базовое имя файла>ас, <базовое имя файла>ъъ, для восстановления из этих фрагментов исходного файла выполните следующую команду: cat <базовое имя файла>* > combine., complete, file. В итоге исходный файл будет восстановлен из отдельных его частей для последующей работы с ним. Не менее полезными вы найдете и команды patch и dif f. Эти утилиты также помогают управлять файлами в Unix. Команды patch и dif f Команды patch и dif f применяются в паре, поэтому рас- смотрим их вместе. Но, исходя из особенностей их работы, первой будет представлена команда dif f. С помощью команды diff определяется разница между исходным образцовым файлом и обновленным файлом, а ре- зультат выводится во вставной файл. Этот файл будет содер- жать достаточно информации для восстановления обновлен- ного файла при наличии только образцового и вставного фай- лов. Это удобно для отправки обновлений, например правок, вместо всей книги для полной ее замены. Если для мелких файлов это мало что дает, то для больших файлов, с которы- ми работают многие люди, применение команды diff оказы- вается весьма полезным.
Утилиты правки текста и управления файлами 141 Для оправки в файле только нового материала восполь- зуйтесь командой diff со следующим синтаксисом: diff <образцовый файл> <обновленный файл> > <вставной файл>. В качестве вставного может быть указан любой файл. В приведенном ниже примере демонстрируется создание вставного файла: >diff template.txt update.txt > patch.txt Вставной файл представляет собой разность между образ- цовым и обновленным файлами. Опробуйте эту команду на большом файле. Освоив ее, вы сможете создавать, редактиро- вать и пересылать файлы документов, над которыми вы рабо- таете вместе с другими людьми. Команда diff оказывается полезной и в том случае, если требуется установить идентичность двух или более копий од- ного и того же файла. Если копии не одинаковы, вы сможете выяснить, какие изменения в них произошли. Если же ко- манда diff не дает никакого результата, значит, проверяе- мые файлы копий ничем не отличаются друг от друга. Не менее полезной является и команда patch. Ее можно рассматривать в качестве второй стадии применения команды diff. Теперь, когда у вас имеются образцовый, обновленный и вставной файлы, вы можете воспользоваться командой patch для внесения корректив в нужный вам файл, например: >patch template.txt patch.txt patching file 'template.txt* Команда patch автоматически обновляет и вставляет из- менения в указанный файл template.txt. Для просмотра отличий во вновь созданных файлах вы можете воспользо- ваться командами cat и more. Не забывайте только хранить отдельно копию образцового файла. В данном примере встав- ка была сделана непосредственно в образцовый файл, и, та- ким образом, он был обновлен. Если последующие вставки создаются из обновленного файла, то все в порядке. А если они получаются из исходного файла, то обновленный файл вставке не подлежит. Итак, вы уже должны уметь применять наиболее распро- страненные методы управления файлами в Unix, включая создание, чтение, редактирование, перемещение и копирова- ние файлов, а также чтение начала и конца файла или поиск
142 Урок 9 его содержимого по команде grep. Если вы действительно ос- воили все эти операции с файлами, то можете гордиться своими достижениями. Ведь в 10-минутных уроках этой кни- ги представлены лишь основы, а остальное вам предстоит изучить самостоятельно. Контрольная проверка навыков управления файлами Прежде чем продолжать, хотелось бы остановиться на том, насколько важно применять освоенные команды в опре- деленном сочетании, чтобы полностью раскрыть потенциал Unix. Одного знания команд для этого явно недостаточно. Нужно уметь их применять. В этой части урока вам предос- тавляется возможность проверить свои знания команд Unix и умение их применять правильно и к месту. Приведенная ниже контрольная проверка позволяет не толь- ко повторить некоторые команды, рассмотренные в первых де- вяти уроках, но и лучше понять, как они работают вместе. Во время работы с файлами и каталогами очень важно не забывать о том, что в основу организации системы Unix по- ложены файлы и каталоги, в которых они находятся. Итак, начнем контрольную проверку с перехода из текущего ката- лога в другой и создания файла. Контрольная проверка 1. Зачастую вам приходится работать в своем начальном каталоге. Как он обозначается из командной строки? Ответ: - (?) Другое обозначение начального каталога В Unix начальный каталог обозначается также сле- дующим образо : $номе.
Утилиты правки текста и управления файлами 143 2. Во время работы в командном процессоре последний отслеживает используемый в данный момент каталог, который называется рабочим или текущим каталогом. Какую команду нужно ввести для определения теку- щего каталога? Ответ: pwd. 3. Какую команду нужно ввести для вывода содержимого текущего каталога? Ответ: 1s. Вывод другой информации о каталоге В Unix команды применяются с дополнительными па- раметрами (ключами). Особенно это касается коман- .• ды Is. . . . Эта команда имеет немало ключей, но запомнить ре< * комендуется, прежде всего, следующие полезные ключи, Для вывода файлов из Текущего каталога, включая скрытые файлы, введите команду 1s -а. Для вывода файлов из текущего каталога наряду с та- кой дополнительной информацией, как принадлеж- ность файла конкретному пользователю, дата созда- ния файла и права доступа к нему, введите команду | Is -1. ' ...,л Для вывода файлов из конкретного каталога введите команду 1s <имя каталога>. 4. После вывода содержимого каталога по командам pwd и 1s вы можете и не обнаружить искомый файл. Допус- тим, что в вашем рабочем каталоге имеется каталог storage и вам нужно перейти в этот каталог для рабо- ты с файлами, которые в нем находятся. Какую коман- ду нужно ввести для замены текущего каталога ката- логом storage? Ответ: cd storage
144 Урок 9 Нужно ли всегда указывать каталог ' ' .. . Указывать каталог совсем не обязательно. Разумеет- ся, для доступа к какому-то элементу файловой сис- темы проще всего указать erct непосредственно. Но если имя файла неизвестно, то для быстрого пере- мещения по ф<ай.ловой системе Unix вплоть до корне- вого каталога / имеется Очень удобный способ» Для перехода на один каталог вверх введите команду cd ♦... При это вы оказываетесь в каталоге, рас сложен- ном непосредственно над тем каталогом, в котором вы находитес в данный момент. Так, если в находи- тесь в каталоге /etc, то, выдав команду cd , , вы окажетесь в каталоге /. Непременно введите пробел и две точки после названия команды cd. Для смены к талога можно акже указать н посре - ственный путь к нему. Допустим, что вам т ебуется отредактировать файл indextest .htm и вы находи- тесь в корневом каталоге. Для перехода к каталогу, в котором находится этот файл, укажите полный путь кнему, напр ер с/нтмыдв/. 5. Итак, получив доступ к каталогу storage, вы хотели бы создать в нем новый каталог HTML, чтобы хранить в нем только файлы HTML. Какую команду нужно для этого ввести? Ответ: mkdir HTML Особая ч в вите ьно т ix к еги р Не забывайте о чувствительности Unix к регистру. В при- ' веденном выше примере каталог нтмь следует набрать прописны и буквами. Но пользоваться я э о о клави- ; шей фиксации верхнего регистра <Caps Lock> в среде п’х н ре о ндуется, бы не ввес о ошибке не- верную команду, Постарайтесь 5б гъся от этой при- ычк акку т о вод ть о щы в нужном регист е.
Утилиты правки текста и управления файлами 145 6. Итак, вы создали новый каталог HTML, но в итоге ока- залось, что он вам не нужен, поскольку в каталоге storage уже имеется другой каталог storage для хра- нения данных. Какую команду нужно ввести для уда- ления ненужного каталога? Ответ: nadir HTML 7. Для создания нового каталога test введите команду mkdir test, а затем команды pwd и Is -1, чтобы про- смотреть содержимое текущего каталога и убедиться в том, что каталог test был создан в том каталоге, в котором вы находитесь в данный момент. Убедившись, что все именно так и есть (если у вас возникнут при этом какие-нибудь затруднения, еще раз повторите предыдущие пункты данной контрольной проверки или же пройденный материал предыдущих уроков), скопируйте файл. Для этого найдите в текущем катало- ге файл, который требуется скопировать в каталог test. Если вы находитесь в своем начальном каталоге, скопируйте файл из него. Если же такого файла в этом каталоге нет, перейдите в другой каталог по команде cd и найдите нужный файл для копирования. Например, для поиска файла по общему критерию воспользуйтесь одной из следующих команд: find /etc *.htm или find /etc *.conf. В результате поиска в файловой системе Unix будет выведен список всех запрашивае- мых файлов. Какую команду нужно ввести для копи- рования найденного файла (например, syslog.conf) в каталог/etc/storage? Ответ: ср syslog.conf /etc/storage А по какой команде можно проверить, что файл скопи- рован в нужный каталог? Ответ: Is -1 /etc/storage Скопированный файл должен находиться в указанном выше каталоге. В противном случае проверьте свои действия и повторите, если требуется, текущий пункт данной контрольной проверки.
146 Урок 9 Как вывес и Unix из себя С помощью метасимволов можно указать несколько файлов для поиска по заданному пути. Метасимвол — это знак сопоставления со многими символами. Так, метасимвол * совпадает с любыми символами. -jLi_• ___... _ж*_> :.Гл। 8. Итак, вы создали каталог storage и скопировали в не- го файл. Для перемещения этого файла из исходного каталога можно было бы воспользоваться командой mv, но в данном случае это не требуется. А прежде чем уда- лять каталог, непременно удалите из него все файлы и другие каталоги по команде rm. Какую же команду нужно ввести для удаления каталога storage? Ответ: rmdir storage 9. И в награду за успешно пройденную контрольную про- верку вы получите возможность взять на вооружение еще одну полезную команду. Для того чтобы серверы не исчерпали дисковое пространство, в учетных записях пользователей указывается предельное количество данных, которое им разрешается хранить. По какой же команде можно определить оставшееся свободное место для хранения данных? Ответ: quota Эта команда выводит текущую квоту на дисковое про- странство, выделенное для данного пользователя. Итак, поздравляем вас с замечательно проделанной рабо- той! Ведь совсем недавно вы и понятия не имели о Unix, а те- перь уже овладели основами работы в этой системе, хотя мы затронули пока что лишь малую часть ее возможностей. В следующем уроке мы завершим рассмотрение файловой системы Unix, пояснив методы управления хранимыми дан- ными на примере их архивирования и сжатия. Если вам действительно было трудно пройти приведенную выше контрольную проверку, то объясняется это, скорее, не тем, что вы не сумели что-то сделать, а тем, что не смогли бы-
Утилиты правки текста и управления файлами 147 стро вспомнить нужные команды. Разумеется, вы бы смогли пройти эту проверку, если бы знали соответствующие коман- ды. В этом и заключается главная трудность изучения Unix. Следовательно, вам нужна практика, ибо совершенство дос- тигается только практикой. Резюме В этом уроке были рассмотрены менее известные, специ- альные команды управления файлами в Unix. В частности, команды wc и split помогают определять количество слов в файлах, разбивать на части и восстанавливать файлы. А команды dif f и patch служат для сравнения разных вер- сий и обновления файлов. В конце урока вам была предостав- лена возможность пройти небольшую контрольную проверку, предназначенную для закрепления пройденного материала и демонстрации методов применения команд управления файлами в определенной логической последовательности. Итак, еще раз повторите материал всех пройденных до сих пор уроков и сами проверьте свои навыки работы в Unix. Ни- же приведено краткое изложение данного урока. • Команда wc предоставляет оперативные сведения о ко- личестве символов, строк и слов в одном файле или в их группе. • Команда split служит для разбиения на части боль- ших файлов, чтобы их было удобнее отправлять по электронной почте, записывать на гибкий диск и т.д. По команде split можно создавать файлы, содержа- щие определенное число строк, килобайтов или мега- байтов информации. • Команды dif f/patch служат для удобства распростра- нения обновлений (документов, исходного кода и т.д.). Вместо того чтобы посылать целые копии обновленных файлов, вы можете создать по команде dif f вставные файлы, содержащие только изменения в новой версии файла по сравнению с предыдущей.
148 Урок 9 • Контрольная проверка навыков управления файлами дает вам возможность правильно оценить ваше умение пользо- ваться освоенными командами управления файлами в оп- ределенной комбинации, что очень важно для раскрытия истинного потенциала Unix. Автоматизация пакетной об- работки многих команд с помощью сценариев позволяет делать в Unix практически все что угодно. Этот принцип следует непременно усвоить теперь и придерживаться его в дальнейшем, чтобы научиться объединять многие ко- манды Unix и найти им полезное применение.
Урок 10 Инструментальные средства архивирования и сжатия данных Этот урок посвящен типичным для Unix инструмен- тальным средствам сжатия и архивирования файлов, а также ряду средств, позволяющих вести учет использова- ния дискового пространства. Управление файлами в Unix При пересылке файлов по электронной почте в Internet, обновлении Web-сайта, сохранении данных в домашней внутренней сети или при воспроизведении фильмов на ком- пьютере приходится иметь дело с объемами данных, зани- мающих немало места в системе. Независимо от типа исполь- зуемой операционной системы, будь то Microsoft Windows, Apple Macintosh, Unix или Linux, для хранения всей этой ин- формации требуется место. Подобная информация хранится на запоминающих устрой- ствах наподобие жестких дисков, на которых, вероятнее всего, установлена ваша система Unix. Однако жесткие диски, как правило, переполняются и свободного места на них всегда не хватает, хотя за последнее время их емкость заметно возросла, а цены на них значительно снизились. Впрочем, в большинстве современных операционных систем имеются в той или иной форме утилиты архивирования и сжатия данных, позволяю-
150 Урок 10 щие экономно использовать место на диске. Имеются также инструментальные средства независимых производителей, вы- полняющие аналогичные функции. Средства архивирования и сжатия данных можно даже обнаружить в клиентском при- ложении электронной почты! Для практического освоения таких функций управления файлами в Unix, как архивирование и сжатие данных, име- ются и другие причины. В частности, программное обеспече- ние, как правило, предоставляется в сжатой или архивиро- ванной форме, поэтому для его установки или обновления нужно уметь пользоваться такими командами, как tar. Ко- манда tar позволяет устанавливать программное обеспечение в системе Unix, чем обычно занимаются системные админи- страторы, хотя и конечным пользователям этой системы по- лезно знать о такой возможности. В этом уроке будут представлены инструментальные сред- ства сжатия и архивирования данных, которые могут приго- диться вам для работы в Unix. Но, прежде чем переходить к их рассмотрению, приведем краткий обзор команд, которые нуж- но знать для управления данными, хранящимися на дисках. Учет использования дискового пространства Если вы работаете в системе, в которой требуется следить за использованием дискового пространства, имеете выделенную квоту на дисковое пространство (см. урок 9), в пределах кото- рой вы должны оставаться, или же просто хотите узнать, сколько места на диске занимают ваши файлы, примите к све- дению, что для просмотра подобной информации имеется це- лый ряд способов. Команды, используемые для этих целей, пе- речислены в приведенном ниже списке. • Команда 1s. Как было показано в уроке 4, для отобра- жения информации о месте на диске, которое занимают файлы, служит команда 1s с ключом -1. Это средство довольно оперативного просмотра тех файлов, которые занимают больше всего места на диске.
Инструментальные средства архивирования... 151 • Команда find. Как было показано в уроке 5, команда find служит, в частности, для поиска файлов, размер которых больше определенного размера. Несмотря на сходство с командой Is -1, команда find -size # быстрее собирает информацию обо всех файлах разме- ром больше # килобайтов. Нужно лишь определить сам критерий поиска файлов, т.е. определенное число ки- лобайтов (#). • Команда df. Применяется, в основном, системными администраторами и предоставляет сведения об ис- пользовании дискового пространства. В зависимости от версии Unix команда df может быть использована с разными дополнительными параметрами для получе- ния удобочитаемого результата, но чаще всего она применяется в форме df . / , т.е. запроса файловой сис- темы об использовании пространства на том диске, на котором находится текущий каталог. В ответ эта ко- манда обычно выдает имя логического устройства (которым можно пренебречь), а также сведения об об- щей емкости устройства, объеме используемой памяти на этом устройстве, коэффициенте загрузки этого уст- ройства в процентах и точке монтирования устройства (т.е. пути к каталогу, под именем которого это устройст- во присутствует в системе). Опробуйте разные варианты данной команды (df . / или df -к . /) либо обратитесь за дополнительной справкой по команде df к оператив- ным страницам руководства в вашей версии Unix. • Команда du. Еще одна команда, применяемая систем- ными администраторами для получения сведений об использовании дискового пространства по отдельным каталогам. Синтаксис этой команды также отличается в разных версиях Unix. Чаще всего она применяется в форме du -s *, т.е. запроса файловой системы об ис- пользовании пространства в текущем каталоге. Для каждого элемента данных в текущем каталоге по ко- манде du -s * возвращается сводка о дисковом про- странстве, занятом содержимым файлов или катало- гов, находящихся в указанном каталоге. В зависимости
152 Урок 10 от версии Unix команду du приходится вводить с клю- чом -к, чтобы заставить Unix выдать нужную инфор- мацию в килобайтах (в противном случае сведения об использовании дискового пространства выводятся в стандартных для файловой системы блоках размером, как правило, 512 байт). Сочетая эти команды с уже известными вам командами, вы можете вести точный учет использования свободного места на жестком диске и принять верное решение относительно тех данных, которые занимают много места на диске: переместить, удалить, заархивировать или поступить с ними иным образом. Продолжайте повторять изученные команды Как уже не раз подчеркивалось в предыдущих уроках, регулярно повторяйте изученные ранее команды, что- бы хорошенько их запомнить, и продолжайте практи- коваться в их применении. Ведь такими командами, как 1s, вам придется постоянно пользоваться во время ра- боты в Unix. Сжатие файлов в Unix Экономия места — единственная причина сжатия файлов. Ведь для того чтобы сэкономить место, нужно его освободить. Аналогичным образом приходится поступать с доступным местом в шкафу, рационально размещая и уплотняя в нем старые вещи, чтобы освободить место для новых. Именно по такому принципу выполняется сжатие данных. Кроме того, файлы можно сжать перед отправкой кому-то другому. Это обычная практика для отправки цифровых фо- тографий по электронной почте. Ведь у многих имеются циф- ровые фотокамеры для съемки и электронная почта для рас- сылки фотографий. Но из-за относительно больших размеров файлов фотографических изображений содержащие их сооб- щения электронной почты могут отвергаться, если в системе получателя недостаточно места или же в почтовом ящике по- лучателя на сервере электронной почты не помещаются фай- лы подобных размеров.
Инструментальные средства архивирования... 153 Итак, пояснив причины сжатия данных, рассмотрим внут- ренний механизм этого процесса. Представленные ниже команды могут быть использованы в системе с определенными ограничениями на дисковое про- странство с целью максимального увеличения доступного для использования пространства. Такие команды сокращают ме- сто, занимаемое файлами, и позволяют хранить больше фай- лов в выделенном дисковом пространстве. В Unix применяются три основные формы сжатия данных. • Сжатие файлов с помощью доступной в Unix команды compress. • Архивирование файлов с помощью личных программ пользователей или специальных программ независи- мых производителей для системы Unix (например, программы PKZIP). • Архивирование файлов с помощью программы gzip для систем GNU и Unix. Все эти формы будут рассмотрены как с точки зрения уплот- нения, так и с точки зрения разуплотнения данных, поскольку вы должны уметь не только уплотнять, но и разуплотнять дан- ные. Для каждой из этих форм имеется целый ряд программ сжатия и распаковки данных. Рассмотрим сначала стандартное (и редко применяемое) инструментальное средство, входящее в состав практически любого дистрибутива Unix. * Назначение сжатия данных - Применяя подходящий алгоритм, можно сжать файлы в целях экономии места и ускорения передачи файлов. Команда compress Эта команда вводится в следующем формате: compress <имя_файла>. Команда compress уже давно внедрена в Unix, и в ней применяется устаревший механизм сжатия данных. В действительности это инструментальное средство, как пра- вило, уже не применяется, хотя оно и доступно практически в любой версии Unix. В связи с появлением более совершен-
154 Урок 10 ных алгоритмов сжатия данных на смену команде compress пришли такие инструментальные средства, как gzip. Файлы, созданные по команде compress, имеют расшире- ние . Z, по которому они, собственно, и распознаются при вы- воде содержимого каталогов с помощью команды Is -1. Данные, сжатые по команде compress, распаковываются по команде uncompress в следующем формате: uncompress < имя_файла. Z>. Помните, как читаются файлы по команде cat? Команда zcat — разновидность команды cat — позволяет читать сжа- тые файлы вместо обычных текстовых файлов. Эта команда применяется в том же формате, что и команда uncompress: zcat <имя_файла. Z>. Еще раз напоминаем, что файлы, сжа- тые по команде compress, имеют расширение . Z. Пользуйтесь свободно распространяемыми X/ утилитами GNU Как правило, для экономного использования свобод- ного места применяются утилиты сжатия. Поэтому не ограничивайтесь только командой compress, а оль- зуйтесь вместо нее утилитой gzip. Команда gzip Разумеется, требуемого результата можно добиться и с помощью команды compress, но повторяем, что это устарев- шая утилита, уступающая во многих отношениях более но- вым утилитам. Кроме того, команда compress может немно- го отличаться в разных версиях Unix, что не совсем удобно, если данные, сжатые с помощью одной разновидности ко- манды compress, требуется распаковать с помощью другой. Единственная причина использования команды compress — ее наличие в локальной системе Unix. Вместо оригинального средства сжатия данных можно вос- пользоваться и менее оригинальным, например командой gzip (от “GNU zip” — “архивирование в системе GNU”), перво- начально предназначавшейся для сжатия данных в системе GNU/Linux и впоследствии принятой для применения во всех системах Unix по общедоступной лицензии GNU (GPL). Это оз-
Инструментальные средства архивирования... 155 начает, что данная утилита свободно доступна для применения и стандартизирована в качестве единого инструментального сред- ства практически во всех средах Unix и Linux. В текущих верси- ях команда gzip создает архивные файлы с расширением . gz. Команда gzip действует практически так же, как коман- ды compress, uncompress и zcat. Но в то же время это более совершенная и менее оригинальная утилита, чем такие уста- ревшие команды, как compress. Но для совместимости со сжатыми файлами, имеющим расширение . Z, в утилиты gunzip и gzcat внедрена возмож- ность оперировать такими файлами. Вы может обнаружить в своей локальной системе утилиты gzip и gunzip, но не найти утилиту gzcat. В некоторых дистрибутивах утилита gzcat переименована в zcat, поскольку она обрабатывает также сжатые файлы. В сочетании с tar (сокращенное название этой команды означает “Таре Archive” — “архив на магнитных лентах”) утилита gzip позволяет создавать файлы с расширением .tgz, tar .gz или tar. Z. Утилиты zip и unzip А теперь рассмотрим еще две утилиты, наиболее часто при- меняемые в Unix для сжатия и распаковки данных. Большинст- во пользователей ПК (независимо от того, знакомы они с Unix или нет) знают об архивных файлах ZIP. Команда zip выполня- ет сжатие на основании алгоритма, взятого из стандартной для ПК команды PKZip. Команды zip и unzip действуют так, как и следовало ожидать: zip <имя_файла> — для сжатия файла, a unzip <имя_файла> — для распаковки файла. Утилита bzip2 Недавно появилась утилита bzip2, которая, несмотря на свою относительную новизну, выглядит многообещаю- ще с точки зрения сильного уплотнения данных. Под- робнее об этом инструментально средстве сжатия' анх ж з ь a eb-ca те ор анизации bzip по адресу http.//www.bzip.org/.
156 Урок 10 Утилитам тальное средство сжатия данных с высоким качест- вом. Ее текущая версия 1.0.3 выпущена 15 февраля 2005 года, поэтому она может быть обновлена на мо- мент выхода данной книги в свет. Эта утилита, как правило, сжимает файлы на 10-15% плотнее, чем самье лучшие из имеющихся методов, причем работает два раза быстрее при сжатии и в шесть раз быстрее при распаковке данных. Такие по- казатели сжатия весьма привлёкатель ы, хотя многие пользователи по-прежнему верны утилите gzip. Синтаксис и дополнительные параметры утилиты bzip2 намеренно сделаны такими же, как и у gzip. Следова- F тельно, если эта утилита найдет широкое распростране- Я нйе, {пользователям Unix будет - Нетрудно ее освоить. Сжатие с помощью утилиты bzip2 выполняется в том : же формате, что и в gzip: bzip2 <имя__файла .bz2>. В итоге создается файл <имя_файла.bz2> к распа- ковка выполняется в аналогичном формате: bunzip2 <имя_фаила,bz2> В связи с тем что данная утилита пок еще не нашла > • {-{широкого распространения, обратитесь за справкой > локальной системе, если вам потребуется нестан- дартное уплотнение и распаковка данных. Создавать сжатые файлы в формате zip (т.е. с расширени- ем . Z, принятым в Unix) для распространения среди других пользователей Unix обычно не рекомендуется, поскольку утилиты zip и unzip не всегда для них доступны. Они относятся к категории свободно распространяемого про- граммного обеспечения, поэтому вы можете попросить своего системного администратора установить их, если вам нужно иметь доступ к ним. Если же сжатые файлы предназначены для пользователей Macintosh или Windows, формат zip для этой цели не годится, поскольку такие пользователи вряд ли смогут прочитать файлы в данном формате. У команд zip и unzip имеется целый ряд по- лезных дополнительных параметров, перечень которых можно вывести, выдав любую из этих команд вместе с ключом -h.
Инструментальные средства архивирования... 157 В этом разделе было показано, каким образом данные сжи- маются в Unix, в том числе с помощью команды tar, а в сле- дующем разделе эта команда будет рассмотрена более подробно. Команда tar Если вы часто пользуетесь Unix, то, вероятнее всего, вы уже сталкивались с файлами формата tar. Команда tar очень удобна и часто применяется для архивирования и распространения личных файлов. Если вы собираетесь и далее продолжать изуче- ние Unix, непременно ознакомьтесь поближе с возможностями команды tar. Как упоминалось выше, название команды tar означает “архив на магнитных лентах”, хотя она применяется для стандартной упаковки данных. Если первоначально она предназначалась для резервного копирования данных на маг- нитную ленту, то в настоящее время она может быть использо- вана для сохранения данных на любом носителе. А что означает “упаковка данных”? Допустим, что вам нужно отослать кому-то созданную вами программу в виде нескольких файлов. Для этой цели вы можете создать единый файл, вклю- чающий в себя все остальные файлы или каталоги и похожий на пакет. Цель объединения ряда файлов в единый файл — упро- стить архивирование, хранение и пересылку данных в уплот- ненном виде. Если команда tar применяется отдельно, она соз- дает файлы с расширением . tar. А если она применяется вместе с утилитой gzip для сжатия данных, в итоге получается файл с расширением tgz, tar. gz или tar. Z. В простейшем виде команда tar создает или распаковыва- ет архивные файлы. При создании архива в команде tar ука- зываются имя файла архива и перечень файлов, которые должны в него войти. Команда tar соберет все указанные файлы и поместит их в единый файл, обычно называемый tar- файл (tarball). При распаковке архивов в команде tar указывается имя файла архива, из которого в текущий или указанный каталог извлекаются файлы с теми же именами, путями и содержи- мым, что и до их архивирования. Воспользуйтесь командой tar, придерживаясь следующей процедуры.
158 Урок 10 1. Выберите данные, которые требуется заархивировать, и придумайте подходящее имя для архивного файла фор- мата tar. Так, в имени архивного файла можно также указать дату его создания, чтобы в дальнейшем можно было понять, что это за архив. Разумеется, это не строгое правило, но его рекомендуется придерживаться. 2. Выдайте команду tar -cvf <имя_файла. tar> <имена файлов или каталогов>. А теперь обратимся к конкретному примеру. Допустим, что имеется каталог storage, который требуется заархивировать. Все, что находится в этом каталоге, упаковывается в архивный файл по следующей команде tar: tar -cvf storage030105.tar storage В данном примере содержимое каталога tar было поме- щено в архивный файл storage030105. tar. В имени этого файл указана дата его создания, чтобы упростить отслежива- ние сохраняемых данных. Кроме того, в данном примере ис- пользованы дополнительные параметры -cvf команды tar. Поэтому рассмотрим более подробно возможности этой ко- манды и ее дополнительных параметров. Команду tar можно применять со многими дополнитель- ными параметрами. Так, если ввести tar —help, то можно получить довольно внушительный перечень свойств и функ- ций команды tar. В приведенном выше примере использова- ны дополнительные параметры (ключи) -cvf команды tar. В частности, ключ -с указывает Unix на намерение поль- зователя создать новый архив. Ключ -v (подробности) позво- ляет вывести все упакованные в архив файлы. Ключ -f ука- зывает Unix на необходимость поместить исходные данные в архивный файл. Таким образом, в новый архивный файл включено все со- держимое каталога storage, в том числе его структура и атри- буты файлов. Для распаковки архивного файла формата tar достаточно выдать команду tar -xvf <имя_файла. tar>, В данном случае используются те же самые дополнитель- ные параметры, кроме ключа -х, который служит для извле- чения файлов из архивного файла формата tar, например: > tar -xvf storage030105.tar
Инструментальные средства архивирования... 159 После подробного перечисления содержимого архива его содержимое извлекается в текущий каталог. Если содержи- мое архивного файла требуется просмотреть перед тем, как его извлекать, это можно сделать с помощью следующей ко- манды: tar -tvf <имя_файла. tar>. Ключ -t в этой коман- де служит для вывода списка файлов, составляющий архив, вместо их распаковки. Это удобно для оперативного просмот- ра содержимого архива. Применение утилит uuencode и uudecode Для пересылки файлов другому лицу по протоколу FTP (протоколу передачи файлов от отправителя к получателю) и по электронной почте требуется дополнительная настройка. Так, если почту требуется отправить пользователю Macintosh, в этом случае приходится учитывать другую систему кодиро- вания — Binhex. То же самое относится к пользователям Windows, хотя в электронной почте Windows используется утилита uuencode. Таким образом, пользователь Unix должен уметь настраивать свою электронную почту средствами Unix. Что такое uuencode Сокращенное название uuencode .означает ряд алго- ритмов преобразования файлов в последователь- ность 7-разрядных символов в коде ASCII для переда- ? чи по Internet Первоначально сокращение uuencode означало кодирование Unix-Unix, но затем данный протокол стал универсальным для обмена файлами между разнотипными платформами, "включая Unix, Windows и Macintosh. Кодирование Unix-Unix особенно (эаспространёно при отправке вложений электронной почты. Практически все приложения электронной поч- ты поддерживают кодирование Unix-Unix для отправки вложений и декодирование ир1х-ип1х^дая получения подобных вложений.
160 Урок 10 Утилита uuencode воспринимает любой файл как входной и кодирует его таким образом, чтобы его можно было вклю- чить в сообщение электронной почты. Для пользователя со- держимое такого файла выглядит, как произвольный набор символов. Но на принимающей стороне исходный файл мо- жет быть восстановлен с помощью утилиты uudecode. Итак, воспользуйтесь командой uuencode, придержива- ясь следующей процедуры. 1. Выберите файл, который требуется отправить по элек- тронной почте. 2. Выдайте команду uuencode <имя_файла> <новое имя файла> > <имя_файла>.uue (знак > следует ука- зывать перед аргументом <имя_файла>. uue). В итоге будет сформирован файл <имя_файла>. uue, со- держащий вариант исходного файла в коде Unix-Unix. Так, если имеется файл test, который требуется получить в коде Unix-Unix, введите следующую команду: > uuencode testsend > testsent test.uue В данном примере формируется файл test .uue, который по- сле декодирования получает имя testsent и имеет то же содер- жимое, что и файл testsend. Теперь закодированный файл можно скопировать и вставить или иным образом включить в со- общение электронной почты, а затем отправить его куда угодно. Разумеется, при получении файла в коде Unix-Unix его нужно уметь декодировать. Это нетрудно сделать с помощью команды uudecode <имя_файла .uue>. Декодированный файл помещается в текущий каталог и ничем не отличается от исходного файла. Резюме В этом уроке были представлены методы архивирования и сжатия файлов и других данных в системе Unix. На этом рассмотрение темы управления файлами завершается. В сле- дующем уроке речь пойдет о командном процессоре и, в част- ности, о процессах, выполняющихся в системе Unix. Ниже приведено краткое изложение данного урока.
Инструментальные средства архивирования... 161 • В системах Unix нашли применение три утилиты сжа- тия данных: устаревшая — compress, более новая — gzip и межплатформенная — zip. Относительно но- вым дополнением инструментальных средств сжатия данных в Unix является утилита bzip2, которая обес- печивает более качественное сжатие данных, чем compress или gzip. • Если требуется передать другим пользователям ряд фай- лов или просто заархивировать файлы, чтобы применять их в дальнейшем, воспользуйтесь командой tar, по ко- торой создаются архивные файлы формата tar, содер- жащие все исходные файлы в одном удобном пакете. • Если файл нужно отправить по электронной почте, его можно включить в почтовое сообщение, предваритель- но закодировав с помощью утилиты uuencode. • Не впадайте в отчаяние, если после декодирования файла с помощью утилиты uudecode вы не сможете сразу его обнаружить. Настоящее имя файла указано открытым текстом в начале файла.

Урок 11 Управление процессами в Unix Этот урок посвящен работе с внутренними процессами Unix. В этом уроке мы продолжим раскрывать истинный потен- циал Unix, показав внутренний механизм работы этой систе- мы на примере происходящих в ней процессов. Все инстру- ментальные средства, с которыми вы ознакомились на прак- тике в первых 10 уроках данной книги, создают в системе Unix процессы. Так, по команде запуска клиентского прило- жения электронной почты (например, sendmail) в Unix ини- циируется внутренний процесс, поддерживающий данное приложение. Каждая команда, выполняемая в Unix, создает отдельный процесс, который выполняется в данной системе вплоть до своего завершения или уничтожения. Уничтожить процесс в Unix означает положить ему конец. р Что такое “процесс” Терм но процесс обычном смысле обозначается процедура или конкретный ход действия с целью дос- тижения желаемого результата. А в вычислительной технике (и среде Unix, в частно- сти) процесс — это отдельный выполняемый модуль, который называется также кодом или программой и выполняется параллельно с другими выполняемы- ми модулями. Unix — весьма гибкая система. В ней можно создавать процессы, выполняющиеся полностью в фоновом режиме и начинающиеся в полночь, не требуя от пользователя входа в систему. В этом уроке вы научитесь пользоваться Unix для
164 Урок 11 запуска и остановки процессов. Кроме того, вы ознакомитесь с командами, помогающими автоматизировать процессы. Ав- томатизация в данном случае означает, что команды не нуж- но вводить вручную. Это можно сделать автоматически с по- мощью такого инструментального средства, как команда at, чтобы облегчить свой труд. Многозадачность В этом разделе мы рассмотрим известное понятие много- задачности и его практическую реализацию в Unix. Многоза- дачность — это способность ЦП (центрального процессора, т.е. мозгового центра системы Unix) выполнять одновремен- но несколько операций. Это, например, означает, что в систе- ме одновременно могут работать текстовый редактор и кли- ентское приложение электронной почты, не приводя к ее ава- рийному отказу. В Unix многозадачность означает одновре- менное выполнение нескольких процессов. Напомним, что в Unix каждая используемая команда или программа счита- ется отдельным процессом. Фоновые процессы Нередко процесс, который выполняется в системе Unix, совсем не обязательно видеть или использовать. Если такой процесс выполняется в приоритетном режиме, то пользова- тель только тратит зря время, наблюдая за ним и не вводя в него данные. В подобных случаях процесс удобнее перевес- ти в фоновый режим. Ведь если процесс выполняется в при- оритетном режиме, он обычно отнимает много ресурсов сис- темы, тогда как фоновый процесс может выполняться прак- тически без вмешательства пользователя. Для того чтобы выполнить команду, например, cron или at в фоновом режиме, достаточно ввести амперсанд (&) в кон- це строки, содержащей данную команду. Команда cron обычно применяется для планирования заданий, регулярно выполняемых после указанного периода времени. А команда at служит для организации выполнения указанных команд в конкретное время. Обе команды будут рассмотрены более подробно далее в этом уроке.
Управление процессами в Unix 165 Применение комбинации клавиш <Ctrl+z> и команды bg В Unix любой выполняющийся процесс можно остановить, нажав комбинацию клавиш <Ctrl+z>. Совсем другое дело — приостановить выполнение команды и перевести данный про- цесс в фоновый режим. Для этого нужно уметь пользоваться не только комбинацией клавиш <Ctrl+z>, но и командой bg. Для того чтобы перевести любой процесс в фоновый режим, нажмите сначала комбинацию клавиш <Ctrl+z>, чтобы приос- тановить выполнение данного процесса в приоритетном режиме, т.е. если он был запущен на выполнение из командной строки без указания амперсанда. Рассмотрим следующий пример: Ctrl+z [10]+ Stopped at 2 В данном примере было приостановлено выполнение ко- манды at, которой был присвоен номер задания 10. Идентификационный номер процесса (PID), отображае- мый по команде ps, представляет собой номер, используемый ядром операционной системы для отслеживания каждого процесса, выполняющегося в системе. Он отличается от но- мера задания тем, что обозначает процесс глобально, тогда как номер задания обозначает его локально в конкретном се- ансе работы пользователя в системе. S РЮ и задание С одно с о он I, каждому процессу, ы оляющемуся в системе Unix, присваивается уникальный номер PID: А с другой стороны, каждому запускаемому на выпол- нение процессу присваивается номер задания, кото- рый уникале то ько дл текущего сеанса работы в системе. Если открыть ок о терм нала и ввести ко- манду, то первой команде обычно присваивается но- мер задания 1. Если же открыть еще одно окно терми- нала и за устить еще один процесс, он также получит номер задания 1 в данном сеансе работы в системе. Использование номера задания на отдельном терми- нале оказывает влияние только на процесс, запущен- ны" с это о терминал . Таким образом, номера РЮ
166 Урок 11 применяются глобально, т.е. по всей системе, для от- слеживания процессов, тогда как номера заданий — локально, т.е. в тех сеансах работы в системе, в кото- рых они были запущены на выполнение. Для того чтобы перевести приостановленный процесс в фоновый режим, достаточно указать в команде bg номер за- дания. Если продолжить приведенный выше пример, то дан- ная команда будет выглядеть следующим образом: >bg %10 Как видите, команда bg перевода процессов в фоновый ре- жим удобна для одновременного выполнения нескольких зада- ний под полным контролем пользователя, работающего в Unix. Команда f g Процессы можно не только переводить в фоновый режим, но и возвращать в приоритетный режим. Это делается с помощью команды f g перевода процессов в приоритетный режим. Так, ес- ли команду at из приведенного выше примера требуется вернуть в приоритетный режим, для этого достаточно ввести следующую команду: >fg %ю С помощью команды fg процесс, с которым нужно рабо- тать, можно оперативно перевести в приоритетный режим, а по завершении работы с ним вернуть его в фоновый режим по команде bg. Команда j obs Во время работы в Unix можно очень легко забыть, какие локальные процессы выполняются в данный момент. Допус- тим, что вам нужно перевести фоновый процесс в приоритет- ный режим, но вы не знаете номер его задания. На помощь вам придет команда jobs. Достаточно ввести ее из командной строки, и она выдаст номера заданий любых процессов, кото- рые вы запускали и останавливали во время работы в системе: > jobs
Управление процессами в Unix 167 Кроме того, команда jobs предоставляет предысторию выполнения заданий. С ее помощью можно получить пере- чень всех запущенных и остановленных процессов. А теперь перейдем к одной из самых важных для этого урока команд: ps. Команда ps По команде ps выводится перечень текущих процессов. С помощью этой команды можно также выполнять процессы. Команда ps оказывается весьма полезной, поскольку, начав однажды пользоваться фоновым режимом в Unix, вы в ка- кой-то момент обнаружите, что вам нужно знать обо всех те- кущих процессах. Ведь если вы будете и далее бесцельно за- пускать один процесс за другим, то в конечном итоге в систе- ме будет выполняться намного больше процессов, чем вам требуется на самом деле. В Unix команда ps водится по при- глашению командного процессора, после чего выводится ре- зультат ее выполнения, аналогичный следующему: >ps PID TTY STAT TIME COMMAND 8832 pl R 0:00 ps 30675 pl S 0:00 -bash (Output removed) Результат выполнения команды ps представляет собой перечень всех команд, выполняющихся в данный момент. Не впадайте в отчаяние, если получите несколько иной резуль- тат. Ведь результаты выполнения команды ps могут отли- чаться в разных версиях Unix и Linux. Тем не менее в каждой версии в целом выводится единообразная информация. Как же интерпретировать подобный результат? Слева на- право в столбцах такого результата указываются идентифика- ционный номер процесса в системе (PID), управляющий тер- минал, состояние процесса (выполнение, ожидание и т.д.) и сам процесс. В некоторых версиях системы состояние про- цесса не указывается, хотя это зависит от конкретного дистри- бутива Unix. Но в большинстве случаев по команде ps предос- тавляется наиболее важная информация о процессах в системе, в том числе название процесса и его номер PID.
168 Урок 11 7^ Где искать процессы < Как следует из приведенного выше примера, в сис- теме выполнялось лишь два процесса. Но все ли это процессы? Ведь в системе должны быть и другие процессы, не так ли? Так, но для просмотра всех этих процессов нужно указать в команде ps соответствующий ключ. Если вы просто введете команду ps, то в ответ получите пере- чень всех процессов, принадлежащих вам, А для вы вода перечня процессов, принадлежащих всем поль- зователям, данную команду нужно ввести в одном из следующих форматов: ps -ахйлиря -ef. Помимо сведений о текущих процессах, получаемых по команде ps, вам нужно также знать и уметь останавливать или уничтожать процессы. Команда kill С помощью команды kill можно останавливать выполне- ние указанного процесса. Следует, однако, иметь в виду, что если остановить по команде kill такой процесс, как, напри- мер, текстовый редактор vi, то можно потерять всю проде- ланную в этом редакторе работу. Как правило, команда kill служит для окончания процесса, хотя ее можно использовать и для передачи процессу определен- ных сигналов. Такие сигналы посылаются для обозначения кон- кретного действия. На самом деле в команде kill можно указать самые разные сигналы. Перечень всех сигналов, применяемых в Unix, можно получить по команде kill -1: >kill -1 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) 5) SIGTRAP 6) SIGIOT 7) SIGBUS 8) 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) 30) SIGPWR SIGILL SIGFPE SIGUSR2 SIGCHLD SIGTTIN SIGXFSZ SIGIO
Управление процессами в Unix 169 В документации на программное обеспечение, применяемое в системе Unix, нередко указывается информация о сигналах, на которые оно реагирует. Чаще всего используются сигналы SIGHUP и SIGKILL. Так, по сигналу SIGHUP серверный процесс останавливается и перезагружается информация его конфигу- рации. А по сигналу SIGKILL процесс уничтожается. Таким образом, команду kill можно использовать в следующем фор- мате: kill -< номер сигнала> <идентификационный номер процесса> <идентификационный номер процесса> Например, для уничтожения процесса номер 8832 введите следующую команду: >kill -9 8832 Если вновь просмотреть перечень текущих процессов, в нем будет отсутствовать процесс PID 8832, поскольку он успешно уничтожен. Следовательно, проверяйте окончание процесса по команде ps. То же самое можно сделать по команде jobs. Контроль процессов Для оперативного определения текущих процессов и непрерывного обновления их перечня, предостав- ляемого пользователю для просмотра, сложит коман- да top. Эта команда очень удобна, если вам нужно знать, что происходит в Unix. Кроме того, команда top предоставляет^! сведения о времени выполнения и приоритете каждого процесса. Для выхода из команды top нажмите , комбинацию клавиш <Ctrl+c> или клавишу <q>. А теперь, когда показаны особенности применения таких команд управления процессами в Unix, как top, jobs, ps и kill, рассмотрим другие команды данной категории, а именно: cron и at. Команды at и cron До сих пор мы лишь вскользь упомянули команды, кото- рые позволяют автоматизировать процессы. Ведь автомати- зация — это самый простой и эффективный способ выполне-
170 Урок 11 ния задания. Если вы освоите методы и средства автоматиза- ции, то вам нетрудно будет настроить задание один раз, чтобы выполнять его регулярно по установленному графику. В дан- ном разделе урока будет показано, каким образом выполне- ние заданий в Unix автоматизируется с помощью команд at и cron. Здесь можно было бы немало сказать об организации выполнения сложных процессов (например, резервного ко- пирования) с помощью этих команд, но, к сожалению, углуб- ленное рассмотрение данной темы выходит за рамки настоя- щей книги. А пока что вам достаточно знать, что это довольно развитые команды, и поэтому требуют интенсивного изуче- ния, что вы можете сделать самостоятельно, если продолжите работать с Unix. Что же касается организации резервного копирования во- обще, то подобные задания планируются в Unix с помощью команд at и cron. Покажем, как это делается. Страхование от ошибок .. . - - Без резервного копирования трудно обойтись, если . требуется восстановить данные (файлы и каталоги), которые были удалень или испо чены по ошибке. Unix не прощает ош бок, и ес ошибка сове Шена, то единственный способ исправить положе ие — о- лучить копию отсутствующих или удаленных данных. Такую копию можно лучит езерв о о сто н - ка, которым для вас о ее я яетс , е а резервного копирования на магнитных лентах, если вы аход тесь на рабо е. дома им может бьть лю- бое устройство хране ия да ь ри од ое для ре- зе ного копирования. Помните что резервные ко- пи очень важны, п ольку ни дают возмож ость восс а овить утерян ье и спор е ные а ные в любой момент. Систему Unix можно настроить на выполнение команды или процесса в конкретное время двумя способами: в одном случае воспользоваться командой cron, в другом — командой at. Как правило, процесс cron всегда выполняется в системе Unix, но если эта команда не нужна, она отменяется систем- ным администратором. (Из соображений безопасности в систе-
Управление процессами в Unix 171 ме удаляются, отменяются и прекращаются все процессы, ко- торые не нужны пользователям для их работы. Если вы рабо- таете с Unix дома ради интереса и зарегистрировались в каче- стве привилегированного пользователя с корневой учетной за- писью, то в вашей системе может работать практически все что угодно.) В любом случае команда cron, если она активизиро- вана, позволяет автоматизировать такие сложные задания, как периодическая замена системных журналов, резервное копи- рование, очистка и прочее. Все эти операции команда cron вы- полняет по установленному пользователем непрерывному гра- фику. В частности, она позволяет выполнять команды с интер- валом минимум в одну секунду и максимум в один год. Кроме того, в операционных системах Unix и Linux неред- ко используется файл crontab, создаваемый для хранения информации о периодичности выполнения конкретной ко- манды. Для ввода запроса на выполнение команды в систем- ный файл crontab служит команда crontab <имя_файла>. А в некоторых версиях Unix элементы данных из файла crontab могут быть введены непосредственно в редактор по команде crontab -е. Применение команды cron Как упоминалось выше, процесс cron, называемый иначе демоном cron, выполняет отдельные команды по указанным дате и времени. С помощью команды cron определенные дей- ствия в системе можно планировать, как однократные события или как регулярно повторяющиеся задания. Следует, однако, иметь в виду, что на применение команды cron и выдачу ей за- просов на выполнение заданий нужно получить соответствую- щее разрешение. В большинстве систем такое разрешение дает системный администратор. А в некоторых коллективно ис- пользуемых системах разрешение на применение команды с г on tab дает только системный администратор, поскольку в таких системах используется лишь один файл crontab. Выше уже отмечалось, что для указания периодичности выполнения команд (например, ежечасно, ежедневно или еженедельно) служит команда crontab. Эта команда создает файл crontab, содержащий команды и инструкции для вы-
172 Урок 11 полнения демона cron. Команда crontab может быть ис- пользована со многим дополнительными параметрами. По- этому, овладев этой командой, вы сможете автоматизировать практически любой процесс с какой угодно целью. А теперь покажем, как действует команда crontab. Для того чтобы воспользоваться этой командой, введите crontab, соответствующий ключ, а затем имя файла, кото- рым будет обозначаться сформированный файл crontab. За- частую дополнительные параметры не указываются, а просто вводится команда crontab <имя_файла>, чтобы сохранить данный файл как crontab. Ниже приведен пример примене- ния команды с г on tab: rontab -а имя_файла Ключ -а, который не всегда требуется в некоторых системах Unix, указывает на формирование файла в качестве crontab. Вы можете воспользоваться и другими ключами данной команды. Если, например, команда crontab вводится с ключом -е, файл сrontab может быть отредактирован, что очень удобно для сме- ны процессов. Для вывода содержимого файла сrontab служит ключ -1, а для удаления файла crontab — ключ -г. Подробные сведения об остальных ключах команды crontab можно полу- чить на соответствующих оперативных страницах руководства, но эти ключи более сложные и применяются, в основном, сис- темным администратором. Впрочем, и приведенной здесь ин- формации вполне достаточно, чтобы приступить к локальной ав- томатизации в системе Unix. Каждый элемент данных в файле crontab состоит из шести полей обозначающих по порядку следующую информацию: minute(s) hour(s) day(s) month(s) weekday(s) command(s) Шесть полей разделены пробелами или знаками табуляции. В первых пяти полях указываются целые числовые значения минут, часов, дней, месяцев и недель, а в шестом — выполняе- мые команды (одиночные процессы, последовательность ко- манд или сценарий командного процессора). Подробнее о сце- нариях командного процессора речь идет в уроке 14.
Управление процессами в Unix 173 ' Аккуратно пользуйтесь командами cron и at 1 ^РежДе чем воспользоваться командой cron, crontab '• или at, настоятельно рекомендуется узнать у систем- ного администратора, работают ли в системе другие пользователи. Ведь планирование процессов вслепую может отрицательно сказаться на работе других поль- зователей в системе (напомним, что Unix-— много- пользовательская система). И если вы запустите на выполнение слишком много процессов или заплани- руете их неправильно, это может привести к серьез- ным осложнениям, которые почувствуете на себе не только вы, но и все, кто пользуется вашей системой. Предупреждения о затруднениях, связанных с выпол- нением команд cron, crontab и at, могут и не посту- пить. Но если при выполнении задания cron, указан- ного в файле crontab, формируются сообщения об ошибках, вы получите по электронной почте сообще- ние с указанием этих ошибок. Применение команды at Команда at позволяет выполнять процессы однократно, а не периодически, как команда cron. Это удобно для планиро- вания заданий, требующих значительных вычислительных ресурсов, на нерабочее время, чтобы не оказывать влияния на выполнение других заданий. Для планирования однократно выполняемого задания служит команда at или batch. Так, для передачи задания на выполнение достаточно ввести саму команду at и время вы- полнения задания (т.е. дату и время), например: > at runtime Однако после нажатия клавиши ввода происходит лишь переход в другой режим со следующим приглашением в ко- мандной строке: at> Это приглашение может отличаться в разных дистрибути- вах Unix, но, как правило, оно соответствует приведенному
174 Урок 11 выше. По этому вспомогательному приглашению следует вве- сти команду, которую требуется выполнить. Состояние дан- ной команды можно проверить на системной консоли. Две равноценные команды Команда batch аналогична команде at. У нее тот же са- мый синтаксис, но время выполнения не указывается. Итак, рассмотрим команду at в действии на следующем примере: > at noon at>tar -cf /users/rob/storage storage.tar at>Ctrl-d В данном примере команде at передано задание, которое должно быть выполнено в полдень того же дня, если задание было передано утром, или же в полдень следующего дня, если оно было передано после полудня. В указанное время по ко- манде at будет создан архив каталога /users/rob/storage storage в файле storage, tar. Для выхода из процесса at и возврата к приглашению командного процессора достаточ- но нажать комбинацию клавиш <Ctrl+d>. Оперативная справка Обо всех рассмотренных выше омандах можно узнать еще емало. Почаще пользуетесь one а ив ым с ра- ницам ру оводе а, обь о ит т х к хотя бы а са о элемента^ о у вне и ввод тг х с консоли быстро и без ошибок. Вы уже сами смогли убедиться, что изучать Unix и пользоваться этой систе- мой не так уж сложно, ужно олько делат это регу- лярно. Дополнительные сведения о представленных в этом уроке командах вы можете получить на следую- щих оперативных страницах уководс за: man crontab man cron, man at и man batch
Управление процессами в Unix 175 Резюме В этом уроке пройдено немало материала, но мы косну- лись лишь основ. К сожалению, в 10-минутный урок трудно вместить все, что следует знать о командах cron и at. Более подробные сведения о них можно получить из оперативных страниц руководства. Поначалу освоить процессы непросто, но, возможно, вам вообще не придется заниматься ими, разве что переводить их в фоновый режим и обратно — все зависит от того, как и для чего вы пользуетесь системой Unix. В среде KDE процессы действуют так же, как в любой другой на- стольной операционной системе. С другой стороны, вы може- те без труда перейти к командной строке и воспользоваться рассмотренными выше командами или оперативными стра- ницами руководства по ним. Кроме того, помощь можно по- лучить и в справочной системе X Window System. Ниже приведено краткое изложение данного урока. • Амперсанд (&). Указывается в конце строки для пере- вода процесса в фоновый режим. Это обычно делается для выполнения длительных заданий, практически не требующих вмешательства со стороны пользователя. • Команды bg и f g. Служат для перевода процессов в фо- новый или приоритетный режим и обратно. • Команда ps. Выводит перечень всех процессов, выпол- няющихся в системе. Позволяет также просматривать процессы, находящиеся под управлением других поль- зователей, хотя изменить приоритет этих процессов или уничтожить их нельзя. • Команда kill. Служит для отправки сигнала процессу. Как правило, такой сигнал прекращает выполнение процесса. В других случаях с помощью данной коман- ды можно перезагрузить файл конфигурации програм- мы или повторно инициализировать ее. • Команда nohup. При выходе из командного процессора посылается сигнал SIGHUP (“зависание”) всем процес- сам, выполняющимся в этом командном процессоре.
176 Урок 11 Для того чтобы возобновить выполнение процесса даже после выхода из системы, служит команда nohup. • Команды nice и renice. У каждого процесса в системе имеется свой приоритет, определяющий время процес- сора, которое выделяется для выполнения данного процесса. Приоритеты назначаются в пределах от -20 до 20, причем отрицательные числа означают более вы- сокие приоритеты. • Команда top. Выводит время процессора, затраченное на процессы, выполняющиеся в системе. Эта информа- ция постоянно обновляется, что позволяет определить время процессора, выделяемое для новых процессов, вводимых в систему. • Команды at и crontab. Служат для планирования за- даний на определенные периоды времени их выполне- ния в системе. Но прежде чем делать это, обратитесь за помощью к системному администратору и соответст- вующим оперативным страницам руководства.
Урок 12 Ввод и вывод Этот урок посвящен управлению процессами в Unix, В нем будет рассмотрена организация ввода-вывода в данной системе. Теперь вы уже немало знаете об операционной системе Unix. В предыдущем уроке были рассмотрены процессы (или демоны), которые выполняются на Unix-машине при вводе соответствующих команд и запуске других инструменталь- ных средств Unix. А в этом уроке будут представлены основы организации ввода-вывода в Unix. Если в предыдущих уроках были представлены файловая система и процессы, а также методы управления ими, то теперь мы рассмотрим взаимодействие между процессами посредст- вом переадресации ввода-вывода в системе Unix. Ввод со сто- роны пользователя и вывод результатов из программы обратно пользователю называется в Unix потоком, который в целом считается потоком информации. Потоки положены в основу принципа действия переадресации, которая происходит в том случае, если программе предписывается отправить часть пото- ка (вывода) в какое-то другое место, а не обратно пользовате- лю, что обычно делается по умолчанию. Цель данного урока — представить ряд свойств ввода- вывода в операционной системе Unix и помочь вам освоить их на практике. Этот 10-минутный урок построен таким образом, чтобы раскрыть истинный потенциал управления вводом- выводом в Unix. Более углубленно данную тему вам придется изучить самостоятельно, обратившись, например, к такому на- дежному источнику, как оперативные страницы руководства.
178 Урок 12 Переадресация ввода-вывода В Unix переадресация ввода-вывода означает не более чем передачу ввода-вывода в другое место, отличающееся от ис- пользуемого по умолчанию, с указанием конкретного места назначения. Такая переадресация обозначается специальны- ми символами. Следует иметь в виду, что в каждом командном процессоре Unix переадресация обозначается стандартным набором сим- волов. • Символ < переадресует стандартный ввод из файла • Символ > переадресует стандартный вывод в файл Для переадресации ввода-вывода применяются и другие символы, но пока что вам нужно научиться пользоваться этими двумя наиболее часто применяемыми символами. Их применение можно показать на примере команды cat, с которой вы ознакомились при изучении методов чтения файлов. Команда cat отлично подходит для этой цели, поскольку она связывает вместе несколько файлов, указываемых в ка- честве аргументов, и копирует их содержимое в стандартный поток вывода STDOUT. Если команда cat используется в формате cat < имя_файла9 стандартный ввод для данной команды заменяется указанным. Если же команда cat вво- дится без аргументов, она просто повторяет ввод, отправляя его обратно на терминал. А если она применяется в формате cat > имя_файла, то ввод-вывод переадресуется таким обра- зом, что вся вводимая информация направляется в файл: >cat 1 1 2 2 Ctrl+d В данном примере показано, что, если команда cat ис- пользуется без аргументов, она просто копирует свой теку- щий ввод на свой вывод. Именно поэтому набранная вами
Ввод и вывод 179 цифра 1 любезно возвращается вам обратно командой cat. После вызова команда cat ожидает от вас ввода, а затем по- вторяет его в качестве своего вывода. Именно так ввод-вывод и действует в Unix на самом элементарном уровне. А теперь покажем, как действует переадресация ввода- вывода на примере той же команды cat. Вам уже известно, каким образом файлы копируются из одного места в другое по команде ср. Следующий пример демонстрирует, как это делается с помощью переадресации и команды cat: > cat < testfilel > testfile2 Из этих простых примеров вам должны стать понятными принцип действия переадресации ввода-вывода и порядок применения специальных символов для этой цели. В частно- сти, последний пример наглядно показывает, что переадреса- цию ввода и вывода можно объединить в одной команде. В этом примере один символ был использован для переадре- сации ввода в команде cat, а другой— для переадресации вывода. При этом было изменено используемое по умолчанию направление стандартного потока ввода STDIN и стандартно- го потока вывода STDOUT. Стандартный ввод-вывод Итак, пояснив принцип действия ввода-вывода и его пере- адресации, перейдем к рассмотрению понятий стандартного потока ввода, вывода и ошибок. В этом разделе урока будет показано, каким образом ввод, вывод и ошибки воспринима- ются по умолчанию в Unix. Во всякой программе, создаваемой для Unix, должна быть предусмотрена возможность воспринимать ввод. Ведь принцип ввода-вывода положен в основу работы Unix, а следовательно, он должен быть соблюден и в программах, работающих в этой системе. В режиме работы из командной строки пользователю предоставляются все возможности для управления вводом- выводом. Именно поэтому символы переадресации ввода- вывода могут быть также использованы в сценариях команд- ного процессора, подробнее рассматриваемых в уроке 14. В предыдущем уроке вы научились пользоваться командой
180 Урок 12 cron для автоматизации процессов, но с ее помощью можно и организовать автоматическое выполнение сценариев. Если вы освоите как следует командный процессор, команды и процес- сы, а также написание сценариев командного процессора, то возможности Unix, которые вы получйте в свое распоряжение, окажутся вне конкуренции. Гибкость Unix проявляется во всех мыслимых аспектах. В частности, один из возможных вариан- тов управления вводом-выводом состоит в переадресации ввода из любого стандартного места в любое другое указанное место. Как упоминалось выше, ввод и вывод можно перенапра- вить из файла и в файл, но это далеко не единственный способ управления вводом-выводом. Содержимое файла можно так- же направить адресату в качестве электронной почты. Следо- вательно, возможности управления вводом-выводом практи- чески безграничны. Главное — освоить команды и символы переадресации и научиться ими пользоваться. Кроме того, программы можно объединить в конвейер, где стандартный поток вывода STDOUT одной программы посту- пает непосредственно на стандартный поток ввода STDIN другой программы. Примером тому может служить направ- ление вывода электронной почты непосредственно на прин- тер. Конвейеры будут рассмотрены более подробно в послед- нем разделе этого урока. Поток STDIN Сокращение STDIN означает стандартный ввод. STDIN — это входное соединение программы. При этом программа ожи- дает появления в STDIN входящего потока данных от пользо- вателя (или из иного места), а затем пользовательский ввод чи- тается из потока STDIN. Как упоминалось выше, данные могут быть переадресованы или направлены по конвейеру в поток STDIN программы из любого источника, что и было продемон- стрировано на примере команды cat. Нормальный ввод для программы обычно организуется из наиболее типичного пери- ферийного устройства ввода— клавиатуры. Рассмотрим еще раз последний из приведенных выше примеров: > cat < testfilel > testfile2
Ввод и вывод 181 В этом примере для потока STDIN изменяется используе- мый по умолчанию канал ввода и указывается другое место ввода, которым в данном случае является файл testfilei, а не выбираемая по умолчанию клавиатура. При взаимодействии пользователя с командой, указывае- мой в командной строке аналогично cat, программа читает данные, введенные пользователем, из потока STDIN. Если же вы предпочитаете не вводить данные вручную, укажите файл и переадресуйте его в поток STDIN с помощью символа <, вводимого слева от команды. Поначалу такой принцип пере- адресации понять нелегко, но если проявить усердие и опро- бовать этот принцип на приведенных выше и других приме- рах, он станет в итоге более понятным. Нужно только дейст- вовать постепенно, начиная с самого простого примера, а затем переходя к более сложным примерам, и тогда вы научитесь разбирать даже самые .замысловатые сценарии. А теперь рас- смотрим стандартный поток вывода STDOUT. Поток STDOUT Сокращение STDOUT означает стандартный вывод. STDOUT— это выходное соединение, предоставляемое про- граммам системой Unix. Аналогично переадресации потока STDIN из файла для отправки вывода команды в файл можно переадресовать поток STDOUT. Символ > направляет поток STDOUT программы, указываемой слева, в файл, указывае- мый справа. В приведенном выше примере команда cat ко- пирует содержимое одного файла в другой. При этом ввод (STDIN) заменяется файлом testf ilel, а вывод (STDOUT) — файлом testfile2. Если же команда cat вводится без аргу- ментов, то по умолчанию ее вывод направляется обратно на терминал, а для стандартного ввода служит клавиатура. > cat < testfilel > testfile2 И в этом случае стандартный вывод представляет собой ис- пользуемый по умолчанию поток вывода, в который направ- ляются сообщения (как правило, это пользовательский терми- нал). Но в приведенном выше примере вывод переадресуется в файл testf ile2.
182 Урок 12 Перезаписывать или присоединять Используя символ > для переадресации вывода в тек- стовый файл, можно, по существу, перезаписать его содержимое, т.е. заменить старое содержимое файла вновь выводимым содержимым. Но это требуется да- лёко не всегда, поэтому в Unix применяется еще один оператор переадресации — », С его помощью к ста рому содержимому файла присоединяется вновь вы , доводи мое содержимое рое ререадр^суется ёмудШ А теперь рассмотрим третью разновидность стандартного ввода-вывода — стандартный поток ошибок STDERR. Поток STDERR STDERR представляет собой еще один поток вывода, по- мимо STDOUT. Он организован для того, чтобы разделить два потока вывода: данных и ошибок. Если первый выходной по- ток STDOUT служит для вывода данных, то второй выходной поток STDERR — для вывода сообщений об ошибках в Unix (как правило, на пользовательский терминал). Если пользователь переадресует поток STDOUT, а про- грамма может направлять сообщения об ошибках в поток STDOUT, то пользователь вообще не увидит эти сообщения, поскольку все они направляются в файл. Но, с другой сторо- ны, программы могут использовать поток STDERR для выво- да сообщений об ошибках. Если пользователь не переадресует этот выходной поток, то он может по-прежнему видеть сооб- щения об ошибках и предупреждения, в то время как поток STDOUT направляется в другой файл или программу. Если же поток STDERR требуется направить в тот же са- мый файл, что и поток STDOUT, в таком случае в команде вместо оператора > используется оператор >&, как в следую- щем примере: cat < newfilel >& newfile2 Итак, рассмотрев основы стандартного ввода-вывода, пе- рейдем к применению конвейеров в Unix.
Ввод и вывод 183 Конвейеры Как уже не раз упоминалось в этой книге, истинный по- тенциал Unix кроется не в отдельных командах, а в их опре- деленном сочетании. Именно таким образом в этой системе можно решать сложные задачи. А объединяются команды с помощью конвейеров. Для организации конвейера в Unix служит символ |, ука- зываемый с помощью комбинации клавиш <Shift+\> между отдельными командами или программами в командной стро- ке. Если вы являетесь пользователем MS-DOS со стажем, то, вероятно, вы знакомы с понятием конвейера и его обозначени- ем, которое в Unix означает то же самое. Конвейер организует- ся из командной строки и позволяет манипулировать вводом. Рассмотрим следующий пример применения конвейера: >cat newfilel.txt Привет Как дела Отлично >cat newfilel.txt wc 1 3 Команда подсчета слов (wc) используется в данном приме- ре вместе с командой cat, для чего, собственно, и служит конвейер. Вместо того чтобы менять направление вывода, то же самое можно сделать с помощью определенного сочетания двух команд. С этого и начинается объединение команд в Unix для раскрытия потенциала этой системы. В конвейер можно объединить и пейджеры, рассмотренные в уроке 7. Обычно это делается для просмотра длинных лис- тингов, не помещающихся на экране. Для этой цели в MS-DOS также используется конвейер, а в Unix следующая команда: > Is -1 | more В данном примере на экран выводится списком содержимое текущего каталога, и если список получается слишком длин- ным, то для постраничного вывода используется команда 1s вместе с командой more. Для циклического просмотра списка необходимо нажать клавишу <Enter> или пробел, а для пре- рывания этой процедуры — комбинацию клавиш <Ctrl+z>.
184 Урок 12 Внимательно изучите примеры, приведенные в последую- щих уроках этой книги, поскольку конвейер будет использо- ваться в них все чаще и в более полезном контексте. А пока что попрактикуйтесь в применении конвейера на уже известных вам примерах и овладейте основами его организации. Резюме В этом уроке были представлены реализованная в Unix модель обработки ввода-вывода, стандартный ввод-вывод, потоки STDIN, STDOUT, STDERR и организация конвейера. Ниже приведено краткое изложение данного урока. • В каждой программе имеется стандартный Поток ввода (STDIN), вывода (STDOUT) и ошибок (STDERR). Эти по- токи используются не во всех программах для взаимодей- ствия с пользователем (такие программы, как Photoshop, не поддерживают управление из командной строки). Од- нако в большинстве из них предусмотрено манипулирова- ние входными и выходными соединениями. • Входные данные, предполагаемые программой в потоке STDIN, можно ввести вручную, из файла или же из другой программы. • Поток STDOUT или STDERR можно направить из про- граммы в файл, если требуется накапливать выводи- мый результат, а не просматривать его сразу. • Поток STDOUT одной программы можно направить по конвейеру в поток STDIN другой программы. • Одним из конкретных и полезных примеров примене- ния конвейеров является конвейерная организация по- страничного вывода результатов из особенно много- словных программ с помощью команд more и less.
Урок 13 Регулярные выражения Этот урок посвящен элементам регулярных выражений и их применению в среде Unix. В предыдущих уроках этой книги было показано, что ис- тинный потенциал Unix кроется б таких командах, как cron, Is, man, tail, и особенно в их определенном сочетании для решения конкретных задач в данной системе. В продолжение данной темы в этом уроке будет представлено понятие регу- лярных выражений. Регулярные выражения, называемые сокращенно RE, RegEx, regexp, regex или regxp, представляют собой ряд ком- бинаций символов, предназначенных для организации поль- зователями или администраторами системы Unix поиска ин- формации с помощью таких команд, как grep. Регулярные выражения применяются вместе с командами Unix. В текстовых редакторах, подобных vi, а также в утилитах регулярные выражения используются для поиска блоков ос- новного текста и манипулирования ими на основании опреде- ленных шаблонов. А во многих языках программирования регулярные выражения служат для манипулирования стро- ками. Например, в языке программирования Perl имеется развитый механизм регулярных выражений, встроенный не- посредственно в его синтаксис. Несмотря на то что в этом уроке регулярные выражения рассматриваются в связи с применением команды grep, приобретенные знания и навы- ки вы сможете применить практически везде, где поддержи- ваются регулярные выражения.
186 Урок 13 Сопоставление с шаблоном и регулярные выражения Ранее в этой книге было показано, как пользоваться мета- символом * для поиска файлов или их содержимого. Исполь- зуя метасимволы в команде grep, вы можете найти в системе Unix все что угодно до мельчайших подробностей. И такая возможность существует благодаря регулярным выражени- ям. В этом разделе урока мы рассмотрим поиск содержимого в файле с помощью регулярных выражений. Это требуется, в частности, для анализа конкретной информации в сообще- ниях электронной почты или поиска названия организации в длинном файле. Такую информацию можно найти довольно быстро с помощью регулярных выражений. Итак, создадим файл, а затем воспользуемся регулярными выражениями для поиска в нем конкретного содержимого. Что такое Рёг1 Perl — это один из наиболее часто испо ьзуемых в на- стоящее время Web-ориентйрованных языков, про- граммирования. а е ие е оз а т п Report Language (практический язык для звлечения дан х е го . Этот з ik бы разра- б тан а и Уо rry Wall). Он спе иаль о пред-.’ аз аче для обработки текста Благо р с сим за мечатёльным возмож ос а е a Perk стал одгим из с мь эстраненньхяз ков для; написания сценариев CGI (об его шлюзового -интер- фейса). Perl считается интерпретируема м языком , чт упрощает создание и проверку есложных программ. Для изучения Perl, как, впро ем, и р аже ний ребуются время и ер е ра ка а такж основательная подготовка в обла и рэграммирова- ния. К сожалению, рассмотрение Per и р гулярных ви- раже ий в этом уроке ограничено, поск льку в нем не реследуется цель сделать из вас крупного специали- с а е ил егулярнь вы е и м
Регулярные выражения 187 Perl входит в состав многих дистрибутивов Unix и Linux. Подробнее об этом языке программирования можно узнать по адресу http: / /www. perl. org/. Итак, регулярные выражения представляют собой метод определения шаблона символов для сопоставления с иско- мым текстом. Например, создадим текстовый файл для поис- ка в нем конкретного содержимого. Регулярное выражение указывается в команде grep в следующем формате: grep <регулярное вираже ние> <имя_файла> <имя_файла> В этом уроке для приме- ра выбрана команда grep, поэтому ознакомьтесь поближе с приведенным выше форматом, чтобы использовать его в качестве образца на протяжении всего урока. В Что означает символ / в регулярных выражениях Вас не должно пугать обилие символов их значений в регулярных выражениях. Самое трудное для начи- нающего изучать Unix— запоминать бесчисленное множество команд и их дополнительных параметров, учитывать регистр при их вводе и разл чаты много-: численные символы, их значения и функции. Что же касается регулярных выражений, то в некото- рых программах иногда требуется, чтобы регулярнь е выражения обрамлялись с обеих сторон символом , тогда как в команде grep этого не требуется. Поэтому, если у вас возникнут синтаксические за- труднения, обращайтесь за помощью к локальным оперативным страницам руководства, оперативной справке или к системному администратору. Применение символов . и * в регулярных выражениях Перейдем к созданию текстового файла, чтобы попракти- коваться в применении регулярных выражений. В рассмат- риваемом здесь примере используется команда grep с регу-
188 Урок 13 лярными выражениями, состоящими из символов и *. По- скольку регулярные выражения определяют конкретный способ сопоставления, попробуем раскрыть принцип дейст- вия регулярных выражений на примере поиска содержимого в простом тексте, который нетрудно создать в редакторе vi или emacs. Итак, создайте файл со следующим содержимым: Rob's Test File Rob Shimonski "aka Unix junkie" 2006 2005 2004 2003 2002 2001 2000 1999 1899 По завершении ввода приведенного выше текста, сохрани- те его в файле под именем г obtest. txt. Этот файл послужит в качестве образца для поиска дан- ных с помощью регулярных выражений, которые вам пред- стоит изучить в этом уроке. В данном случае используются символы “точка” (.) для сопоставления с любым одиночным символом и “звездочка” (*) для сопоставления с любыми вхождениями шаблона или его части. Для того чтобы разъяс- нить данный принцип, рассмотрим пример применения обо- их символов в регулярных выражениях для поиска конкрет- ной информации с помощью команды grep: > grep "Shimon. robtest.txt Rob Shimonski В данном примере команда grep используется для поиска в файле robtest.txt фамилии “Shimonski” (автора этой книги). Это можно было бы сделать даже по трем последним буквам “ski” фамилии. Но в данном случае в регулярном вы- ражении намеренно введены три точки, чтобы обнаружить в файле robtest.txt содержимое, совпавшее с указанным шаблоном. Ниже приведены другие варианты шаблонов для поиска данного содержимого:
Регулярные выражения 189 > grep “Shimon. Rob Shimonski > grep "Shi..n.ki * Rob Shimonski > grep “S..mo..ki Rob Shimonski robtest.txt robtest.txt robtest.txt Как видите, очень важно заранее точно знать, что именно нужно искать в файле, и тогда Unix отыщет именно то, что вы предполагаете найти. Если не сузить критерий поиска, то в итоге можно получить неоднозначный результат. Точка ( ) служит, в основном, для сужения поиска. А в тех случаях, когда точно неизвестно, что именно нужно найти, но поиск нежелательно расширять или затягивать, используется звез- дочка (*). Если вы справились с первым примером применения регу- лярных выражений, то, определенно, справитесь и со сле- дующим примером, хотя он и построен по несколько иному принципу: > grep "S.*i” robtest.txt Rob Shimonski Иногда метасимволы — это единственное средство поиска таких фамилий, как у автора этой книги. Выделение специальных символов Регулярные выражения могут быть использованы в ко- манде grep и множеством других способов. В этом' уроке рассматривается лишь малая их час ь но если они заинтересуют вас, вы можете продолжить их изу- 5, чение самостоятельно. Для выделения специальных символов в регулярных вы- ражениях служит символ \, который указывается перед такими символами Например, строки, состоящие из слов и пробелов, обычно заключаются в двойные кавыч- ки (”), поскольку именно так они интерпретируются ко- мандным процессором. Если же в файле требуется най- ти строки с двойными кавычками, то их нужно предва- рить символом \ в команде grep, например: - . > grep Л" robtest.txt Tg к;:иаТса;:4^ J ...чвк ..Ж
190 Урок 13 Указав перед двойными кавычками си вол \, вы ем самым предписываете командному процессору не пытаться интерпретировать их как символ, в которьГ заключена строка, а просто передать его команде grep для дальнейшей обработки. Применение символов [ ] и А в регулярных выражениях В этом разделе мы продолжим рассмотрение регулярных выражений на примере применения символов [ ] и Л для по- иска в определенном диапазоне чисел. Вероятно, вы обратили внимание на то, что файл robtest. txt содержит определенный ряд годов. Воспользуемся вновь командой grep и регулярными выражениями, чтобы найти только те года, которые находятся в пределах 2000 года. Для этого нужные пределы указываются в следующем формате ре- гулярных выражений: [<началъная точка> <конечная точка>]. В качестве начальной и конечной точек могут быть указаны цифры или ряды букв алфавита. Например, введите следующую команду: > grep "1[8-9]9 [0-9]*" robtest.txt 1999 1899 В этом примере осуществляется поиск в файле robtest. txt всего, что находится в диапазоне чисел 1[8-9]9[0-9].В данном случае это 1899 и 1999 годы, но не 2000-2006 годы. Цифра 1 пе- ред квадратными скобками означает, что две первые цифры ис- комых годов могут находиться в пределах от 1 [ 8 (т.е. 18) до 1 [ 9 (т.е. 19). То же самое означает и вторая квадратная скобка. Вто- рая часть года (две последние его цифры) уже частично опреде- лена цифрой 9, а другая ее цифра определяется по тому же прин- ципу. Так, 9 [ означает, что две последние цифры искомых годов могут находиться в пределах от 9 [ 0 (т.е. 90) до 9 [ 9 (т.е. 99). Уяс- нив этот принцип, вы сможете без труда применить его в более сложных регулярных выражениях.
Регулярные выражения 191 Указывая определенные пределы, вы можете извлечь нужные вам значения из файлов, например, два упомянутых выше года. Возможности поиска в определенном диапазоне можно расширить с помощью оператора отрицания. В част- ности, символ 74 означает отрицание диапазона, если он ука- зывается перед этим диапазоном. В результате отрицания диапазона осуществляется сопоставление со значениями, противоположными тем, которые попадают в этот диапазон. Рассмотрим следующий пример: > grep "1[А8-9]9[0-9]*" robtest.txt 2006 2005 2004 2003 2002 2001 2000 В данном примере было найдено все, что не находится в пре- делах от 1899 до 1999 года. Применение символов А и $ в регулярных выражениях Покажем, каким образом в регулярных выражениях ис- пользуются символы Л и $ для сопоставления с началом и концом строки. Для более точного сопоставления с годами из файла рас- сматриваемого здесь примера в регулярных выражениях можно использовать символы начала и конца строки, благо- даря которым команда grep осуществляет сопоставление только с нужными элементами данных. Так, если в файле примера находится номер телефона и его нужно исключить из поиска, это можно сделать с помощью соответствующего регулярного выражения. Символы и $ обычно называются точками привязки. Привязать что-то означает зафиксировать что-то жестко и прочно. Такие символы привязывают шаблон к началу или концу строки. Сделать это в данном примере будет нетрудно,
192 Урок 13 поскольку оба года, 1899 и 1999, находятся в начале строки. Применяя эти символы, придерживайтесь следующих правил. • Если символ 74 указывается вне диапазона, он сопостав- ляется с началом строки. • Символ $ сопоставляется с концом строки. Если дейст- вие шаблона распространяется на конец строки, его можно привязать к этой позиции с помощью символа $. Покажем действие одного из этих символов на следующем примере: >grep "А1[А7-8] [0-9]*" robtest.txt 1899 1999 В данном примере по команде grep выводятся только те да- ты, которые явно указаны в регулярном выражении, и больше ничего. Резюме В этом уроке были рассмотрены элементы регулярных вы- ражений, которые представляют собой весьма гибкий способ описания шаблона для сопоставления. Регулярные выраже- ния поддерживаются во многих приложениях Unix, включая командный процессор, поэтому очень важно иметь хотя бы общее представление об их назначении и принципе действия. Если вы собираетесь пользоваться Unix либо Linux как из- бранной серверной или настольной системой, вам потребует- ся более углубленное изучение тех аспектов, которые позво- ляют раскрыть в полной мере потенциал данной системы. К их числу относятся и регулярные выражения. В этом уроке закладываются лишь основы для дальнейшего изучения ре- гулярных выражений наряду с такими языками программи- рования, как Perl, и сценариями командного процессора. Ниже приведено краткое изложение данного урока. • — символ сопоставления с любым другим символом. Пользуйтесь им, если вы не знаете точно, какие симво- лы находятся в конкретной позиции.
Регулярные выражения 193 • * — символ сопоставления с любыми вхождениями конкретного шаблона. Пользуйтесь им вместе с симво- лом или с диапазонами значений. • \ — символ выделения специальных символов. Поль- зуйтесь им, если в шаблон требуется, например, ввести двойные кавычки (") как таковые, а не как символ, в который заключается строка. • Диапазоны. Шаблон можно ограничить сопоставлени- ем с определенным диапазоном чисел или букв. Диапа- зоны заключаются в квадратные скобки [ ]. Для отри- цания диапазона служит символ указываемый в на- чале диапазона. • Л и $ — специальные символы сопоставления с началом и концом строки соответственно. Их принято называть точками привязки, поскольку они привязывают шаб- лон к определенной позиции в строке. • Регулярные выражения. Применяются во многих при- ложениях Unix и могут стать весьма эффективным средством обработки текстового содержимого. Что же касается уровня поддержки регулярных выражений в командном процессоре и в других утилитах, то обра- щайтесь по данному вопросу за справкой к соответ- ствующим оперативным страницам руководства.

Урок 14 Основы создания сценариев командного процессора Этот урок посвящен созданию сценариев командного про- цессора, позволяющих автоматизировать задачи, которые выполняются в командном процессоре. В этом уроке мы рассмотрим особенности написания сце- нариев командного процессора, с помощью которых раскры- вается истинная сила Unix. Сценарии командного процессора уже не раз упоминались в этой книге практически во всех предыдущих уроках. Но прежде чем переходить к этой теме, нужно было освоить вход в систему и ряд команд, которые полезно включить в сценарий, а также управление вводом- выводом и применение регулярных выражений. Связав те- перь все это вместе, можно приступать к изложению основ создания сценариев командного процессора. Если для вас создание сценариев командного процессо- ра — совершенно неизведанная область, не отчаивайтесь. Ведь это понятие можно разделить на более простые части, ответив на следующие вопросы. • Что такое командный процессор? Командный процес- сор представляет собой не более чем интерпретатор ко- манд. В Unix командный процессор предназначен для организации взаимодействия системы с пользователем, получения пользовательского ввода, т.е. интерпрета- ции команд, и выполнения предписанных действий. Кроме того, командный процессор направляет вывод в используемое по умолчанию или указанное место (как правило, на пользовательский терминал). В Unix рас-
196 Урок 14 пространены следующие разновидности командных процессоров: C-shell (Си-подобный командный процессор), Bourne shell (командный процессор Боурна) и Korn shell (командный процессор Корна). • Что такое сценарий? Сценарий — это еще одно название макрокоманды или командного файла, который предна- значен только для того, чтобы выполнять то, что в него введено. Если сценарий организован в виде файла, то его содержимое обычно представляет собой определенную последовательность команд. Иными словами, сценарий, по существу, представляет собой файл с перечнем ко- манд, которые должны выполняться без вмешательства пользователя. Сценарии создаются на простом языке программирования, называемом языком сценариев. В предыдущем уроке уже упоминался язык Perl, кото- рый обычно используется для написания сценариев в среде Unix. Другим примером такого языка является Python. Кроме того, довольно сложные сценарии можно создавать непосредственно в командном процессоре. • Что такое сценарий командного процессора? Если из- вестно, что такое командный процессор и что представля- ет собой сценарий, то нетрудно догадаться, что сценарий командного процессора— это всего лишь разновидность сценария, создаваемого из команд в текущем командном процессоре (bash, csh и т.д.), который, по существу, ин- терпретирует такой сценарий. В частности, сценарий ко- мандного процессора, написанный в одном командном процессоре, может работать неверно в другом командном процессоре в силу отличий в используемом синтаксисе. В этом случае за помощью следует обращаться к опера- тивным страницам руководства в локальной системе. • Каково основное назначение сценария командного процессора? Большинство таких сценариев служат для автоматизации конкретных задач. Ведь никто не жела- ет вводить каждый раз сотни текстовых строк по при- глашению командного процессора. Вместо этого их можно один раз ввести в файл сценария и затем выпол- нять его по мере необходимости (возможно, по команде at или cron). Итак, картина постепенно проясняется.
Основы создания сценариев командного процессора 197 • Как создать рабочий сценарий командного процессора? Для создания простого рабочего сценария командного процессора достаточно выбрать для работы подходящий командный процессор (в приведенном ниже примере ис- пользуется bash) и ввести команды, которые должны дать предполагаемый результат. Если заранее составить себе общее представление о назначении сценария и ре- зультатах его выполнения, то можно не тратить зря вре- мя и усилия на его создание, будь то в текстовом редак- торе или по приглашению командного процессора. Опять же, сценарий командного процессора представляет собой нечто большее, чем перечень команд, выполняемых в заданной последовательности. Прежде чем выполнять сце- нарий, необходимо подробно изучить синтаксис входящих в него команд по оперативным страницам руководства, осо- бенно если сценарий предназначен для рабочей, а не испыта- тельной системы Unix. Обычно сценарий командного процессора запускается на выполнение из командной строки, подобной следующей: #!/bin/bash В этой типичной строке указывается, что сценарий дол- жен выполняться в командном процессоре bash независимо от того, какую диалоговую оболочку выбрал пользователь. Очень важно, чтобы команды сценария соответствовали вы- бранному командному процессору, иначе следует ожидать многочисленных сообщений об ошибках или просто непра- вильной работы сценария. Об этом не следует забывать, по- скольку синтаксисы разных командных процессоров, как правило, отличаются. Итак, выбрав подходящий командный процессор для соз- дания сценария, введите в него ряд команд: #!/bin/bash echo "Здравствуйте! Это Unix. Я знаю, кто вы. Вы пользова- тель $USER" echo "Мне также известен ваш текущий каталог. Это каталог $PWD" Is # Примечание: этот сценарий используется для проверки пользователя, его текущего каталога и вывода файлов из этого каталога
198 Урок 14 Если этот сценарий вам непонятен, не отчаивайтесь: мы рассмотрим его по частям. В первой строке сценария выбирает- ся командный процессор. Во второй строке сценария использу- ется переменная $USER для выдачи обратно пользователю его имени. Третья строка сценария аналогична второй, только в ней используется переменная $PWD,/указывающая текущий каталог пользователя. И в четвертой строке сценария выводит- ся содержимое текущего каталога. $сли выдать эти команды по очереди, сценарий будет выполняться построчно. Кроме то- го, их можно поместить в один файл (в редакторе vi или emacs) и затем выполнить как сценарий из командной строки или другой команды, подобной at или cron. Не следует забывать, что этот сценарий должен состоять из команд, которые способен интерпретировать и обрабатывать командный процессор bash. Некоторые из приведенных выше команд могут быть вам неизвестны или же недоступны в вашей версии Unix. Именно поэтому для написания сценариев важно овладеть основами работы в конкретной системе. Как следует из приведенного выше примера, для создания сценариев нужно также уметь работать с командным процессором. Постарайтесь полностью уяснить данный сценарий. Если вы собираетесь стать администратором системы Unix, вам просто необходимо научиться создавать сценарии. Конечных пользователей Unix это касается в меньшей степени, хотя в один прекрасный день ваш работодатель может возложить на вас обязанность выполнять ежедневно определенный объем заданий. Помните команду jobs? Ее можно ввести в сцена- рий и автоматически выполнить с помощью команды at или cron. Но это, так сказать, насущная потребность, а создание сценариев вообще позволяет глубже изучить систему Unix. Ведь именно умением писать сценарии грамотные пользова- тели Unix отличаются от прочих смертных. Если вы поняли все изложенное выше, то написание сце- нариев не вызовет у вас особых затруднений. К сожалению, в этом уроке невозможно охватить все отличия командных процессоров, не говоря уже об особенностях написания сце- нариев. Тем не менее вы уже знаете, что такое сценарий ко- мандного процессора, усвоили соответствующую терминоло- гию и порядок определения сценария в выбранном команд- ном процессоре.
Основы создания сценариев командного процессора 199 Что это за ересь? Для того чтобы понять приведенный выше сценарий, не нужно “б ться башкой о стенку”. Это сценарий, ха- рактерный для командного роцессора bash, а не для все и с стем i Un’x в ел о . И ено поэто у в начале дан ой книги были i редс авлены разновидности ко- андных процессоров и отличия между ними. Об этих о л х с едует помнить, пользуясь сценариями, поскольк они должн i соответствовать выбранному командному процессору. Иначе могут возникнуть ос- ложнения при их в толчении. В последней строке риведе ного выше примера сценария командного \, процессор bash после команды 1s был указан знак номера #, обозначающий комментарий. Если у вас есть опы работы в Microsoft Windows, то вам, вероят- но, уже приходилось редактировать файлы, в которых знак # использовался для комментариев. комментарии часто используются при написании программ или сценариев для ввода примечаний к от- дельным строкам сценария или кода. В данном при- мере комментарий сделан к команде 1s, выводящей список файлов в текуще каталоге пользователя. Этот ком е тарий распознается Unix, но е повторя- ете на экране, как р выполнении команды echo. В данном сценарии вам могут быть непонятны и такие элементы, как $user и $pwd. Это переменные среды, обоз ачающие соот етс венно пользователя, заре- гистрированного в данный момент в систе е и ы- по няющего сце арий, а также каталог, в котором , этртЩрльзователь нахбдйтся (например, ^etefи /), Эти переменные дают такой же результат, как и ко- манды whoami и pwd
200 Урок 14 Что-то до боли знакомое... Возможно, вы задаетесь вопросом “Где вам уже встре- чалось нечто подобное?”. Создание сценариев рас- пространено и в MS-DOS. " ^Еслйл^ ве- роятно, обратили внимание на сходство сценариев ко- мандного процессора с командными файлами. В дан- ном случае имеются в виду файлы * .bat, ? Создание файлов сценариев командного процессора В приведенном выше примере сценария текстовые строки были введены по приглашению командного процессора (интерпретатора команд) для немедленного выполнения, т.е. они не организованы в файл сценария. Этот же сценарий можно ввести один раз в файл, чтобы за- тем неоднократно выполнять его содержимое. Иными словами, после входа в систему вы можете открыть редактор vi и ввести упомянутые выше строки сценария в файл, сохранить и затем выполнить данный файл сценария, введя его имя в командной строке. Сделав это, вы тем самым войдете в престижный круг составителей сценариев командного процессора. Созданный и сохраненный файл сценария дает при выпол- нении точно такой же результат, что и при вводе из командной строки. И в этом случае сценарий должен соответствовать вы- бранной разновидности командного процессора. Применение команды foreach Команда foreach служит для того, чтобы не вводить ко- манды многократно и выполнять блок кода для каждого эле- мента данных в массиве. Массив представляет собой ряд по- следовательно индексированных элементов данных одного типа. Как правило, каждый элемент массива обозначается
Основы создания сценариев командного процессора 201 уникальным порядковым номером, или индексом. Измене- ния в одном элементе массива не оказывают влияния на ос- тальные его элементы. Команда f oreach указывает Unix вы- вести данные на терминал для каждого элемента массива. Обычно команда foreach применяется вместо стандартного цикла for, в отличие от которого она не определяет порядок обработки элементов данных. Следовательно, если вы не хотите тратить зря время на ввод имен файлов в команде для их автоматической обработ- ки, воспользуйтесь командой for each, которая берет список файлов и выполняет над каждым из них указанное действие. Порядок применения этой команды проще продемонстриро- вать на конкретном примере, чем пояснить. Если у вас имеет- ся список файлов, с которыми нужно что-то сделать, то вос- пользуйтесь для этой цели командой f oreach, придержива- ясь следующей процедуры. 1. Определите, что именно вам нужно сделать с файлами. В данном примере три каталога архивируются в от- дельные файлы формата tar. 2. Выберите файлы и каталоги, с которыми нужно что-то сделать. В данном случае создаются архивные файлы формата tar для каталогов directoryl, directory2 и directory3. 3. Выберите имя переменной, используемой для поставлен- ной цели. В данном примере используется переменная test. Имя переменной особого значения не имеет, если только оно не вступает в конфликт с названием команды. 4. Выдайте команду f oreach <имя_переменной> (<имена файлов>). Команда f oreach запрашивает для каждого файла конкретные действия, отображая знак вопроса. Укажите, что нужно сделать с каждым файлом. В данном примере создаются архивы трех каталогов по команде tar. После ввода указаний для команды foreach завер- шите ее, введя команду end в отдельной строке. Итак, данный пример применения команды foreach вы- глядит следующим образом: > foreach test (directoryl directory2 directory3) ? tar -cvf $test.tar $test ? end
202 Урок 14 В ответ на введенную информацию система выполняет ко- манду tar для каждого указанного файла. Обратите внимание на выражение $test во внутреннем цикле команды foreach. Эта команда просматривает список указанных файлов и вводит их имена по очереди в переменную test. Для того чтобы ис- пользовать содержимое этой переменной в командном процес- соре, перед ней ставится знак $. В данном примере команда foreach вводит сначала имя каталога directoryl в перемен- ную test и затем выполняет команду tar, а командный про- цессор расширяет переменную test до имени каталога directoryl. Фактически команда tar имеет следующий вид: tar -cvf directoryl. tar directoryl. На следующем шаге внутреннего цикла команда foreach вводит в переменную test имя каталога di г ectory2, и процесс повторяется. Вместо того чтобы перечислять по очереди имена файлов в команде foreach, вы можете воспользоваться регулярными выражениями. Так, в приведенном выше примере все архи- вируемые каталоги имеют общее название directory в своих именах. Поэтому для получения того же результата можно выдать следующую команду: foreach test (*directory). Какой командный процессор использовать в приведенном выше примере использован Си- ' подобный командный процессор (csh), хотя, по мне- нию автора книги, он не совсем подходит для изуче- ния и создания сценариев командного про ессора. Если вы только начинаете изучать Unix, осваивайте тот командный процессор, который чаще всего ис- пользуется и поддерживается в вашей системе. А для создания сценариев командного процессора следу- ет, по возможности, избегать csh, поскольку в этом | J командном процессоре очень трудно, а иногда и про- сто невозможно, создавать простые сценарии. Итак, вы постепенно начали осваивать управление про- цессами в Unix на все более детальном уровне. Овладев этими основами, вы сможете очень точно настроить систему специ- ально для своих нужд. Теперь перейдем от команды foreach к условным операторам while и if.
Основы создания сценариев командного процессора 203 Применение операторов while и if Для создания более сложных сценариев имеются также условные операторы, расширяющие возможности управле- ния процессом автоматического выполнения заданий. Такие операторы позволяют активизировать определенные части сценария при определенных условиях. Следовательно, для их применения нужно организовать проверку по определенному условию. В данном уроке рассматриваются лишь основы соз- дания сценариев, хотя для этой цели имеется много операто- ров и разных элементов синтаксиса. Операторы ' Р большинстве современных языков рограммирова ния имеются операторы для вь полнения рифмет - йждаЙЬт>ий/ Комп вычислительные устройства, функцию ирующ е а основе математического аппарата булевой алгебры Оператор if действует таким же образом, как и оператор while, но только не в цикле. Он просто выполняет одну ко- манду по заданному условию. Синтаксис этого оператора сле- дующий: if ( <условие> ) <команда>. А оператор while повторяет операции в цикле до тех пор, пока выполняется определенное условие: while ( <условие> ). Ниже приведен пример синтаксической организации ус- ловного оператора if, который выполняет то или иное дейст- вие в зависимости от результата вычисления выражения в круглых скобках: if ( выражение действие А [else действие Б] Если вычисление данного выражения дает истинный ре- зультат, выполняется первое действие (т.е. действие А), ина- че выполняется второе действие (т.е. действие Б после опера- тора else). Действие этого оператора можно сравнить со сле- дующей ситуацией: если нет ключа, то войти нельзя.
204 Урок 14 • Действие А: ключ потерян • Действие Б: входа нет Оператор if может быть более сложным, чем в приведен- ном выше примере. В частности, при написании сценариев допускается вложение одних операторов if в другие. Резюме В этом уроке даны основы написания сценариев в Unix и приведен подробный пример сценария. Создание сценари- ев — довольно обширная тема, и в этом уроке она была затро- нута лишь вскользь. Поэтому, если вас это интересует, удели- те время самостоятельному изучению методов и средств соз- дания сценариев, обратившись к многочисленной литературе и оперативно доступным учебным пособиям. Ниже приведено краткое изложение данного урока. • Сценарии командного процессора удобно хранить в фай- лах. В этом случае для выполнения команд по сценарию достаточно ввести имя его файла. Вы уже знаете, как создать файл. Остается лишь заполнить его командами сценария. • Имеются самые разные типы командных процессоров. Несмотря на общее сходство функций, они могут рабо- тать по-разному. Поэтому выберите сначала команд- ный процессор, который в наибольшей степени удовле- творяет вашим потребностям, а затем изучите особен- ности создания сценариев для этого командного про- цессора. • Команда for each позволяет повторять ряд команд для каждого ряда указанных файлов. • Оператор while организует циклическое повторение ряда команд до тех пор, пока выполняется определен- ное условие. • Оператор if выполняет или не выполняет команду в за- висимости от заданного условия.
Урок 15 Пользовательские утилиты Этот урок посвящен внесению изменений в систему Unix и видоизменению рабочей среды пользователя. Работая в Unix, вы, без сомнения, придете к необходимо- сти специальной настройки рабочей среды в той или иной степени. В начале этой книги мы уже говорили о входе в сис- тему, а как насчет изменения пароля? В предыдущих уроках, и особенно в последнем уроке, посвященном созданию сцена- риев командного процессора, не раз упоминался командный процессор, но что делать, если требуется сменить командный процессор? Эти и другие вопросы специальной настройки ра- бочей среды будут рассмотрены в данном уроке. Применение команды chsh При рассмотрении командных процессоров в предыдущих уроках мы не раз упоминали тип командного процессора и ко- манды, которые могут выполняться по его приглашению. Кро- ме того, мы коснулись причин смены командного процессора, а теперь мы покажем, как это делается в среде Unix. В уроке 1 были представлены разновидности командных процессоров. Мы рассмотрели большинство из них, хотя и не все. Иногда возникает потребность сменить командный про- цессор, и для этой цели служит команда chsh. Эта команда позволяет выбрать один из командных процессоров, зареги- стрированных для применения в системе. Это означает, что в вашей системе должен присутствовать нужный вам ко- мандный процессор.
206 Урок 15 Если же вы не знаете, какой командный процессор вы- брать и какие разновидности командных процессоров зареги- стрированы в системе, воспользуйтесь командой chsh с клю- чом -1. Команда chsh -1 выводит список всех доступных в системе командных процессоров. После этого вам нетрудно будет сменить командный процессор, зная соответствующую команду и ее синтаксис. >chsh -1 /bin/ash /bin/bash /bin/csh /bin/ksh /bin/sh /bin/bsh /bin/tcsh /bin/zsh В данном примере представлены на выбор восемь доступ- ных командных процессоров. Так, если требуется сменить текущий командный процессор и использовать bash, выпол- ните следующее: >chsh Changing shell for rob. (Смена командного процессора для пользователя rob) Password: ***** (Пароль) New shell [/bin/csh] /bin/bash (Новый командный процессор) She11 changed. (Командный процессор изменен) При следующем входе в систему вы окажетесь в команд- ном процессоре bash, а не в использовавшемся ранее команд- ном процессоре. Менять командный процессор целесообразно лишь в том случае, если он не позволяет делать в системе то, что вам нужно. После смены командного процессора вы можете продол- жить работу в новом командном процессоре или вернуться к прежнему. Для работы над остальным материалом этого уро- ка выберите наиболее удобный для себя командный процессор. Если же вы перешли к неизвестному вам командному процес- сору, вернитесь к привычному, чтобы продолжить этот урок.
Пользовательские утилиты 207 Й Особенности смены командного процессора Сменить командный процессор несложно, хотя все зависит от конкретного дистрибутива Unix или Linux и его установки, В некоторых дистрибутивах ваш се- анс работы в системе может быть досрочно завер- шен, если вы совершите ошибку при смене команд- ного процессора. Это лишний раз доказывает, что нужна постоянная практика использования Unix. Если вы работаете в этой системе от случая к случаю, то можете легко наделать ошибок и оказаться в затруд- нительном положении. Если же вы не знаете, что де- лать, не стесняйтесь обращаться за помощью. Как уже не раз подчеркивалось, совершенство достига- ется практикой. Поэтому рекомендуется установить систему Unix дома и использовать ее в качестве экс- периментальной лаборатории, чтобы практиковаться в смене командного процессора. Команда passwd Как следует из урока 1, для входа в систему Unix требует- ся мандат, состоящий из имени пользователя (обычно при- сваиваемого системным администратором) и пароля. Несмот- ря на то что пароль, как правило, формируется системным администратором, вы можете изменить его сами. Так, если ваша машина не подключена к сети, для изменения своего пароля вы можете воспользоваться командой passwd. Для того чтобы воспользоваться командой passwd, вы должны иметь соответствующие привилегии на внесение по- добных изменений. Если вы не являетесь привилегирован- ным пользователем (su), команда passwd предложит вам сначала ввести свой текущий пароль, чтобы убедиться в том, что вы именно тот, за кого себя выдаете (это обычная мера предосторожности, применяемая для защиты вашего манда- та). Продолжить работу в системе Unix вы не сможете до тех пор, пока не введете правильный пароль.
208 Урок 15 Другие способы смены пароля < Если вы работаете не в автономной системе Unix, а в связанной с други а алогичными системами по се ти, которая представляет собой схему организаций проводной или беспроводной связи межд системами для совместного использования ресурсов, то парол можно сменить в базе данных NIS(Networkl^ Service—сетевая информационная служба). Сетевые пароли, св занные с именами пользователей в базе данных N IS, меняются с помощью утилиты yppasswd. Несмотря на то что рассмо рение такой возможности выходит далеко за рамки этой книги, о ней все же нуж- но упомянуть на то случ й, если вам придется менят пароль не по команде pas swd Существу т и другие f >||зно|йда|^^ Пароли могут храниться на разных маши ах} поэтому 5 утилита yppasswd обновляет ваш пароль во всех сис- темах, где вы можете работат . Более подробные све- дения об использова и команд и утилит смен i паро- ля вы можете найти на операти ных страницах руково детва в своей локальной системе. После ввода текущего пароля вам будет предложено вве- сти новый пароль, как показано в следующем примере: >passwd Changing password for (Изменение пароля пользователя rob) Old password: ***** (Старый пароль) New password: ****** (Новый пароль) Retype new password: (Еще раз введите новый пароль) Password successfully changed (Пароль успешно изменен) Вводимые пароли не отображаются на экране монитора, чтобы кто-нибудь посторонний не подсмотрел их и не восполь- зовался для вторжения в систему. В приведенном выше приме- ре вводимый пароль отображается звездочками, обозначаю- щими сам процесс ввода пароля. Если смена пароля произошла успешно, Unix выдаст соответствующее сообщение: Password
Пользовательские утилиты 209 successfully changed (Пароль успешно изменен). В против- ном случае появится сообщение Authentication Failure (Фатальная ошибка аутентификации), которое чаще всего ото- бражается в том случае, если вы неправильно предъявите свой мандат, необходимый для смены пароля. а Выберите подходящий пароль К смене пароля нужно подходить ответственно, чтобы защитить свою систему Unix от несанкционированно- го доступа. Новый пароль должен состоять как минимум из шести символов, которые не должны быть только буквами. Па- роль лучше всего составить из цифр, прописных и строчных букв (напомним, то система Unix чувствительна к регистру), а также из таких специальных знаков, как # и Благодаря этому повышается надежность пароля. Старайтесь избегать очевидных и легко разгадывав- ч / мых паролей. Так, если ваше рабочее место обвешано фотографиями вашего любимого кота Fluffy (Пушок), пароль "fluffy” вряд ли сделает вашу систему защищен- ной. Если вы не хотите стать жертвой собственного легкомыслия, не выбирайте также в качестве пароля названия ваших любимых спортивных команд или же имена ваших детей. Кроме того, при смене пароля не добавляйте к старому паролю 1 или 2 (например, fluffy 1, fIuffy2 и т.д.). Непременно пользуйтесь строгими паролями и принимайте меры для того, чтобы у вас их не украли. Подобные меры предосторожности позво- ляют гарантировать, что никто не воспользуется ваши- ми паролями в неблаговидных целях. В некоторых случаях Unix не позволяет выбирать опреде- ленные виды паролей, если они слишком короткие или осно- ваны на словах, обнаруживаемых в файле внутреннего слова- ря Unix. Если ваша система настроена именно таким образом и вы введете неприемлемый пароль, команда passwd, скорее всего, подскажет, что нужно сделать, чтобы исправить па- роль. Итак, выбирайте пароли, состоящие из цифр и букв в разных регистрах, но не из общеупотребительных слов.
210 Урок 15 Применение команд finger и chfn В среде Unix для получения сведений о пользователе слу- жит команда finger. Это полезная в какой-то степени ко- манда, хотя ее опасно оставлять без надлежащей защиты. Как правило, команда finger недоступна, чтобы ею не зло- употребляли. По этой причине мы не будем уделять ей слиш- ком много времени. Ведь вы вряд ли будете пользоваться ею в своей системе. Но если нет иного способа получить сведения о пользователе (например, из электронной почты или прило- жения для передачи сообщений), то с этой задачей вполне справится команда finger. Как же действует команда finger? Информация о физи- ческом адресе каждого пользователя сохраняется в файле системного пароля пользователя при заполнении базы дан- ных finger. Это означает, что сведения о каждом пользова- теле можно извлечь из базы данных finger. Если вы введете команду finger и нажмете клавишу <Enter>, то в ответ по- лучите сводку, в которую включены ваше регистрационное имя, время и место входа в систему. Если же вы пользуетесь командой finger в собственной системе и не можете получить нужных вам сведений, в таком случае вам придется заполнить соответствующие поля в своей учетной записи. Следует, однако, иметь в виду, что эти сведе- ния могут стать общедоступными. Для их изменения требу- ется команда chfn, рассматриваемая далее в этом уроке. Для того чтобы получить сведения о конкретном пользо- вателе в вашей локальной системе, введите команду finger в следующем формате: finger <имя_пользователя>. А для получения сведений о ком-нибудь в удаленной систе- ме попробуйте ввести следующую команду: finger <имя_ пользователя>&<удаленный хост>. Эта команда может или не может быть выполнена в зависимости от типа уда- ленного хоста и его конфигурации.
Пользовательские утилиты 211 Рассмотрим следующий пример: rshimonski@UNIXl>finger Login: Name: Idle: Login Time: Where: rob ___Rob Shimonski__-____Fri 18:23 Console В данном примере команда finger выдала сведения о лич- ной учетной записи автора этой книги. Как видите, в этих све- дениях указаны лишь регистрационное имя данного пользова- теля, его учетное имя (в данном случае это имя и фамилия), со- стояние, время и место входа в систему. Это все, что можно уз- нать о данном пользователе, поскольку он еще не предоставил другой информации о себе. В следующем разделе будет показа- но, как пользоваться командой chfn для ввода дополнитель- ной информации в учетную запись. Такую информацию вы можете ввести лишь в том случае, если у вас имеются для этого соответствующие полномочия, т.е. вы можете, прежде всего, воспользоваться командой finger, как, например, в экспери- ментальной системе, установленной в домашних условиях. Команда finger обычно недоступна Как упоминалось выше, команда finger обычно не- доступна в большинстве систем Unix. Системные ад- министраторы, производящие ревизию своих систем Unix на предмет брешей в их защите, считают, что протоколом команды finger могут злоупотреблять, поэтому они, как правило, делают ее недоступной для пользователей системы. Применение команды chfn Команда chfn запускает диалоговый процесс, который по- зволяет ввести в учетную запись дополнительные сведения о пользователе, чтобы получить больше информации о нем по команде finger. Итак, введите команду chfn без дополнитель- ных параметров из командной строки следующим образом: >chfn Changing finger information for rob. (Изменение передаваемых сведений о пользователе rob) Password: ***** (Пароль) Enter the new value, or press ENTER for the default (Введите новое значение или нажмите клавишу <ENTER> по умолчанию)
212 Урок 15 Full Name: Robert Shimonski (Ф.И.О.) Room Number: 13 (Номер комнаты) Work Phone: (212)123-4567 (Рабочий телефон) Home Phone: (212)234-5678 (Домашний телефон) Other: 0. (Прочие сведения) Finger information changed. (Передаваемые сведения изменены) Получив сообщение Finger information changed (Пере- даваемые сведения изменены), вы можете вновь выполнить команду finger, чтобы просмотреть внесенные изменения. Еще раз подчеркнем, что несмотря на полезность команды finger, она обычно не используется с связи с массовым рас- пространением приложений для передачи сообщений и пере- носимых баз данных, доступных из мобильных телефонов, карманных ПК и прочих переносных устройств. Сделайте команду finger недоступной аВо многих дистрибутивах Unix и Unux по умолчанию ус- танавливаются службы, которые редко используются и заслужили репутацию слабо защищенных компонен ов системы. В связи с растущей проблемой безопасности вы можете столкнуться с самой закрытой системой з тех, которые вам когда-л бо приходилось видеть. Поче- му? Во-первых, по ому что протокол, по которому рабо- тает команда finger, не защищен в той же степени, что и мандат, который ожет подсмотреть осторонний, стоящий за вашей спиной, когда вы предъявляете его при входе в систему. Во-вторых, в команд finger по умолчанию исполь- зуется открытый (незашифрованный текст), служа- щий, как извес но, добной мишенью для хакеров. J Команда finger выдает сведения о конкретно пользова еле или обо всех пользовател х, зарег ст- рированных в системе, поэтому а ст новится о- тенциальной м шенью для любого хакера, атакующе- го систему или злоупотребляющего ею. ели не сде- лать команду finger едо ту ной, она ослужит от личным источником информаций для подобных лиц.
Пользовательские утилиты 213 А теперь, когда вы знаете, как сменить командный про- цессор, пароль и личную информацию, обратимся к контро- лю системы Unix. В следующем разделе мы рассмотрим ряд команд, помогающих контролировать работу данной систе- мы, а именно: команды date, uptime и who. Применение команды date Команда date возвращает текущую дату и время либо по- зволяет изменить их. Дату можно изменить лишь в том слу- чае, если на это имеется соответствующее разрешение. В сис- теме должна быть установлена правильная дата, поскольку время — один из определяющих факторов нормального функционирования многих ее элементов. Рассмотрим, на- пример, журналы регистрации событий. Если требуется ре- гистрировать события, связанные с безопасностью системы, они должны появляться в виде отдельных записей в журнале. Такие записи позволяют выяснить, что кто-то пытается войти в систему без разрешения. Но даже если настроить систему на регистрацию таких событий, пользы от этого будет немного, если дата и время установлены в системе неверно. В этом слу- чае можно не заметить, что кто-то пытается в полночь войти в систему под именем и паролем зарегистрированного пользо- вателя, что служит явным признаком попытки незаконного вторжения в систему в нерабочее время. Даже если подобная попытка будет обнаружена, точное время ее совершения бу- дет неизвестно. Доказать факт такого нарушения без пра- вильно организованного ведения журналов регистрации практически невозможно. Если у вас имеются соответствующие привилегии, вы мо- жете воспользоваться командой date для просмотра и уста- новки даты и времени в своей системе Unix. Пользователи с обычными учетными записями не имеют на это право и по- этому не могут пользоваться данной командой. Итак, если у вас имеются надлежащие привилегии, проверьте или изме- ните дату, введя следующую команду: >date Sat April 01 06:30:01 EDT 2005
214 Урок 15 Если вы работаете в графической среде (KDE или GNOME), проверьте дату в правом углу панели задач. Если же дата и время там не отображаются, перейдите к командной строке и введите команду date. Применение команды uptime Еще одним простым и полезным средством проверки вре- мени нахождения системы Unix в рабочем состоянии служит команда uptime. Эта команда возвращает текущее время, число пользователей, зарегистрированных в системе, про- должительность работы системы и величину нагрузки на сис- тему. Итак, введите команду uptime следующим образом: >uprime 6:30am up 12:50, 3 users, load average: 0.15, 0.11, 0.04 В данном примере команда uptime возвращает текущее время, продолжительность работы системы, число пользова- телей, зарегистрированных в данный момент в системе, а также среднюю нагрузку на систему. Все эти показатели ра- боты системы не требуют особых пояснений, кроме средней нагрузки. Этот показатель состоит из трех значений: нагруз- ки на систему за последнюю минуту, средней нагрузки в те- чение последних 10 минут и средней нагрузки в течение по- следних 15 минут. Этих значений редко бывает больше одно- го или двух. Если величина средней нагрузки больше пяти, система сильно загружена и можно наблюдать снижение ее производительности. Применение команды who Помимо команд date и uptime, имеется еще одна команда, позволяющая контролировать работу системы Unix. Это ко- манда who. Не путайте ее с командой whoami, упоминавшейся ранее в этой книге. Если команда whoami возвращает только имя пользователя, зарегистрированного в данный момент в системе и получившего доступ к командной строке, то команда who выводит более подробную информацию о пользователях.
Пользовательские утилиты 215 Unix — это многопользовательская система, а это означа- ет, что в любой момент в нее могут войти самые разные поль- зователи. Поэтому очень важно иметь возможность посмот- реть, кто именно работает в системе, что и позволяет сделать команда who. Эта команда используется следующим образом: >who rob pts/0 April 7, 2005 (console) шагу pts/1 April 7, 2005 jane pts/2 April 7, 2005 admin pts/3 April 1, 2005 Как следует из данного примера, в системе зарегистриро- ваны четыре пользователя. Команда who возвращает имя ка- ждого пользователя, а также имя соответствующего управ- ляющего терминала, дату и время входа этих пользователей в систему, а иногда и IP-адреса мест подключения пользовате- лей к системе. В каждой версии Unix или Linux команда who может давать разные результаты, поэтому более подробную информацию о ней вы можете найти на оперативных страни- цах руководства в своей локальной системе. Резюме В этом уроке было рассмотрено применение в Unix систем- ных утилит chsh, passwd, finger, date, who и uptime. В Unix применяются и другие системные утилиты, но 10-минутного урока явно недостаточно для того, чтобы рассмотреть, а тем бо- лее продемонстрировать их на практике. Еще раз напоминаем, что совершенство достигается практикой, поэтому уделите время дополнительному изучению представленных в этом уро- ке команд. Они еще сослужат вам добрую службу, особенно команда passwd, которой следует уделить-больше всего време- ни, освоив ее синтаксис и дополнительные параметры в про- цессе применения. Ниже приведено краткое изложение данного урока. • Команда chsh. Служит для смены текущего командно- го процессора. Если вы не знаете, к какому именно ко- мандному процессору можно перейти, воспользуйтесь командой chsh -1, чтобы вывести список доступных в системе командных процессоров.
216 Урок 15 • Команды passwd и ypasswd. Команда passwd позволя- ет изменить пароль пользователя в его учетной записи. А в среде с подключенными к сети системами Unix для этой цели служит команда ypasswd. • Команда finger. Выдает из учетной записи личную информацию о пользователе в локальной или удален- ной системе. Как правило, команда finger оказывает- ся недоступной из соображений безопасности, поэтому ею не всегда можно воспользоваться для получения сведений о пользователях системы. • Команда chfn. Служит для изменения личных сведений о пользователе в его учетной записи. С помощью коман- ды chfn можно, в частности, изменить фамилию, имя и отчество, адрес места работы, а также номера рабочего и домашнего телефонов в учетной записи пользователя. • Команда date. Отображает текущую дату и время в системе. • Команда uptime. Предоставляет сводку о состоянии операционной системы, включая продолжительность работы системы, число пользователей, зарегистриро- ванных в данный момент в системе, а также среднюю нагрузку на систему за последние 15 минут. • Команда who. Позволяет просмотреть сведения обо всех пользователях, работающих в системе, дату их входа в систему и сетевой адрес места подключения к систе- ме. Если система начинает работать медленнее, с по- мощью команды who можно определить, на что именно расходуется все время процессора.
Урок 16 Видоизменение рабочей среды Этот урок посвящен дополнительным способам видоиз- менения рабочей среды пользователя в Unix. Unix — весьма гибкая система, однако нужно уметь ее на- страивать. В этом уроке мы продолжим рассмотрение полез- ных команд для видоизменения рабочей среды пользователя. Сначала будут рассмотрены псевдонимы команд, предназна- ченные для сокращения объема вводимых данных, затем — особенности установки переменных среды и путей к файлам и наконец — устанавливаемые по умолчанию параметры пользо- вателя в форме файлов с точкой, а также способы видоизмене- ния графического пользовательского интерфейса и среды KDE. Псевдонимы Прежде чем пользоваться псевдонимами, нужно знать, что это такое. Псевдоним — это файл, обозначающий другой объ- ект в файловой системе. Так, если указать файл grepnow, в него затем можно ввести сложную команду grep с регуляр- ными выражениями и целым рядом дополнительных пара- метров. Для выполнения содержимого этого файла, пред- ставляющего собой длинную и сложную команду, достаточно ввести его имя grepnow в командной строке, например: grepnow grep "[:digit:]\{3\)[ :digit:]\{4\}" файл Вывод ясен: с помощью псевдонимов можно действитель- но сэкономить время на вводе часто используемых команд, особенно если они имеют длинный синтаксис.
218 Урок 16 Допустим, что требуется неоднократно сопоставить с шаб- лоном искомую информацию. Характерным тому примером служит номер телефона. Подобным методом можно очень просто искать 7-значные номера телефонов. Но при вводе ко- манд (в данном случае — поиска) со сложными регулярными выражениями и многочисленными дополнительными пара- метрами возможны ошибки. Для исключения подобных ошибок и повышения эффективности работы пользователей в системе Unix и служат псевдонимы команд. Если у вас есть опыт работы с MS-DOS, то вам, скорее все- го, не раз приходилось вводить команду del вместо команды rm для удаления файлов. Для того чтобы изменить это поло- жение, задайте псевдоним с помощью команды alias. Эта команда имеет следующий синтаксис: alias <новое имя команды> < выполняемая команда>. А для задания псевдо- нима del введите следующую команду: alias del пл. После того как будет задан этот псевдоним, при вводе команды del на самом деле будет выполняться команда rm. Это весьма рас- пространенная практика в различных системах. Более полезное применение псевдонимам можно найти для создания метакоманд, выполняемых с определенными дополнительными параметрами. Например, команду rm на- дежнее выполнять в диалоговом режиме (rm -i). Для этой цели можно воспользоваться псевдонимом, введя следующую команду: alias rm 'rm -i' (обратите внимание на направ- ление одиночных кавычек). Если теперь ввести команду rm, то в действительности будет выполняться команда rm -i. Таким образом, псевдонимы помогают сократить объем вводимых данных. Если вам приходится часто вводить одни и те же длинные строки, задайте для них псевдонимы, чтобы сэкономить время. Переменные среды Переменные среды уже не раз упоминались в этой книге. Так, в уроке 14 они использовались в примере сценария ко- мандного процессора. Для того чтобы стало понятно назначе- ние переменных среды, поясним, как программы работают
Видоизменение рабочей среды 219 в системе Unix. Большинство программ настраиваются на выполнение с помощью специальных текстовых файлов, по- зволяющих установить конфигурацию программы в кон- кретной рабочей среде. При отсутствии таких файлов про- грамма настраивается с помощью переменной среды. Инфор- мацию о своей конфигурации программа, по существу, из- влекает из переменной среды. Переменные среды используются программами для выбор- ки отдельных фрагментов информации, которая требуется для выполнения программы. В частности, некоторым программам требуется переменная среды, содержащая путь к их справоч- ному файлу. Если этот путь не указан, такие программы не бу- дут выдавать справку по запросу пользователя. Напомним, что путь — это еще одна специальная переменная командного про- цессора, называемая переменной пути. Она указывает ко- мандному процессору, где именно следует искать программы, которые требуется выполнить пользователю. Ниже будет пред- ставлен синтаксис задания переменных среды. Переменные среды задаются иначе, чем обычные пере- менные командного процессора. Поэтому вместо обычного выражения <имя_переменной>=< значение> в данном случае используется следующий синтаксис: setenv <имя_переменной> <значение> Что такое “переменная среды” Переме ые едь с ользуются в с с е е ix для передачи информации программам и специальной настройки их режима работы. Для практического освоения переменных среды рекомен- дуется использовать экспериментальную среду, в которой можно безбоязненно вносить изменения до тех пор, пока не будет приобретен достаточный практический опыт работы с этими переменными. Начинающим пользователям Unix ре- комендуется записывать изменения, которые они вносят в свою рабочую среду, чтобы избежать серьезных осложнений. Переменные среды открывают перед пользователем без- граничные возможности, позволяя без особого труда вносить изменения в его рабочую среду.
220 Урок 16 Что дозволено Юпитеру, то не дозволено быку Работая с переменными среды, вы должны иметь в виду, что настройка среды в одном командном процессора не оказывает влияния на другие командные процессоры» Если вам требуется периодически менять конфигурацию среды, установите разные значения одной и той жё пе- ременной в разных командных процессорах. Пути Как упоминалось выше, путь указывает командному про- цессору, где именно следует искать программы, которые тре- буется выполнить пользователю. Возможно, вам уже прихо- дилось сталкиваться со следующей ситуацией: если в теку- щем каталоге имеется копия программы, то при вводе имени ее файла иногда появляется сообщение об ошибке command not found (команда не найдена). Объясняется это тем, что в переменной пути отсутствует текущий каталог. Эту ситуа- цию можно воспроизвести следующим образом: Command not found Помимо улыбающейся мордочки, вы получите в ответ со- общение о том, что команда не найдена. Это означает одно из двух: отсутствие пути к команде либо отсутствие самой ко- манды. Для выполнения команд и программ в текущем ката- логе можно ввести команду ./ <программа> или же доба- вить к пути текущий каталог. Текущий каталог пользователя обычно не указывается в пути из соображений безопасности. Именно мерами безопасности и защиты системы Unix объяс- няется отсутствие в некоторых случаях доступа к нужной команде или дополнительной возможности. Если ваш текущий каталог указан в пути, то вы можете быть введены в заблуждение, выполняя произвольные программы, которые имеют имена типичных команд Unix и скрытно введе- ны в ваши каталоги в виде псевдонимов или файлов сценариев, что не очень хорошо. Для просмотра текущего пути вы можете воспользоваться командой echo $РАТН. Если в данной переменной отсутству-
Видоизменение рабочей среды 221 ют некоторые нужные вам пути, например, к текущему ката- логу или же к каталогу /usr/local/bin, их можно ввести по следующей команде: set path=($path /usr/local/bin А теперь перейдем от просмотра и задания пути к устанав- ливаемым по умолчанию параметрам пользователя и файлам с точкой. Применение файлов с точкой При создании учетной записи нового пользователя Unix некоторые устанавливаемые по умолчанию параметры со- храняются в файлах конфигурации, называемых файлами с точкой и размещаемых в начальном каталоге пользователя (-)• Файлы с точкой представляют собой файлы, начинаю- щиеся с символа “точка” (.). В зависимости от используемого типа командного процессора одни из файлов с точкой оказы- ваются более активными, чем другие. Эти файлы обычно лучше не трогать, если не уметь с ними обращаться. Но ино- гда в них все же приходится вносить изменения. Внося изменения в файлы с точкой, вы можете случайно их испортить или сделать неработоспособными, введя невер- ный элемент данных. А испорченные и неработоспособные файлы могут не дать вам возможность войти в систему в сле- дующий раз или иным образом повлиять на вашу учетную за- пись. В связи с этим рекомендуется сделать резервные копии этих файлов и аккуратно вносить в них изменения. Но если у вас есть время и терпение, установите у себя дома свободно доступную версию Unix, чтобы использовать ее в качестве экспериментальной системы. Для вывода списка всех дос- тупных вам файлов с точкой введите команду 1s -а. (?) Пользуйтесь дополнител ьными параметрами команд в определенном сочетании Если требуется просмотреть файлы с точкой в длин- ном списке, введите команду is -la. Эти файлы ока- зываются скрытыми благодаря символу “точка” (.).
222 Урок 16 Ниже приведен типичный перечень используемых по умолчанию файлов с точкой, хотя они могут и отсутствовать в некоторых системах Unix. • . login и . logout. Нетрудно догадаться, что эти фай- лы выполняются при входе в систему и выходе из нее. Оба файла представляют собой сценарии командного процессора, содержащие уже известные вам команды. • .cshrc и .profile. Сценарии командного процессора, выполняемые при запуске командного процессора. У командных процессоров имеются собственные сцена- рии, выполняемые при их запуске. • .Xlldefaults и .Xdefaults. Эти файлы содержат па- раметры настройки, используемые в базе данных ре- сурсов сервера. Такие параметры используются, глав- ным образом, в графической среде X Window System. Воспользовавшись командой find с метасимволами (напри- мер, find * * /etc), вы можете также просмотреть все фай- лы с точкой, находящиеся в доступных вам каталогах. Не бой- тесь просматривать содержимое файлов с точкой. Только не изменяйте их, если не знаете, как и что делать с ними, особенно в системе, используемой на работе, а не в учебных и экспери- ментальных целях. Работа с графическим пользовательским интерфейсом Среда настольной системы KDE допускает специальную на- стройку рабочей среды таким же образом, как это делается в Windows или любой другой настольной операционной систе- ме. Степень изменений, вносимых в эту среду, зависит от пол- номочий пользователя. В KDE можно выбрать подходящий фоновый рисунок, экранные заставки, шрифты и много других элементов этой графической среды. Поэтому рассмотрим спе- циальную настройку рабочей среды в KDE на примере простого
Видоизменение рабочей среды 223 упражнения, демонстрирующего изменение используемой по умолчанию конфигурации командного процессора, в частно- сти — режима предварительного просмотра (рис. 16.1). Рис. 16.1. Изменение используемой по умолчанию конфигурации eKDE 1. Щелкните правой кнопкой мыши на рабочем столе KDE. 2. Щелкните на пиктограмме Behavior (Режим работы). 3. Выберите типы файлов, которые требуют предвари- тельного просмотра в KDE. 4. Внесите нужные вам изменения и щелкните на кнопке Apply (Применить) или ОК, чтобы подтвердить эти из- менения. Резюме В этом уроке вы научились видоизменять свою рабочую среду и выполнять ее специальную настройку. Несмотря на то что данная тема была затронута лишь вскользь, материала урока должно быть вполне достаточно для того, чтобы вы
224 Урок 16 смогли внести изменения в конфигурацию своей системы. Но экспериментировать с видоизменением рабочей среды реко- мендуется в такой системе, которая не сильно пострадает от ущерба, нанесенного ей подобными изменениями, т.е. в экс- периментальной, а не в рабочей системе. Ниже приведено краткое изложение данного урока. • Имена переменных среды всегда указываются пропис- ными буквами и предваряющим их знаком $, с помо- щью которого они распознаются, как переменные. • Переменные среды часто используются как единое средство указания дополнительных параметров конфи- гурации программы, например, для указания катало- га, который требуется программе. • Переменная $РАТН указывает системе, где именно следу- ет искать команды, вводимые пользователем. Если вве- денная команда присутствует в системе, но путь к ней не указан в переменной $РАТН, она не будет найдена. • Псевдонимы являются весьма эффективным средством для работы в командных процессорах Unix. С их помо- щью можно переименовывать команды или же приме- нять команды всегда с одними и теми же дополнитель- ными параметрами. • Файлы с точкой представляют собой текстовые файлы, используемые программами для выборки данных об их конфигурации. Имена таких файлов начинаются с точ- ки (.). С помощью этих файлов осуществляются авто- матическая настройка командного процессора и специ- альная настройка параметров оконной системы.
Урок 17 Печать в Unix Этот урок посвящен организации печати в системе Unix. В этом уроке печать в Unix рассматривается не с точки зре- ния системного администратора, устанавливающего и развер- тывающего принтеры, а с точки зрения рядового пользователя, обращающегося к принтеру, уже настроенному на печать. В Unix принят оригинальный подход: считать все файла- ми. Печать в Unix также трактуется своеобразно: никаких отличий между локальной и удаленной печатью не делается. В связи с этим принтером может считаться любое печатающее устройство, физически подключенное к локальной системе, удаленной системе или к сети. Г2Л Краткая историческая справка В прошлом применялись две системы печати в Unix: ..;<>х/<г\Й1р<и:?:1р^.::Система;'1р: была внедрена в версии BSD /;Г:^:"^?7(Вег1<е1еу. Standard Distribution — Стандартный дист: v рибутив КалйфорнийскЬго университета в Беркли), а система Ipd — в версии AT&T System V. Система печати 1р считается устаревшей и менее развитой, и поэтому здесь рассматривается, в основ- ном, система Ipd. Но материал данного урока ока- жется полезным даже тем, кому по-прежнему прихо- дится пользоваться системой печати 1р, хотя в этом случае рекомендуется обратиться за дополнительной справкой к оперативным страницам руководства. А теперь рассмотрим порядок отправки задания на печать с помощью команды 1рг.
226 Урок 17 Команда 1рг В связи с тем что Unix является многопользовательской средой, в любой момент времени печатать на принтере могут несколько пользователей. Во время печати в Unix задание на печать посылается с определенным номером. Этот номер при- сваивается заданию в системе Unix для отслеживания данно- го задания вплоть до его завершения. Отмена начатого зада- ния на печать осуществляется по его номеру. При этом зада- ние исключается из очереди на печать и уже не является за- держанным заданием на печать. Итак, пояснив основы печати в Unix, покажем, как это делается на практике. Если в вашей системе реализована система печати Ipd (вместе с демоном построчного принтера и соответствующим протоколом), то для отправки заданий на печать на доступ- ном вам принтере вы можете воспользоваться набором ко- манд печати. Команда 1рг (ее сокращенное название означает “построчный принтер”) представляет собой основной способ вывода данных на печать, доступный в подавляющем боль- шинстве систем Unix, если только эта команда не исключена из системы или не сделана недоступной. По существу, коман- да 1рг выводит все данные непосредственно на указанный принтер. Для того чтобы воспользоваться этой командой, вы- полните следующую процедуру. 1. Определите имя принтера, которым вы предполагаете воспользоваться для печати. В некоторых случаях имя принтера предоставляется системным администратором. 2. Выберите файл для вывода на печать, например тек- стовый файл. При отсутствии такого файла создайте его в редакторе emacs или vi. 3. Отправьте задание на печать по следующей команде: 1рг -Р<имя принтера> <имя_файла> <имя_файла>. (пробел между ключом -Р и именем принтера должен от- сутствовать). 4. Если в вашей системе установлен только один принтер, введите более простую команду: 1рг <имя_файла> <имя_файла>....
Печать в Unix 227 А теперь покажем применение команды 1рг на конкрет- ном примере: >lpr -Pprl anyfile.txt О печати, принтере, сервере печати и очереди на печать ' ч' С печатью связан целый ряд специальных терминов, о которых нужно знать, чтобы ясно понимать, как этот процесс организован в Unix. Без этого вам будет трудно распечатывать свои документы, текстовые или другие файлы в данной системе. Прежде всего, печать — это воспроизведение копий текста и изображений в системе Unix. Принтер — это ус гройство, едназна енное для печати конкретного задания. В качестве принтера может служить любое перифер йное устройство, создающее твердую ко- ню (долговре енный экзе пляр удобо ае о текста и/ ли рафики, обы но получаемый на бумаге) данных, хранящихся на компьютере, подключенном к этому устройству, или информации из другого ис- точника. Сервер печати — э о, как в ло, а парат ные и/или программные средства, предназначенные для предоставления пользователям доступа к цен- тральному принтеру локально или по сети. Сервер печати использует общие ресурсы и собирает зада- ния на печать в очереди на печать, которая обыч о организуется на данном сервере, но иногда и в ло- кальной системе. Кроме того, сервер печати оправ- - ляе задания на чать из ед конкретньй принтер. Сервер печати служит в качестве буфера для хранения печатаемой информации в оперативной памяти до тех пор, пока не освободится принтер. Можно также запрограммировать сервер печати на печать задани" в порядке их поступлен я либо при- своить отдельным пользователям соответствующие приоритеты Для печати их заданий. Если задание требуется удалить из очереди на печать, это может сделать только пользователь с корневой учетной за- п сью л бо тот пользователь, ко орому принадлежит д ое з ие на ат . 3 ание а печат — это
228 Урок 17 задание, отправляемое на пр нтер. А само понятие задания служит для обозначения того, что вам требу- ется сделать в системе. Приведенных выше понятий вполне достаточно для изучения остального материала этого урока. Поэтому уясните эти понятия как следует, прежде чем про- должить данный урок. В результате выполнения команды 1рг в приведенном вы- ше примере файл any file. txt выводится на принтер prl. Ес- ли данный принтер не занят, файл печатается немедленно. Иногда возникает потребность напечатать несколько копий до- кумента. Для этого введите одну и ту же команду 1рг для каж- дой копии в отдельности или же просто укажите число копий в качестве дополнительного параметра данной команды. (у) Печать запрещена Вы не сможете печатать, если вам не предоставлены для этого соответствующие права. В таком случае при выдаче команды 1рг появляется сообщение об ошибке no d au t dest'nati availab e с льзуе oe nd умолчанию место назначения отсутствует; да ное сообщение об ошибке может быть иным в зависимости о спол зуе о~ в pc Unix). Это озна ает, то ва не предоставлено целевое устройство для отправки зада- ний на физически подключенный принтер. Тем самым Unix уведомляет вас: '‘Извините, но печатать вам за- прещено!". . Укажите число копий в качестве дополнительного пара- метра команды 1рг в следующем формате: Ipr with #<число копий>, Таким образом, указанное число копий бу- дет напечатано в течение одного задания на печать. Кроме того, существует ряд форматов файлов и специаль- ных случаев, требующих особого внимания при печати в Unix. Так, для преобразования информации в конкретный формат, поддерживаемый принтером, применяются специальные фильтры. Ниже приведены некоторые наиболее типичные фильтры.
Печать в Unix 229 • .ps. Это расширение означает файлы формата Post- script. Файлы Postscript автоматически обрабатывают- ся командой 1рг. Их можно печатать таким же обра- зом, как и файлы неформатированного текста. • .dvi. Это расширение означает текстовые файлы. Та- кие файлы содержат специальные команды компонов- ки страниц текста. Для правильной их печати команду 1рг следует вводить с ключом -d. • tr. Это расширение означает файлы формата troff, который является стандартным форматом файлов для хранения оперативных страниц руководства. Для пе- чати таких страниц команду 1рг следует вводить с ключом - t. Итак, уже вы знаете, как организована печать в Unix и ка- кие команды применяются для отправки заданий на печать. А теперь вам необходимо научиться проверять состояние зада- ния на печать, чтобы оперативно разрешать затруднения, воз- никающие при печати. Система печати CUPS If Фильтры применяются также в CUPS (Common Unix Printing System — общая система печати в Unix). Эта система представляет собой новую и более стандар- тизированную для Unix и Linux модель печати. CUPS — это модульная система печати в Unix. Она дает вашей истеме возможность выполнять функции сервера печати. Система CUPS предназначена для уНррщеЙЖ сравнению со стандартными для Unix решениями данной задачи. Она состоит из спулера печати, планировщика зада- ний и системы фильтрации. Основное преимущество системы печати CUPS состо- ит в том, что она допускает обработку данных, выводи- мых на сервер печати, в самых разных форматах с по- мощью встроенных в нее фильтров. При этом она пре- образует данные из задания на печать в понятный для принтера формат. В системе CUPS это делается с по- мощью типов MIME (Multipart Internet Mail Extensions —
230 Урок 17 мц многоцелевые расширения электронной почты в Internet). A MIME — это стандартный для Internet формат электронной почты который применяется и в других системах: для определения типа обрабаты- ваемого файла. " С улинг ... tess/ г С улер печа и — это программа, предназначенная для временного хранения документов, выводимых на 4 печатал Эта программа управляет передачей данных, поступающих от стороны, запрашивающей печать, т.е. от вас. на печатающее устройство, т:;Ь. принтер. Посредством спулинга задания постепенно подкачи^ ваются, ожидая своей очереди на печать. Команда lpq Итак, вы отправили задание на принтер. А что же дальше? Задания, находящиеся в очереди на печать, проверяются и обрабатываются сервером печати. После отправки задания на принтер (особенно сетевой) нередко возникает потребность проверить состояние выполнения задания, чтобы выяснить, нужно ли еще раз отослать задание на печать или устранить другие затруднения, связанные с его печатью. Для проверки состояния задания следует просмотреть очередь заданий того принтера, на который было отправлено данное задание. Это делается с помощью команды lpq Р<имя принтерам Если же в системе имеется единственный принтер, то команду lpq достаточно указать без дополни- тельного параметра. Ниже приведен пример выполнения ко- манды lpq: >lpq -Pprl Rank Owner Job Files Total Size 1st rob 27 testfile.txt 100 bytes 2nd erika 28 anyfile.txt 30023 bytes
Печать в Unix 231 Как показывает данный пример, в настоящий момент в очереди принтера prl находятся два задания. Одно из них принадлежит автору книги —пользователю rob, а другое — пользователю erika. Каждое задание располагается в очере- ди по рангу, т.е. по порядку его вывода на печать. Кроме того, по команде Ipq отображаются имена печатаемых файлов, их размеры и номера заданий на печать. Итак, вы уже знаете, как вывести задание на печать и про- верить его состояние, но что если требуется остановить или удалить задание на печать? Как это сделать? Команд Iprm Если вы поспешили отправить задание на принтер, а затем решили все же не печатать его, можете отменить задание. Для того чтобы не расходовать зря бумагу, вы можете быстро оста- новить выполнение задания на печать, особенно если это пе- чать документа объемом 1000 страниц. Команда Iprm позволя- ет удалять отдельные задания из очереди на печать. В следую- щей процедуре показано, как это делается на практике. 1. Воспользуйтесь командой Ipq для поиска номера зада- ния, которое вам нужно удалить из очереди. 2. Выдайте команду Iprm -Р<имя принтера> < номер задания>. Так, если требуется удалить задание #15 из очереди прин- тера prl, введите следующую команду: >lprm -Pprl 15 Для того чтобы проконтролировать удаление задания, вы можете вновь проверить очередь заданий данного принтера по следующей команде: >lpq -Pprl Указанное выше задание должно быть остановлено и не- активно. Вот, собственно, все, что касается печати в Unix. Если вы стремитесь овладеть этим процессом в полной мере, непре- менно изучите его самостоятельно во всех деталях. Сделать
232 Урок 17 это вам будет нетрудно, основываясь на тех понятиях, кото- рые были рассмотрены в этом уроке. За дополнительными сведениями о печати в Unix обращайтесь к соответствующим оперативным страницам руководства и ресурсам Internet. Резюме В этом уроке вы изучили команды, которые требуются для печати из командной строки. Команды Ipr, lpq и 1рпп со- ставляют основной набор инструментальных средств для ор- ганизации печати в Unix. Ниже приведено краткое изложе- ние данного урока. • Команды 1рг и 1р. Служат для вывода файла на пе- чать. Если файл содержит не простой, а специально скомпонованный текст, он может быть обработан фильтром, правильно форматирующим данные для вы- вода на принтер. • Команды lpq и Ips tat. Когда запрос на печать отсыла- ется на принтер по команде 1рг или enscript, он вво- дится в очередь данного принтера. Для отображения всех задержанных запросов на печать, номеров соот- ветствующих заданий и пользователей, которым они принадлежат, служит команда lpq или Ips tat -t. • Команды Iprm и cancel. Если требуется удалить зада- ние на печать из очереди конкретного принтера, это можно сделать по команде Iprm или cancel.
Урок 18 Подключение К сети и безопасность Этот урок посвящен некоторым аспектам организации удаленного доступа, подключению к сети и безопасной рабо- те в системе Unix, В этом уроке будет показано, каким образом удаленный доступ организуется в системе Unix с помощью таких инстру- ментальных средств, как telnet и ssh (защищенный команд- ный процессор), а надежная отправка и получение файлов — с помощью протокола передачи файлов FTP. Если в предыду- щих уроках основное внимание уделялось методам входа в сис- тему и управления файлами в локальной системе, то теперь на- стало время пояснить, как это делается в других системах Unix, причем делается безопасно. Удаленный доступ — одна из неотъемлемых составляю- щих работы в Unix. Поэтому система Unix, как правило, за- щищена от несанкционированного доступа непосредственно с консоли. А в силу характера (и стоимости) оборудования масштаба предприятия удаленный доступ к Unix может ока- заться единственным методом доступа к данной системе. Удаленный доступ означает одно из двух: доступ к ло- кальной системе из удаленного места или же доступ к уда- ленной системе из локального места. Так или иначе, это со- вершенно иной метод работы в системе, чем в том случае, ко- гда она находится на диске вашего компьютера и вы можете работать в ней, вводя команды со своей клавиатуры. Нередко доступ к удаленному серверу осуществляется из локальной рабочей станции, что характерно для системы Microsoft Windows, а для подключения к системе Unix требуется ути- лита telnet или защищенный командный процессор. В этом
234 Урок 18 уроке будут рассмотрены эти и другие инструментальные средства удаленного доступа, а также передача файлов по протоколу FTP. На протяжении всех предыдущих уроков этой книги не- однократно упоминались основные принципы работы в сис- теме Unix, позволяющие управлять файлами, процессами и сценариями. А в этом уроке речь пойдет об удаленном доступе к Unix по сети со всеми вытекающими отсюда последствиями с точки зрения безопасности системы. При правильно выбранной конфигурации системы можно установить Unix-машины по всему миру, причем рабочая среда пользователя, файлы и программы на каждой из них будут доступны так же, как и в локальном месте. В этом и со- стоит основное преимущество и эффективность работы в сети. Итак, начнем с утилиты telnet. Применение утилиты telnet Утилита telnet — не только весьма распространенная, но и простая терминальная программа. Она вызывается по команде telnet практически в любой операционной системе, поддер- живающей TCP/IP — совокупность протоколов, обеспечиваю- щих нормальное функционирование telnet, и большинства остальных утилит, представленных в этом уроке. Рассмотре- ние протокола TCP/IP выходит за рамки данной книги, хотя для изучения материала этого урока нужно иметь представле- ние об IP-адресе. Следует также отметить, что для работы в се- ти и удаленного доступа к системе Unix рекомендуется утилита ssh, предоставляющая средства шифрования, позволяющие защитить соединение, устанавливаемое с помощью утилиты telnet, которая, как правило, такой защиты не обеспечивает, поскольку это довольно простая программа. Но несмотря на это ею пользуется огромное число людей по всему миру. Утилита telnet применяется, в основном, для открытия сеанса регистрации в удаленной системе. Для этого выдайте следующую команду: telnet <удаленная машина>, где
Подключение к сети и безопасность 235 <удаленная машина> — это IP-адрес или имя хоста, т.е. се- тевого узла. В итоге появится такое же приглашение на реги- страцию в удаленной системе и ввод пароля, как и в том слу- чае, когда вы сидите за консолью данной удаленной системы. Вспомните урок 1 и войдите в систему Unix, чтобы порабо- тать в ней в удаленном режиме. > telnet 10.1. > telnet prl В приведенном выше примере показано, насколько просто можно подключиться к удаленной системе с помощью утили- ты telnet. Достаточно ввести имя хоста или IP-адрес после команды telnet, и система попытается установить соедине- ние с указанной машиной (т.е. организовать сеанс удаленного доступа к ней по протоколу telnet). Освойте эту процедуру как следует, поскольку вам придется часто пользоваться ею, если вы собираетесь и далее работать с Unix. IP-адрес IP-адрес в простейшем виде представляет собой стро- ку из четырех цифр, разделенных точками, например 10.1.1.1. Такая строка служит для обозначения хоста, т.е. вычислительной системы, подключённой к узлу се- ти Internet. При организации доступа из ПК к Internet посредством поставщика услуг Internet пользователь ПК иногда получает временный IP-адрес и соответст- вующее имя, присвоенное сервером доменных имен. Благодаря этому пользователю предоставляется воз- можность блуждать по Internet (более подробно об этом речь пойдет в конце данной книги). Имя хоста может быть использовано только в том случае, если оно присутствует в файле hosts со спи- ском хостов. С другой стороны, имя хоста можно ука- зать непосредственно серверу доменных имен, если он позволяет это сделать, чтобы получить в ответ IP- адрес хоста, У
236 Урок 18 Применение утилиты ssh Если вы уясните принцип действия утилиты telnet и нау- читесь ею пользоваться, то вам не составит большого труда ос- воить утилиту защищенного командного процессора, вызы- ваемую по команде ssh. Защищенный командный процессор применяется, главным образом, для входа в другую систему по сети, выполнения команд на удаленной машине и перемеще- ния файлов с одной машины на другую таким же образом, как и с помощью утилиты telnet. Отличие заключается лишь в том, что в ssh это делается безопасно. Утилите telnet, работающей по одноименному протоко- лу, входящему в совокупность протоколов TCP/IP, присущ ряд серьезных недостатков. В частности, для подключения к удаленной системе нужно указывать ее IP-адрес. A IP — это межсетевой протокол, которому также присущи существен- ные недостатки, поскольку он применяется так же давно, как и сама система Unix (в настоящее время распространена вер- сия 4 этого протокола). Иными словами, протокол IP не был рассчитан на серьезную защиту от хакеров, взломщиков, сценарных деток и прочих нарушителей, а следовательно, он не удовлетворяет современным требованиям к безопасности систем. Для замены устаревшей версии 4 данного протокола была создана более новая версия 6. Однако ее реализация связана с большими трудностями, которые и послужили основным препятствием для ее широкого распространения. Так где же выход? В применении ssh. В простейшем виде ssh представ- ляет собой зашифрованный протокол telnet, обеспечиваю- щий строгую аутентификацию и защищенную передачу ин- формации по незащищенным каналам связи (Internet или в локальной сети), где можно без труда проанализировать па- кеты и получить доступ к незашифрованным данным. Таким образом, утилита ssh предназначена для замены telnet, г login (см. следующий раздел) и прочих незащищенных протоколов, действующих по тому же принципу передачи от- крытого текста. А теперь покажем, как пользоваться утили- той ssh:
Подключение к сети и безопасность 237 > ssh 10.1. > ssh prl Следует, однако, иметь в виду, что утилита ssh защищает лишь в том случае, если она применяется. Команда ssh дос- тупна в большинстве систем. Но если ее нет в вашей системе и вы предполагаете часто работать с Unix в удаленном режиме, попросите своего системного администратора установить ssh. Применение ШК Поначалу вам будет йёпрррто освоитй ssh, если у вас нет соответствующего практического опыта. Если пользоваться утилитой telnet очень просто (достав точно ввести одноименную команду и указать имя хоста), то с применением утилиты ssh могут возник- нуть определенные осложнения. Прежде всего, необ- ходимо правильно установить ssh, иначе возможны сообщения об ошибках. Кроме того, в систему Unix, возможно, придется ввести соответствующую ин- формацию для шифрования. Принимая все это во внимание, не стесняйтесь обращаться за помощью к системному администратору, :: Применение утилиты rlogin Аналогично telnet утилита rlogin служит для удален- ного доступа в незащищенном режиме. Но между этими ути- литами имеется одно существенное различие: при попытке соединения rlogin передает некоторую информацию о поль- зователе. При наличии подходящей учетной записи на нескольких машинах вы можете подключиться к ним, не регистрируясь на каждой из них в отдельности. Попробуйте воспользовать- ся утилитой rlogin, введя следующую команду: rlogin <удаленная машина>.
238 Урок 18 Разнообразие придает вкус жи Изучающие Unix часто спрашивают: “Если утилита М" rlogin не столь надежна, как ssh, то зачем она поддер- живается в системе и зачем нам вообще ее изучать?”, В ответ я всегда говорю им, что не может быть все хоро- шо—должно быть что-то и плохо, и наоборот. В этом состоит разнообразие. Утилита rlogin также може приносить пользу. Обратимся к примеру» Как упомина- лось выше, утилита ssh служит для шифрования сеанса удаленного доступа к системе, однако она защищает от перехвата и прочтения только ередаваемые данные» Если же анализируется парол (что есьма типи но для попыток незаконного прон кновения в сис ему), то предъявляемый пароль ожет б гть ерехва е и рас- крыт. Один из способов защи ь от подобных злоупот- реблений состоит в том, ч обы вообще е вводить па- роль. Для этого достаточно наст оить илиту rlogin таким образом, чтобы она не требовала пароля. Если вы заранее знаете, что будете пользоваться своей учетно" записью на удаленной машине, о можете создать файл .rhosts. В этом файле указывается имя используемой удаленной йашйныГ Если в® затем попь1таетесь вь1пбл- нйть команду rlogin вместе с перечнем удаленных сис- тем в файле .rhosts, у вас не потребуют пароля. По су- ществу, одна машина доверяет вашей учетной записи на другой машине, если она перечислена в файле . rhosts. Это также своего рода защита, хотя она и не избавляет от перехвата мандата пользователя тем , кто анализи- ''„/ч рует сетевой трафик, С применением файла .rhosts также связан опрёде- ленный рйскИЕсли -прризой^т взлом];у^леннбй :сйс^ темы? нарушитель Может получить доступ к этому фай- лу, чтобы воспользоваться учетной записью соответст- вующего пользователя для проникновения в другие с стемы. В итоге удалei । е ь с 1 уязви- мыми. Но грамотному админис ратору системы Unix, как правило, хорошо извес ны все эти потенциальные опасности, и он способен п ав льно оценить риск н - рушения защиты, с одной стороны, и важ ость выпол- няемых операций, с другой стороны, 'чтобы сохранить безопасность системы на долж ом уровне^
Подключение к сети и безопасность 239 Ниже приведен пример применения утилиты rlogin: > rlogin 10.1.1. > rlogin prl Если эта утилита настроена правильно, то в конечном ито- ге появляется приглашение командного процессора в удален- ной системе. В противном случае выдается приглашение для регистрации в удаленной системе для доступа к ней. В силу упомянутых выше проблем защиты и программных недос- татков утилита rlogin применяется редко, и поэтому на- стоятельно рекомендуется не пользоваться ею. Применение утилиты slogin Альтернативой rlogin служит утилита slogin. Это про- грамма доступа с удаленного терминала, обеспечивающая строгое шифрование потока данных аналогично утилите ssh. Если в вашей системе не установлена или неверно настроена утилита ssh, для удаленного доступа настоятельно рекомен- дуется пользоваться утилитой slogin. Утилита slogin функционирует аналогично rlogin, но в то же время она от- сылает в удаленную систему информацию о регистрации и пароле, а все, что вводится с терминала, шифруется и не от- правляется по сети открытым текстом. Для того чтобы выяснить, работает ли в вашей системе Unix сервер защищенного командного процессора, а также установить и настроить, если требуется, утилиту slogin, не- пременно обратитесь к своему системному администратору. Он с готовностью расскажет вам все, что нужно знать о slogin или альтернативных средствах удаленного доступа, чтобы повысить безопасность вверенной ему системы. Применение утилиты ftp Итак, вы ознакомились со средствами удаленного доступа к системе для работы в режиме командной строки. А как на- счет обмена файлами с удаленной системой? Потребность в пе-
240 Урок 18 редаче и получении файлов из удаленной системы возникает не менее часто, чем в локальной системе. Достаточно вспомнить пакеты * . грш и архивные файлы формата tar. Вся эта инфор- мация может передаваться в другие системы Unix, где ею мо- гут воспользоваться по мере необходимости другие люди. Утилита и соответствующая команда ftp предоставляют возможность получать файлы из удаленных машин, не на- строенных на коллективное использование файловых систем вместе с вашей машиной. Если на вашей машине работает FTP-сервер, вы можете воспользоваться им для того, чтобы поделиться своими файлами с остальным миром. За дополни- тельной справкой по данному вопросу обращайтесь к своему системному администратору. Напоминаем, что эта книга по- священа использованию Unix в уже готовом для работы со- стоянии, а все, что нужно ввести в нее дополнительно, требу- ет специального запроса. Для того чтобы воспользоваться утилитой ftp, просто введите следующую команду: ftp <ftp-cepsep>, где FTP- сервер указывается с помощью IP-адреса или имени хоста удаленной машины, на которой этот сервер работает. Если со- единение установлено правильно, появится приглашение предъявить мандат, состоящий из имени пользователя и па- роля. Следует также иметь в виду, что для протокола FTP присущи те же недостатки, что и для протокола telnet. В ча- стности, информация по этому протоколу передается откры- тым текстом. Некоторые FTP-серверы не позволяют устанавливать со- единение с удаленной системой без учетной записи в ней. В таком случае используется анонимное имя пользователя и указывается адрес электронной почты в качестве пароля. Ниже приведен пример входа в удаленную систему с по- мощью утилиты ftp: ftp 10.1. ftp prl После соединения с FTP-сайтом по нему можно переме- щаться с помощью команд cd и 1s. Кроме того, команда get <имя_файла> позволяет получить файл, а команда put <имя_файла> — отправить файл из текущего каталога в уда- ленную систему.
Подключение к сети и безопасность 241 Можно ли защитить FTP Как же защитить протокол FTP, если он по определе- нию не защищен? Ответ прост: воспользоваться SFTP, т.е. защищенным протоколом FTP. Если в ва- шей системе установлена утилита ssh, то в ней, ско- рее всего, имеется и протокол SFTP, обычно входя- щий в состав того же клиентского пакета. Если же та- кой протокол отсутствует, сделайте запрос о нем сис- темному администратору. Кроме того, для безопасного копирования файлов из удаленной системы служит специальная утилита scp, сокращенное название ко- торой означает“защищенное копирование”. Резюме В этом уроке были представлены инструментальные сред- ства удаленного доступа к сетевым ресурсам в глобальном масштабе. По мере освоения Unix вы обнаружите, что это лишь малая часть подобных средств, арсенал которых посто- янно пополняется новыми утилитами. Одни из них постепен- но приходят на смену тем утилитам, которые были рассмот- рены в этом уроке, а другие предоставляют совершенно новые возможности. Поэтому не бойтесь экспериментировать с ни- ми. Ниже приведено краткое изложение данного урока. • Утилита telnet устанавливает соединение с удален- ными машинами. Если у вас имеются учетные записи на разных машинах, вы будете, скорее всего, пользо- ваться этой утилитой довольно часто. • Утилита ssh устанавливает соединение с удаленными машинами в защищенном режиме. Если эта утилита отсутствует в вашей системе, попросите своего систем- ного администратора установить ее. В настоящее время вместо утилиты telnet следует пользоваться ssh. По- мимо простоты применения, эта утилита обеспечивает необходимую безопасность.
242 Урок 18 • Утилита rlogin также устанавливает соединение с уда- ленными машинами. Она оказывается более полезной, чем утилита telnet, если машины, на которых вы мо- жете работать, настроены на удаленный доступ без ввода имени и пароля. • Утилита slogin обеспечивает безопасность удаленных соединений. Если она имеется в вашей системе, поль- зуйтесь именно ею. В связи с тем что системы Unix ежедневно подвергаются попыткам незаконного про- никновения в них, работать в сети становится все менее безопасно. Используя защищенное соединение, обеспе- чиваемое утилитой slogin, вы защищаете свой сетевой трафик от любопытных глаз. • Утилита ftp устанавливает соединение с FTP-серверами и позволяет передавать файлы в глобальном масштабе. • Утилита sftp устанавливает соединение с FTP- серверами и обеспечивает безопасную передачу файлов в глобальном масштабе.
Урок 19 Установка прав доступа Этот урок посвящен установке прав доступа в Unix и управлению ими. Итак, вы уже прошли 18 уроков, постепенно изучая Unix. Здесь мы попробуем восполнить ряд пробелов в изложенном ранее материале. Так, в уроке 4 мы показали, как пользоваться командой 1s с ключом -1 для получения длинного списка фай- лов в текущем каталоге, и пояснили, как правильно интерпре- тировать результат выполнения этой команды, включая права доступа к каждому файлу или каталогу. А в этом уроке будут рассмотрены дополнительные вопросы установки прав доступа и управления ими. Прежде всего, покажем, насколько установка прав досту- па важна для вас как пользователя Unix. Возможно, по ха- рактеру вашей работы вам и не придется иметь дело с права- ми доступа к файлам. Но если вы хотите пользоваться фай- лами совместно с другими пользователями вашей системы, вам нужно знать о правах доступа к файлам немного больше. Итак, начнем по порядку. Права доступа к файлам и каталогам в Unix Проанализируем результат выполнения следующей ко- манды 1s -1: >ls -1 -rw-r—г— 1 rob rob 2024 Dec 25 20:22 39 atest.tar -rwxrwxr-x 5 rob rob 1024 Dec 25 20:22 atest2.tar
244 Урок 19 При рассмотрении файлов и каталогов нужно ясно пони- мать принцип принадлежности, который означает не что иное, как чьи-то права владения файлом. В каждом файле хранится информация, обозначающая учетную запись поль- зователя, которому принадлежит данный файл. Как показы- вает приведенный выше пример, оба файла, atest.tar и atest2 . tar, в текущем каталоге принадлежат пользователю rob (автору данной книги). Файлы обычно принадлежат тем, кто их создал, хотя права владения ими могут передаваться. Кроме того, в каждом файле в системе Unix хранится еще одна вспомогательная информация о групповой принадлеж- ности данного файла. Чтотакое “групна” Определение группы е так словно, как е примене- ние. Группа -э о совокупность пользователей. Пре- доставляя группе пользователей права н коллектив- ное владе ие файлами, можно организовать их со- вместную работу над проектом, чтобы любые изме- нен я в ем станов сь сразу же доступными для всех членов группы оздание группы входит в обя- занности сис емного администр тора. Поэтому если вам требуется группа для рабо ы над проектом, лого- во те о ее создании со своим системны админист- ратором. :'.л Как только права доступа вступают в силу, они определя- ют порядок разрешенных для пользователя (или группы) действий с файлом или каталогом. К основным действиям подобного рода относятся следующие: чтение, запись и вы- полнение. О таких действиях мы уже упоминали в предыду- щих уроках данной книги. Если у вас нет прав на чтение, за- пись или выполнение, вы не сможете работать с файлами. Как видите, принцип действия прав доступа довольно прост. • Права чтения дают разрешение на просмотр файла. • Права записи дают разрешение на изменение файла. • Права выполнения дают разрешение на выполнение файла.
Установка прав доступа 245 Особенности установки прав доступа к каталогам Итак, мы рассмотрели права доступа к файлам. А как на- счет прав доступа к каталогам, в которых содержатся файлы? Эти права несколько иные, чем для файлов. Так, если для ка- талога не установлены права выполнения, к этому каталогу нельзя перейти (по команде cd), а также нельзя просматри- вать его содержимое или записывать в него файлы. По суще- ству, такой каталог оказывается недоступным. Если же для каталога не установлены права чтения, в нем можно созда- вать файлы и читать их, но нельзя выводить содержимое это- го каталога. И наконец, если для каталога не установлены права записи, в нем можно читать файлы и выводить его со- держимое, но нельзя создавать новые файлы. Уровни прав доступа Права доступа к файлам или каталогам применяются на трех отдельных уровнях: владельца, группы и остального мира. • Права пользователя (называемого иногда владельцем) просто определяют права доступа к файлу его владельца. • Права группы определяют действия, которые члены группы могут выполнять над файлом, который при- надлежит к данной группе. Системный администратор может создавать новые группы или вводить в группу новых членов. • Права остальных пользователей (или остального ми- ра) распространяются на большую группу, охваты- вающую всех пользователей системы. Например, права остальных пользователей нередко устанавливаются для каталогов электронной почты. Если в системе разрешен гостевой доступ, то любые права остальных пользователей могут распространяться на всех, кому позволено входить в систему.
246 Урок 19 Применение команды Is -1 В этой книге мы уже достаточно подробно рассматривали команду 1s, поэтому обратимся непосредственно к конкрет- ному примеру ее применения с ключом -1. Если выполнить команду Is -1 для вывода содержимого каталога, то в итоге можно определить владельца, группу и соответствующие права доступа к любому перечисленному файлу. В некоторых вариантах команды 1s владелец и группа одновременно не отображаются. Как правило, группа и владелец отображают- ся с помощью ключа -д, как в следующей команде: Is -1g. Итак, рассмотрим еще один пример применения команды Is -1: >ls -1 -rw-r—г— 1 rob rob 2024 Dec 25 20:00 atest.tar drwxrwxr-x 5 rob rob 1024 Dec 25 20:22 test В данном случае нас интересует информация в первом, третьем и четвертом столбцах. В первом столбце указываются активные права владельца, группы и остальных пользовате- лей для каждого файла или каталога. Если это каталог, то первым в начале этого столбца указывается символ d. В дан- ном примере пользователю rob принадлежит каталог test, созданный по команде mkdir. Как правило, вместо символа d в начале первого столбца указывается символ -, как это вид- но на примере файла atest.tar. А остальные символы в данном столбце означают права чтения (г), записи (w) и вы- полнения (х). Три первых символа, следующих после символа - (или d), означают активные права доступа владельца, три других символа — права группы, а три последних символа — права остальных пользователей. Очень важно запомнить по- рядок следования этих символов, поскольку именно так оп- ределяется степень защиты файла или каталога, т.е. что именно остальной мир может делать с вашими файлами, в том числе изменять или удалять их, если ему даны слиш- ком большие права. В третьем столбце указан владелец файла (в данном случае — пользователь rob, автор данной книги).
Установка прав доступа 247 В четвертом столбце указан владелец группы (опять же поль- зователь rob). А в остальных столбцах просто указываются размер файла, дата и время его создания, а также имя файла или каталога. Применение команды chmod Теперь, когда вы знаете, что собой представляют права доступа, вам, вероятно, хотелось бы научиться изменять их, а не только определять по списку файлов в каталоге. Конечно, такой список дает ясное представление о правах доступа к файлам, но для изменения этих прав нужно предпринять до- полнительный шаг, который состоит в том, чтобы воспользо- ваться командой chmod. Эту команду можно выполнять в двух режимах: оперативном и более удобном для установки прав доступа. В удобном для пользователя режиме права доступа уста- навливаются и сбрасываются с помощью легко запоминаю- щихся действий, как в следующей процедуре. 1. Выберите уровень прав доступа. Так, если требуется установить права для владельца, выберите уровень и. Если нужно изменить права для группы, выберите уро- вень g. А если необходимо установить права для ос- тальных, выберите уровень о. И наконец, если права должны распространяться на все уровни (владельца, группы и остальных), выберите уровень а. 2. Выберите операцию. Определите, нужно ли установить или сбросить права доступа на конкретном уровне. Так, если требуется установить права доступа, выберите операцию +. А если права доступа нужно сбросить, вы- берите операцию —. 3. Выберите права доступа. В частности, для чтения вы- берите право г, для записи — право w, а для выполне- ния — право х. 4. Выдайте команду chmod <уровень применения прав> <операция><право> <имя_фаила> <имя_файла> ....
248 Урок 19 Рассмотрим конкретный пример применения команды chmod. Тщательно проработайте этот пример и весь урок в це- лом, чтобы хорошенько запомнить порядок установки прав доступа, если вы собираетесь когда-нибудь перейти в ранг системного администратора. У вас не будет никаких шансов добиться желанной цели, если вы не будете уметь изменять права доступа. Команда chmod устанавливает права доступа именно так, как это нужно пользователю. Покажем, как это делается. Прежде всего, необходимо войти в систему Unix. Если это не локальная, а удаленная система, установите с ней соединение с помощью утилиты telnet или ssh, войдите в нее, измените некоторые права доступа, выполнив команду chmod, как только появится приглашение командного процессора, а за- тем завершите сеанс работы в системе. Ниже приведены не- которые примеры применения команды chmod: > chmod 0755 script.sh > chmod 755 script.sh > chmod u=rwx,g=rx,o=rx script.sh А теперь обратимся к реальному примеру активизации прав группы на файл script. sh: -rw------1 rob test 1662882 Dec 25 12:00 script.sh >chxnod g+w script.sh Для проверки правильности установки указанных выше прав доступа к файлу достаточно выполнить следующую ко- манду: >ls -1 script.sh -rw--w--- 1 rob test 1662882 Dec 25 12:00 script.sh В данном случае права записи в файл активизированы для всех членов группы test. Такой метод настройки прав доступа к файлам носит сим- волический характер, и поэтому его нетрудно освоить. Одна- ко существует и более эффективный синтаксис команды chmod. В приведенном выше примере можно установить кон- кретную поразрядную маску, чтобы управлять с ее помощью правами доступа к файлу. Такая маска обычно состоит из трех двоичных разрядов, означающих каждый уровень при- менения прав. Эти двоичные разряды (биты) означают (слева направо) следующее.
Установка прав доступа 249 • Первый бит, начиная слева, управляет правами чтения. • Второй бит управляет правами записи. • Третий бит управляет правами выполнения. Покажем, как двоичные разряды маски преобразуются в десятичные числа. 100 Право чтения Десятичным эквивалентом этого двоичного значения является число 4. 010 Право записи Десятичным эквивалентом этого двоичного значения является число 2. 001 Право выполнения Десятичным эквивалентом этого двоичного значения является число 1. Вот так двоичные значения преобразуются в десятичные. Но если вы не знаете булеву алгебру, то воспользуйтесь табл. 19.1, в которой приведены соответствующие преобразования. Таблица 19.1. Биты прав доступа Третий бит Чтение Второй бит Запись Первый бит Выполнение 100 010 001 4 2 1 Итак, покажем, как двоичные числа преобразуются в де- сятичные. В данном случае нужно преобразовать первые три числа. Двигаясь справа налево в приведенной выше таблице, начните счет с 1, возводя каждый раз результат в степень 2, чтобы получить в итоге ряд чисел 1, 2, 4 (т.е. 2°, 21, 22). Затем возьмите первое двоичное значение 001 и произведите под- счет слева направо, отбрасывая нули и оставляя единицы. В итоге счет дойдет до 1 в ряду десятичных чисел 1, 2, 4 спра- ва налево, т.е. двоичному значению 001 будет соответствовать десятичное число 1. А теперь возьмите следующее двоичное значение 010 и вновь произведите подсчет слева направо, от- брасывая нули и оставляя единицы. В итоге счет дойдет до 1, совпадающей с 2 в ряду чисел 1, 2, 4 справа налево, а отбро- шенные нули будут соответствовать числам 1 и 4. Таким об- разом, двоичному значению 010 соответствует десятичное число 2. Аналогично двоичное значение 100 преобразуется в десятичное число 4.
250 Урок 19 Следуя данному примеру, вы сможете быстро определить нужное десятичное число, чтобы использовать его для опера- тивной установки прав доступа по команде chmod. Подобным образом несложно установить сразу несколько прав владельца, группы и остальных пользователей. Напри- мер, нетрудно заметить, что двоичное значение 110 пораз- рядной маски означает комбинацию прав чтения и записи. Этому двоичному значению соответствует десятичное число 6 (4+2). Каждое такое десятичное число означает комбинацию устанавливаемых прав доступа. В частности, первая цифра означает права владельца, вторая — права группы, а тре- тья — права остальных пользователей. Допустим, что для владельца требуется установить пол- ные права, а для группы и остальных пользователей — толь- ко права чтения и выполнения. Полные права определяются путем сложения всех значений отдельных прав (4+2+1=7). А правам чтения и выполнения соответствует сумма чисел 4+1=5. Таким образом, права владельца, группы и остальных пользователей представляют собой комбинацию чисел 7, 5, 5, которые вводятся как единое число 755. В оперативном ре- жиме команда chmod имеет следующий синтаксис: chmod <права> <имя_файла> <имя_файла> Ниже приведен пример применения команды chmod в опе- ративном режиме: >chrriod 755 script.sh >ls -lg script.sh -rwxr-xr-x 1 rob test 1663882 Dec 25 script.sh В итоге владелец получает полные права на чтение, запись и выполнение, тогда как группа и остальные пользователи — только права на чтение и выполнение. Приобретя некоторый опыт, вы быстро обнаружите, что права быстрее устанавли- ваются вторым способом (т.е. в оперативном режиме работы команды chmod). Для этого достаточно запомнить, что пра- вам чтения соответствует десятичное число 4, правам запи- си — число 2, а правам выполнения — число 1.
Установка прав доступа 251 Рекурсивное изменение прав доступа Если требуется изменить прем доступа ко всем фай- лам и каталогам в любом выбранном каталоге, это можно сделать рекурсивно по команде chnod с клю- чом -R. ка* в следующем примере: > сЛяоб -? кмм.млтзлога Если вы полностью уяснили принцип изменения прав дос- тупа, то можете без труда делать это в своей системе. В про- тивном случае продолжайте практиковаться до тех пор, пока не научитесь правильно интерпретировать права доступа по команде Is -1 и устанавливать их по команде chmod. А теперь, когда пройдено самое трудное, покажем, как изменяются права группы. Применение команды chgrp Помимо прав владельца, изменить можно также права группы на файл, который ей принадлежит. Это делается с помощью команды chgrp, сокращенное название которой оз- начает “изменение группы”. Команда chgrp помечает при- надлежность файла другой группе. Но для этого нужно быть членом данной группы. Администратор системы Unix имеет право создавать новые группы и вводить в них пользователей. Поэтому если у вас возникнут какие-либо вопросы относи- тельно вашего членства в разных группах, спросите у своего системного администратора, каким образом для этой цели настроена ваша учетная запись. Применяя команду chgrp, придерживайтесь следующей процедуры. 1. Выберите один или несколько файлов, права доступа к которым требуется изменить. 2. Определите группу, к которой принадлежат выбранные файлы.
252 Урок 19 3. Измените группу для выбранных файлов по следующей команде: chgrp <нов ая группа> <имя_файла> <имя—файла> Ниже приведен пример применения команды chgrp: >chgrp admins script.sb >ls -1g script.sh -rwxr-xr-x 1 rob admins 1463882 Dec 25 12:00 (output removed) Теперь файл script, sh принадлежит к группе admins. Члены этой группы имеют права на чтение и выполнение данного файла. Очевидно, что команду chgrp лучше всего применять для совместной работы над проектом. Если создан файл для коллективного использования, необходимо также изменить группу для этого файла, чтобы он принадлежал всем заинтересованным в нем пользователям. Осторожно изменяйте права доступа При установке или изменении прав доступа соблюдай- * те особую осторожность. Ведь если одобнь е измене- ния будут носить слишком ади альный характе , это может привести к серьезным осложнения , в том чис- ле к потере доступа к определенным элементам фай- ловой системы. Поэтому, режде чем изуча ь матери- ал этого урока на работе, подумайте о последствиях подобной практики в производственной среде Unix. Резюме Итак, вы прошли еще один урок! Начав с входа в систему, вы уже дошли до установки прав доступа к файлам и катало- гам. В процессе изучения вы приобрели солидные знания и навыки пользователя Unix, не имея поначалу ни малейшего представления об этой системе. В следующем, завершающем эту книгу, уроке будет рассмотрен ряд других весьма эффек- тивных команд, с которыми вы можете экспериментировать, работая над материалом других уроков, в том числе урока, посвященного созданию сценариев.
Установка прав доступа 253 В этом уроке вы научились устанавливать и изменять пра- ва владельца, группы и остальных пользователей, что очень важно уметь делать, если требуется нечто большее, чем вывод содержимого каталога. Теперь вы умеете правильно интер- претировать это содержимое, чтобы определить права доступа к конкретным файлам и, если требуется, изменить их. Кроме того, вы научились изменять принадлежность файлов к от- дельным группам, ясно осознавая, насколько важно предос- тавить пользователям права на групповой доступ к файлам для совместной работы над проектом. Возможно, вам придет- ся проконсультироваться у своего системного администрато- ра относительно организации групп и попросить его вклю- чить в созданные группы других лиц для коллективного ис- пользования общих файлов. Ниже приведено краткое изложение данного урока. • Права доступа— это права, определяющие порядок и уровень доступа к файлу для отдельных пользовате- лей. Имеются три вида прав доступа: на чтение, запись и выполнение, а также три уровня прав: для владельца, группы и остальных пользователей. • Команда chmod изменяет права доступа к файлу или ка- талогу. Эта команда действует в двух режимах: сим- вольном и числовом. Оба режима совершенно равноцен- ны, поэтому выберите для себя наиболее подходящий. • Команда chgrp изменяет принадлежность файла к оп- ределенной группе. Вы можете сделать это только в от- ношении файла, принадлежащего к группе, в которую вы входите.

Урок 20 Привилегированные команды Unix Этот урок посвящен некоторым командам, применяе- мым, в основном, системными администраторами, а также ряду других полезных функций, которые можно выполнять в системе Unix, В этом уроке мы собираемся поздравить вас не только с за- вершением книги, но и со вступлением в ряды грамотных пользователей Unix. Если вы успешно прошли материал этой книги и усвоили его на практике, то сможете вспомнить все выученные команды и даже некоторые их дополнительные па- раметры. Это означает, что вы готовы сделать следующий шаг. В этом уроке рассматриваются команды, применение кото- рых носит ограниченный характер, т.е. ими пользуются, в основном, системные администраторы. Вам совершенно не обязательно знать эти команды, но если вы стремитесь освоить Unix более основательно и стать на путь ее системного админи- стратора, то они вас, без сомнения, заинтересуют. Но даже если вы преследуете иную цель, знание этих команд только пойдет вам на пользу, поскольку знание — сила. Ведь для того чтобы быстро и эффективно работать в Unix, нужно изучить и запом- нить как можно больше команд. И тогда вы сможете быстро вводить команды, ясно осознавая, что делаете. В этом уроке рассматриваются совершенно новые понятия и команды, связанные с корневой учетной записью. Но сна- чала напомним вкратце, что означает термин корневой.
256 Урок 20 Еще раз о термине “корневой” Рассматриваемые далее команды могут выполняться только пользователями с корневой учетной записью. Как важно з ать свои корни О и .••X4' Команды, рассматриваемые в этом уроке, имеют огра- ниченное применение и могут выполняться только ; пользователем с корневой учетной записью root. Од- нако материал данного урока поможет ва лучше усво- ить само понятие корневой учетной записи, чтобы раз- говаривать более пред етно на данную тему с вашим системным администратором. По своему принципу действия II ix яв яется многопользовательской и мно- гозадачной системой, оддерживающей огромное ко- личество файлов принадлежащих ногим пользовате- лям, и поэтому некоторые команды могут внести хаос в ее работу, если дове ить право на их выполнение ря- довым пользователям. Такие команды выполняют функции форматирования дисков, перезагрузки сис- темы, создания и удаления устройств. Термин корневой имеет в Unix два разных определения. Во-первых, это имя регистрационной учетной записи пользо- вателя, которому предоставляется полный доступ ко всем системным ресурсам. И во-вторых, это имя главного каталога /, от которого от- ветвляются все остальные каталоги файловой системы Unix. Для работы с рассматриваемыми далее командами нужно войти в систему в качестве пользователя с корневой учетной записью. Если у вас нет такой возможности, установите у се- бя дома экспериментальную систему Unix, чтобы работать с командами на уровне корневой учетной записи. В этом слу- чае любые ошибки, совершенные вами при выполнении этих и других команд, не будут носить катастрофический харак- тер. Кроме того, у вас появится возможность попрактико- ваться в применении подобных команд, прежде чем делать это в рабочей системе.
Привилегированные команды Unix 257 Применение оманды ви ? Команда su создает командный процессор с иденти- фикационным номером другого пользователя. Команда sudo (ее сокращенное название означает 2 :' х “действие р легиров иного пользователя”) дает любому пользователю возможность выполнять практи- , 11яерки все команды на уровне корневой учетной записи; -х:?. ' Это обстоятельство следует иметь в виду, чтобы избе-:, жать злоупотреблений данной командой, если не при- нять вовремя необходимые меры предосторожности. । Однопользовательский режим Однопользовательским в Unix считается такой режим, ко- торый устанавливается после загрузки системы для выполне- ния административных и регламентных работ по обслужива- нию системы. В этом режиме сетевые ресурсы недоступны и поддерживается только один зарегистрированный в системе пользователь. Когда система работает в однопользовательском режиме, всякий входящий в нее пользователь становится кор- невым. Это минимальное состояние инициализации системы служит, в основном, для диагностики. Если вас интересует ис- правление незагружающейся системы или устранение непола- док в системе, в таком случае вы должны знать об однопользо- вательском режиме. В данном режиме монтируется только корневой каталог, и поэтому выполняются только команды, находящиеся в корневом каталоге файловой системы. Следует также иметь в виду, что в однопользовательском режиме мо- жет быть загружена любая Unix-машина. Кроме того, однопользовательский режим может быть ис- пользован для регламентных работ в системе с целью устра- нить неполадки, не мешая работать другим пользователям. Именно для таких целей данный режим и предназначен. В некоторых версиях Unix система автоматически переза- гружается в однопользовательском режиме после аварийного
258 Урок 20 сбоя. Если вы заметите нечто необычное, немедленно обра- щайтесь за помощью. Ведь в системе мог произойти серьез- ный аварийный отказ, и теперь она ожидает вашей помощи или помощи кого-либо другого! В одних версиях Unix и Linux требуется предъявить кор- невой пароль, прежде чем получить возможность вводить ко- манды в однопользовательском режиме, а в других осуществ- ляется непосредственный переход к корневому командному процессору— все зависит от дистрибутива и конфигурации системы. Если система перезагружается после аварийного отказа в однопользовательском режиме, рекомендуется во- обще ничего не предпринимать и попросить о помощи, по- скольку этот режим работы системы рассчитан на квалифи- цированного администратора, а не на неопытного конечного пользователя. Введя что-то ненужное или неверное, можно лишь усугубить положение. При этом, в частности, могут быть потеряны данные регистрации и диагностики, что мо- жет сделать последнюю невозможной, а в худшем случае — привести к катастрофическим последствиям. Если вы рабо- таете дома, поищите литературу или оперативно доступные источники, чтобы ознакомиться с порядком работы в одно- пользовательском режиме, а затем попробуйте воспроизвести подобную ситуацию, чтобы научиться входить в данный ре- жим вручную и устранять неполадки в системе. Команда f sck Команда fsck (ее сокращенное название означает “проверка файловой системы”) запускает на выполнение ути- литу проверки файловой системы на непротиворечивость. Администраторы систем Unix часто говорят о необходимости такой проверки для диска, поскольку он постоянно сбоит. Ведь жесткие диски рано или поздно выходят из строя, как и электрические лампочки, поскольку у них имеется опреде- ленное среднее время наработки на отказ. Это означает, что аналогично электрическим лампочкам внутренние части же- стких дисков приходят в негодность и перестают работать вследствие непрерывной эксплуатации или повреждения.
Привилегированные команды Unix 259 Команда fsck позволяет устранить неполадки на диске, возникающие вследствие аварийных отказов иди программ- ных ошибок. Вы должны знать эту команду, если собираетесь самостоятельно обслуживать и эксплуатировать систему Unix. В большинстве систем Unix проверка файловой систе- мы на дисках по команде fsck осуществляется во время за- грузки системы, в результате чего составляется аналитиче- ский отчет, содержащий количество проверенных файлов и уровень фрагментации диска. Но, как правило, большая часть неполадок, указанных в таком отчете, устраняется ав- томатически. Обычно команда fsck успешно устраняет неполадки и не- исправности на дисках. После этого система перезагружается и затем появляется приглашение для регистрации. При вы- явлении серьезных неполадок на дисках команда fsck авто- матически завершается следующим сообщением об ошибке: Run fsck by hand (Выполните команду fsck вручную). Ниже данное сообщение приведено полностью для некото- рых дистрибутивов Unix или Linux. checking root filesystems parallelizing fsck version 1.04 (проверка корневых файловых систем в режиме распараллеливания fsck версии 1.04) .sbin/fsck.ext2] fsck.ext2 -a /dev/sdal /dev/sdal . contains a file system with errors check forced (содержит файловую систему с диагностикой ошибок) . Block 23454345665 of inode 143234 > Blocks (Блок индексного дескриптора Блоков) (10234234) /dev/sdal: UNEXPECTED INCONSISTENCY; Run fsck manually an error occurred during the file .system check. Dropping you to a shell; the system .will reboot when you leave the shell (-------------НЕОЖИДАННАЯ ПРОТИВОРЕЧИВОСТЬ. Выполните команду fsck вручную. Во время проверки файловой системы произошла ошибка. Вам предоставляется доступ к командному процессору. После выхода из командного процессора система будет перезагружена) Если вы получите подобное сообщение, ничего не трогайте и обратитесь за помощью к системному администратору. Ес- ли же это произойдет с домашней экспериментальной систе- мой, ваши Действия зависят от ваших знаний и опыта. В ча- стности, вы можете загрузить систему в однопользователь- ском режиме и выполнить команду fsck вручную. Если же
260 Урок 20 после загрузки произойдет аварийный сбой, выполните ко- манду fsck с загрузочного диска, с которого вы, возможно, устанавливали свою экспериментальную систему Unix или Linux. В данном примере следует выполнить команду fsck /dev/sdal, указав раздел, в котором обнаружены ошибки. Эта команда попытается устранить ошибки, предложив най- ти и исправить каждую ошибку в отдельности. Опять же, это следует делать в экспериментальной системе либо имея дос- таточный опыт. Команды shutdown и reboot Иногда возникает потребность выключить систему Unix или перезагрузить ее. Как показывает опыт, перезагружать систему Unix или Linux приходится намного реже, чем Microsoft Windows, хотя время от времени это все же прихо- дится делать. Загрузка Unix выполняется иначе, чем Microsoft Windows. Большинство версий Microsoft Windows загружают- ся как единое целое. В Unix сначала загружается ядро, а затем все остальное. Кроме того, в Unix используется множество про- грамм, из которых и состоит операционная система. Эти про- граммы в действительности загружаются по отдельности. Каждая такая программа может находиться в любой мо- мент на стадии видоизменения, перемещения, создания или удаления файлов, и поэтому ее нельзя прерывать. Если про- сто выключить Unix-машину, можно прервать все процессы в системе и, возможно, испортить какие-то файлы, с которы- ми они работали в этот момент. Такая ситуация возникает нередко, и это еще одна причина для ограниченного примене- ния рассматриваемых здесь команд. При аварийном отклю- чении Unix-машины существует большая вероятность вывес- ти полностью из строя диски и тем самым сделать систему непригодной для эксплуатации. Поэтому очень осторожно пользуйтесь аварийным отключением системы на работе. А в домашних условиях вы можете воссоздать аварийную си- туацию в своей экспериментальной системе и попробовать
Привилегированные команды Unix 261 исправить положение в однопользовательском режиме с по- мощью команды fsck. Назначение команд shutdown и reboot вполне очевидно. Эти команды благополучно завершают все выполняющиеся программы, переписывают данные из дискового кэша на же- сткие диски и наконец выполняют основную свою задачу: выключение системы или ее перезагрузку соответственно. По вполне понятным причинам эти команды доступны только для пользователей с корневой учетной записью. Резюме В этом уроке были представлены команды корневого уров- ня. Если эти команды используются неправильно, они способ- ны нанести серьезный ущерб системе. Но если овладеть ими в полной мере, описание той пользы, которую они способны принести, просто невозможно будет вместить в рамки одного 10-минутного урока. Поэтому, если вас заинтересовали коман- ды корневого уровня и вы стремитесь расширить свои знания за пределы материала данной книги, установите дома или в другом удобном месте экспериментальную систему Unix или Linux и осваивайте эти команды на практике! Это единственно верный способ чему-то научиться, особенно скрытым возмож- ностям Unix. Итак, больше читайте и практикуйтесь. Ниже приведено краткое изложение данного урока. • Если система работает в режиме корневого командного процессора, лучше ничего не трогайте, поскольку этот режим рассчитан на опытных пользователей и систем- ных администраторов. • Не выключайте систему без разрешения администрато- ра. Если вы нажали кнопку выключения машины, сде- лайте вид, будто там ее вообще не было. • Корневые пользователи (администраторы) могут изме- нить принадлежность файлов таким образом, чтобы вы стали их владельцем, но, возможно, их лучше просто скопировать.
262 Урок 20 В завершение этой книги хотелось бы пожелать вам удачи в дальнейшем изучении Unix. Хочется надеяться, что вам было интересно ее читать и вы приобрели достаточно знаний для изучения Unix на следующем уровне. Свои впечатления о кни- ге вы можете прислать автору по адресу rshimonski@ rsnetworks.net или изложить их на Web-сайте http:// www. rsnetworks . net.
Приложение Источники для дальнейшего изучения Unix Итак, вы научились работать в Unix и теперь можете продолжить освоение этой системы, обратившись к целому ряду оперативно доступных ресурсов. Отличным источником информации по Unix и Linux служит Internet. Приведенный ниже перечень источников послужит удобной отправной точ- кой для конкретного поиска в безбрежном море информации, доступной в оперативном режиме. Постарайтесь не прерывать изучение и практическое освоение Unix. Помните, что тяже- ло в учении, легко в бою. Как только вы будете знать коман- ды Unix назубок, вы сможете сразу же поставить себе на службу весь внутренний потенциал Unix. В приведенный ниже перечень источников включены также Web-сайты про- изводителей разных версий Unix и Linux. Большинство из них предоставляют полезный учебный материал, оператив- ную документацию и немало ценных сведений о конкретных операционных системах. Так, если вы работаете с Sun Solaris и вам нужно освоить версии команд Unix в этой операцион- ной системе, непременно посетите Web-сайт компании Sun (http://www.sun.com). Кроме того, в данном перечне име- ются ссылки на Web-сайты производителей недорогих, но в то же время полноценных настольных операционных сис- тем Linux. Ведь Linux мало чем отличается от Unix. Поэтому установите, если сможете, эту систему и осваивайте ее на практике. Таким образом, вы быстро овладеете и Unix. Итак, помимо этой книги, вы можете найти и прочитать полезные сведения о Unix и Linux на следующих Web-сайтах.
264 Приложение • Источники по Unix: http://www.freebsd.org/ http://www.ugu.com/ http://www.unix.org/ http://www.sco.com/ http://www.unixreview.com/ • Источники no Linux: http://www.tldp.org/ http://slashdot.org http://www.linux.com/ http://www.linuxjournal.com/ http://www.linuxquestions.org/ http://www.novel1.com/linux/ http://www.redhat.com/ http://www.google.com/linux • Общие источники: http: / /www. rsnetworks .net/masterunixquickly/ http://www.gnu.org/ http://blackboxwm.sourceforge.net/
Предметный указатель F FTP-сервер, 240 I IP-адрес, 235 м MIME, 230 Р Perl, 186 т tar-файл, 157 А Абсолютный путь, 85; 113 Аварийное отключение системы, 260 Автоматизация, 169 Администратор системы Unix, 25 Анонимное имя пользователя, 240 Архивирование данных, 150; 157 Атрибуты файлов, 73 в Ввод-вывод переадресация, 178 стандартный, 179 управление, 180 Версии Unix, 14 Видоизменение рабочей среды пользователя, 217 Вставной файл, 141 Вход в систему Unix, 23 в графическом режиме, 26 в текстовом режиме, 26 Выделение специальных символов, 189 Выход из системы Unix, 29 в графическом режиме, 31 в текстовом режиме, 30 г Графический пользовательский интерфейс, 17 Групповая принадлежность файлов, 244 Группы пользователей, 24; 244 д Демоны, 177 Диспетчеры окон twm, 65 назначение, 62 разновидности, 66 функции, 64 Дистрибутивы Unix, 13 Документация по Unix, 50 v/IV Журналы регистрации событий, 213 3 Задания на печать, 227 отмена, 231 проверка состояния, 230 назначение, 228 Защищенный командный процессор, 236
266 Предметный указатель И Идентификационный номер процесса, 165 Изменение пароля, 207 Имя пользователя, 25 Инкрементное резервирование, 101 Испытательная система Unix, 64 История развития Unix, 21 к Карты соответствия цветов, 66 Клавиатурные эквиваленты команд назначение, 29 прерывания программ, 36 редактора vi, 128 Ключи команд, 45 Кодирование Unix-Unix, 159 Командная строка, 17; 23; 100 Командные процессоры назначение, 32 разновидности, 33 смена, 205 Команды apropos, 46 at, 173 batch, 174 bg, 166 cat, 115 cd, 82 chfn,211 chgrp, 251 chmod, 247 chsh, 205 compress, 153 cron, 171 crontab, 171 date, 213 df, 151 diff, 140 du,152 fg, 166 find, 90; 151 finger, 210 foreach, 200 fsck, 258 grep, 95; 187 gzip, 154 head, 122 jobs, 166 kill, 168 less, 120 In, 111 Ipq, 230 Ipr, 226 Iprm, 231 Is, 76; 150 man, 43; 45 mkdir, 105 more, 119 mv, 109 nice и renice, 176 nohup, 175 passwd, 207 patch, 141 popd, 84 ps, 167 pushd, 84 pwd, 75 reboot, 261 rm, 102 rmdir, 105 shutdown, 261 split, 139 startx, 57 su, 257 sudo, 257 susehelp, 49 tail, 121 tar, 157 top, 169 touch, 100 unzip, 155 uptime, 214 wc, 137 whatis, 46 whereis, 94 which, 94 who, 214 xrdb, 64 xterm, 60 xwininfo, 61 zcat, 154
Предметный указатель 267 zip, 155 для получения справки, 40 ключи, 45 корневого уровня, 261 Комментарии, 199 Конвейеры, 183 Конкатенация, 115 Контроль работы системы Unix, 214 Копирование каталогов, 109 Корневая учетная запись, 24; 256 Корневой каталог, 72; 256 Корневой командный процессор, 258 Корневой пароль, 258 Корневой пользователь, 72 Критерии поиска, 90 м Мандат, 25 Массивы, 200 Метакоманды, 133 Метасимволы, 90; 146; 189 Многозадачность, 164 н Начальный каталог, 75 Номер задания, 165 о Обмен файлами с удаленной системой, 239 Обновленный файл, 141 Образцовый файл, 141 Однопользовательский режим, 257 Оперативно доступные ресурсы по Unix и Linux, 50; 263 Оперативные страницы руководства назначение, 42 преимущества, 43 Операторы if, 203 while, 203 отрицания, 191 переадресации, 182 условные, 203 Относительный путь, 85; 113 Очередь на печать, 227 п Пароль, 25 Пейджеры, 118 Переадресация ввода-вывода, 178 Переменная пути, 219 Переменные среды PATH, 35 PWD, 199 USER, 199 задание, 219 назначение, 218 Перемещение файлов, 109 Печать, 227 Печать в Unix, 225 Подключение к системе, 26 Подсчет слов в документе, 137 Поиск информации в сети, 97 содержимого файлов, 95 файлов в среде KDE, 96 по дате, 92 по имени, 90 по размеру, 93 Пользовательская среда, 26 Потоки STDERR, 182 STDIN, 180 STDOUT, 181 назначение, 177 Права доступа назначение и разновидности, 244 поразрядная маска, 248 уровни,245 установка и изменение, 247 Правка текста в Unix, 126 Практика в Unix, 22 Прерывание поиска данных, 92 Привилегированный пользователь, 207 Принтер, 227 Принцип принадлежности, 244 Приоритетный режим, 164 Просмотр и задание пути, 221
268 Предметный указатель Просмотр очереди заданий, 230 Протокол FTP, 240 IP, 236 SFTP, 241 TCP/IP, 234 telnet, 235 Профильный файл, 58 Процессы автоматизация, 169 определение, 163 приоритетные, 166 уничтожение, 168 фоновые, 164 Псевдонимы команд, 218 определение, 217 р Работа с Unix, 16; 23 Разбиение файлов на части, 139 Распаковка данных, 153 Расположение окна, 60 Регистрация в графическом режиме, 28 в системе, 24 в текстовом режиме, 27 Регулярные выражения назначение, 95 определение, 185 применение, 185 символ /, 187 символы. и *, 188 символы [] и Л, 190 символы Л и $, 191 Редактирование файлов, 125 Режим вставки, 128 команд, 128 Резервное копирование данных, 101; 170 Рекурсивные действия, 104 Рекурсивный режим, 104 с Сервер доменных имен, 235 печати, 227 Сетевые пароли, 208 Сжатие данных, 150; 152 Сигналы, 168 Системное время, 102 Системы печати CUPS, 229 в Unix, 225 Скрытые данные, 81 Смена каталога, 82 Создание каталогов, 105 копии файла, 107 связей, 111 сценариев командного процессора, 195 Сопоставление с шаблоном, 187 Специальная настройка рабочей среды bKDE, 222 из командной строки, 205 Справочная система KDE, 52 Unix, 39; 40 для команд, встроенная, 47 Справочники для начинающих пользователей, 49 Справочный центр SuSE Help Center, 48 Спулер печати, 230 Спулинг, 230 Среда X Window System, 28 версии,54 запуск вручную, 55 специальная настройка, 62 функционирование, 54 командного процессора, 34 настольной системы GNOME, 28; 69 KDE, 28; 68 Стек каталогов, 84 Строгие пароли, 209 Сценарии командного процессора назначение, 33; 196 создание, 197 Сцепление, 116
Предметный указатель 269 Т Текстовые редакторы emacs, 130 vi, 127 встроенные в среду KDE, 134 Точка монтирования, 151 Точки привязки, 191 У Удаление каталогов, 105 содержимого каталогов, 107 файлов, 102 Удаленное соединение, 26 Удаленный доступ, 233 Управляющий процесс, 59 Установка и смена даты, 213 Утилиты bzip2,155 ftp, 240 gunzip, 155 gzcat, 155 gzip, 155 rlogin, 237 scp, 241 sftp, 242 slogin, 239 ssh, 236 telnet, 234 unzip, 156 uudecode, 160 uuencode, 159 yppasswd, 208 zip, 156 архивирования и сжатия данных, 149 сжатия и распаковки данных, 154 системные, 215 Учет использования дискового пространства, 150 Учетные записи ввод сведений о пользователе, 211 и безопасность системы, 24 имена, 25 разновидности, 24 типичных пользователей, 24 ф Файловая система Unix, 71 перемещение с помощью KDE, 86 с помощью команд, 74 поиск данных, 89 проверка на непротиворечивость, 258 строение, 71 Файлы .rhosts, 238 crontab, 172 сточкой, 221 сценариев, 200 управление из командной строки, 100 Фильтры, 228 Фокусирование ввода, 63 Фоновый режим, 164 X Хост, 235 ч Чтение содержимого файлов, 115 Чувствительность Unix к регистру, 25; 73; 144 э Эмуляция терминала, 26
Научно-популярное издание Роберт Шимонски Освой самостоятельно Unix 10 минут на урок Литературный редактор Верстка Художественный редактор Корректор Л.Н. Красножон О. В. Мишутина В.Г. Павлютин В. В. Смоляр Издательский дом “Вильямс” 101509, Москва, ул. Лесная, д. 43, стр. 1 Подписано в печать 22.02.2006. Формат 84X108/32. Гарнитура Times. Печать офсетная. Усл. печ. л. 14,36. Уч.-изд. л. 10,7. Тираж 3000 экз. Заказ № 605. Отпечатано с диапозитивов в ФГУП “Печатный двор” им. А. М. Горького Федерального агентства по печати и массовым коммуникациям. 197110, Санкт-Петербург, Чкаловский пр., 15.
ОСВОЙ САМОСТОЯТЕЛЬНО PHP 10 МИНУТ НА УРОК Крис Ньюман www.williamspublishing.com Данная книга поможет вам в кратчайшие сроки освоить РНР — самый популярный язык программирования для Web. Начиная с простых языковых конструкций, автор урок за уроком рассматривает все более сложные темы, такие как использование операций для работы с числами и строками, регулярные выражения, обработку дат и времени, создание пользовательских функций, обработку форм, реализацию защищенных паролем страниц, данные cookies и сеансы, работу с базами данных, настройку РНР, отладку и обработку ошибок. На изучение материала каждого урока вам потребуется не более 10 минут. Благодаря этой книге вы быстро научитесь самостоятельно разрабатывать Web-сайты на основе РНР без чьей-либо помощи. Примеры, приведенные в книге, будут работать на РНР 4.1.0 и любой более поздней версии этой программы. ISBN 5-8459-0937-6 в продаже
Краткий справочник по командам Unix Команда Назначение man [раздел] <команда> pwd Is -al] cd <каталог> rm <имя_файла> ср <имя_файла> <имя_конечного_файла> mv <имя_файла> <имя_конечного_файла> cat <имя_файла> more <имя_файла> wc -1|w|с] <имя_файла> uuencode/uudecode <имя_файла> bg/fg спроцесо ps [az или ef] kill -<сигнал> <идентификационный номер процесса> Ip -б<имя принтера> <имя_файла> или 1рг -Р<имя принтера> <имя_файла> Ipstat -t или Ipq -Р<имя принтера'' telnet <удаленная машина> ssh <удаленная машина> ftp <удаленная машина> Поиск справки о команде Отображение текущего каталога Вывод содержимого текущего каталога Переход в другой каталог Удаление файла Копирование файла в новое место Перемещение файла в новое место Отображение всего файла Отображение файла постранично Вывод статистических данных о файле, включая количество слов, строк и символов Кодирование/декодирование дво- ичного файла для отправки по электронной почте Перевод процесса в приоритет- ный/фоновый режим Вывод списка процессов, выпол- няющихся в системе Отправка сигнала завершения вы- полняющемуся процессу Отправка задания на указанный принтер Вывод текущей очереди заданий, ожидающих печати Соединение с удаленной машиной по указанному имени хоста или IP-адресу Соединение с удаленной машиной по указанному имени хоста или IP-адресу Установление FTP-соединения с удаленной машиной по указанно- му имени хоста или IP-адресу