Editors, and Shell Programming SECOND EDITION
Mark G. Sobell
.. •• ••
PRENTICE HALL
Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York· Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City
Администрирование и системное
проrраммирование
2-Е ИЗДАНИЕ
Марк г. Собель
Москва· Санкт-Петербург· Нижний Новгород· Воронеж Ростов-на-Дону . Екатеринбург· Самара· Новосибирск
Киев· Харьков· Минск
2011
С54
СобельМ.
С54 Linux. Администрирование и системное программирование. 2-е изд. — СПб.:
Питер, 2011. — 880 с.: ил. ISBN978-5-459-00450-2
Этакнигапредставляетсобойвсеобъемлющееруководствопоработе, настройке, администри- рованию и системному программированию операционных систем семейства UNIX/Linux, включая Ubuntu, Fedora, openSUSE, Red Hat, Debian, Mandriva, Mint идаже Mac OS X. Перваячастькниги даетначальныепредставленияоработев Linux: объясняетсяинтерфейскоманднойстроки, приво- дитсяобзорнаиболеераспространенныхутилит, рассматриваетсяиерархическаяфайловаясисте- ма Linux, объясняется, какиспользоватьсвойстваоболочки, чтобыускоритьработувсистеме. Во второй части рассмотрены два мощных Linux-редактора, работающих в режиме командной строки и включенныхв большинстводистрибутивов Linux: текстовыйредактор vim и GNU-редактор emacs. Втретьейчасти книгиосвещаютсяаспектыработысоболочками bash и tcsh. Четвертая часть посвящена важным средствампрограммирования, широко используемымпри системном администрировании Linux и Mac OS: рассказываетсяобособенностяхрасширенногопрограмми- рования оболочки с использованием bash; дается представление о создании сценариев админи- стрирования Linux-системнаязыкепрограммирования Perl; подробнорассмотреныутилиты sed и rsync. Заключительная часть книги представляет собой обширный справочник команд Linux, включающийподробныепримерыиспользованияболеесотнинаиболееважныхутилит.
Книгаадресованаширокомукругучитателей: отпользователей Linux и Mac OS X, желающих узнать преимущества работы с системой из командной строки, до системных администраторов ипрограммистов, нуждающихсявболееглубоком пониманиисистемыидоступныхиминстру- ментальныхсредств.
ББК 32.973.2-018.2 УДК 004.451
Права на издание получены по соглашению с Prentice Hall, Inc. Upper Sadle River, New Jersey 07458. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Темнеменее, имеяввидувозможныечеловеческиеилитехническиеошибки, издательство не можетгарантироватьабсолютнуюточностьиполнотуприводимыхсведенийиненесетответственностиза возможныеошибки, связанныесиспользованиемкниги.
ISBN978-0131367364 англ. © Prentice Hall, Inc. 2010
ISBN978-5-459-00450-2 © Перевод на русский язык ООО Издательство «Питер», 2011
© Издание на русском языке, оформление ООО Издательство «Питер», 2011
Оглавление
Предисловие . . . 11
Особенности данной книги . . . 13
Содержание . . . 14
Часть I . Операционные системы Linux и Mac OS X . . . 14
Часть II . Редакторы . . . 16
Часть III . Оболочки . . . 16
Часть IV . Средства программирования . . . 17
Часть V . Справочник команд . . . 18
Вспомогательные материалы . . . 19
Глава 1 . Добро пожаловать в Linux и Mac OS X . . . 20
История UNIX и GNU–Linux . . . 21
Что можно отнести к достоинствам Linux? . . . 25
Обзор Linux . . . 31
Дополнительные свойства Linux . . . 37
Заключение . . . 39
Упражнения . . . 40
ЧАСТЬ I . ОПЕРАЦИОННЫЕ СИСТЕМЫ LINUX И МАС OS X Глава 2 . Начнем! . . . 42
Соглашения, используемые в этой книге . . . 42
Вход в систему через терминал или эмулятор терминала . . . 45
Работа с оболочкой . . . 46
su/sudo: Ограничение ваших полномочий (root-права) . . . 50
Где найти документацию . . . 52
Дополнительная информация о входе в систему . . . 60
Заключение . . . 63
Упражнения . . . 64
Глава 3 . Утилиты . . . 65
Специальные символы . . . 65
Основные утилиты . . . 66
Работа с файлами . . . 69
| (канал): Организация связи между процессами . . . 76
Еще четыре утилиты . . . 77
Сжатие и архивирование файлов . . . 80
Команды для поиска мест, где находятся утилиты . . . 85
Получение информации о пользователе и системе . . . 87
Связь с другими пользователями . . . 91
Электронная почта . . . 92
Заключение . . . 93
Упражнения . . . 95
Глава 4 . Файловая система . . . 97
Иерархическая файловая система . . . 97
Полные имена . . . 103
Работа с каталогами . . . 106
Права доступа . . . 114
Списки управления доступом (ACL-списки) . . . 121
Ссылки . . . 126
Заключение . . . 132
Упражнения . . . 134
Глава 5 . Оболочка . . . 137
Командная строка . . . 137
Стандартный ввод и стандартный вывод . . . 143
Запуск команды в фоновом режиме . . . 154
Генерация имени файла и расширение имени . . . 157
Встроенные команды . . . 161
Заключение . . . 162
Упражнения . . . 164
ЧАСТЬ II . РЕДАКТОРЫ Глава 6 . Редактор vim . . . 168
История . . . 168
Руководство . Использование vim для создания и редактирования файла . . . 169
Введение в функции редактора vim . . . 177
Командный режим: перемещение курсора . . . 184
Режим ввода . . . 188
Командный режим: Удаление и изменение текста . . . 189
Поиск и замена . . . 193
Другие команды . . . 199
Копирование, перемещение и удаление текста . . . 200
Чтение и запись файлов . . . 202
Установка параметров . . . 203
Расширенные технологии редактирования . . . 208
Единицы отсчета . . . 211
Заключение . . . 214
Упражнения . . . 218
Глава 7 . Редактор emacs . . . 220
История . . . 220
Руководство по началу работы с emacs . . . 223
Графический интерфейс пользователя emacs . . . 230
Основные команды редактирования . . . 231
Интерактивная справка . . . 239
Расширенное редактирование . . . 241
Основные режимы: редактирование с восприимчивостью к языкам программирования . . . 256
Дополнительная информация . . . 270
Заключение . . . 271
Упражнения . . . 278
Оглавление 7
ЧАСТЬ III . ОБОЛОЧКИ Глава 8 . Оболочка Bourne Again Shell . . . 282
Предыстория . . . 283
Основы оболочки . . . 284
Параметры и переменные . . . 304
Специальные символы . . . 320
Процессы . . . 321
История . . . 324
Псевдонимы . . . 341
Функции . . . 344
Управление bash: Свойства и настройки . . . 347
Обработка командной строки . . . 351
Заключение . . . 362
Упражнения . . . 364
Глава 9 . Оболочка TC Shell . . . 367
Сценарии оболочки . . . 368
Вход в оболочку TC Shell и выход из нее . . . 369
Свойства, общие для оболочек Bourne Again Shell и TC Shell . . . 371
Перенаправление стандартной ошибки . . . 377
Работа с командной строкой . . . 378
Переменные . . . 384
Управляющие структуры . . . 397
Встроенные команды . . . 406
Заключение . . . 411
Упражнения . . . 412
Упражнения повышенной сложности . . . 413
ЧАСТЬ IV . СРЕДСТВА ПРОГРАММИРОВАНИЯ Глава 10 . Программирование оболочки Bourne Again Shell . . . 416
Управляющие структуры . . . 417
Описатели файлов . . . 449
Параметры и переменные . . . 452
Встроенные команды . . . 465
Выражения . . . 480
Программы оболочки . . . 488
Заключение . . . 499
Упражнения . . . 501
Упражнения повышенной сложности . . . 502
Глава 11 . Язык сценариев Perl . . . 504
Введение в Perl . . . 504
Переменные . . . 512
Управляющие структуры . . . 520
Работа с файлами . . . 530
Сортировка . . . 534
Подпрограммы . . . 535
Регулярные выражения . . . 538
Модули CPAN . . . 544
Примеры . . . 546
Заключение . . . 550
Упражнения . . . 550
Упражнения повышенной сложности . . . 551
Глава 12 . Язык обработки шаблонов AWK . . . 552
Синтаксис . . . 552
Аргументы . . . 553
Ключи . . . 553
Примечания . . . 554
Основы языка . . . 554
Примеры . . . 562
Заключение . . . 583
Упражнения . . . 584
Упражнения повышенной сложности . . . 584
Глава 13 . Редактор sed . . . 585
Синтаксис . . . 585
Аргументы . . . 585
Ключи . . . 585
Основы редактора . . . 586
Примеры . . . 590
Заключение . . . 600
Упражнения . . . 601
Глава 14 . Утилита безопасного копирования rsync . . . 602
Синтаксис . . . 602
Аргументы . . . 602
Ключи . . . 603
Примеры . . . 605
Заключение . . . 613
Упражнения . . . 613
ЧАСТЬ V . СПРАВОЧНИК КОМАНД Указатель команд . . . 616
Общие ключи . . . 619
sample . . . 620
aspell . . . 622
at . . . 626
bzip2 . . . 630
cal . . . 632
cat . . . 633
cd . . . 635
chgrp . . . 636
chmod . . . 640
chown . . . 645
cmp . . . 647
Оглавление
9
comm . . . 649
configure . . . 651
cp . . . 653
cpio . . . 657
crontab . . . 662
cut . . . 665
date . . . 667
dd . . . 669
df . . . 672
diff . . . 674
diskutil (OS X) . . . 680
ditto (OS X) . . . 683
dmesg . . . 685
dscl (OS X) . . . 686
du . . . 689
echo . . . 691
expr . . . 694
file . . . 697
find . . . 699
finger . . . 706
fmt . . . 708
fsck . . . 710
ftp . . . 715
gawk . . . 722
gcc . . . 723
GetFileInfo (OS X) . . . 727
grep . . . 729
gzip . . . 734
head . . . 737
kill . . . 738
killall . . . 740
launchctl (OS X) . . . 741
less . . . 744
ln . . . 748
lpr . . . 750
ls . . . 753
make . . . 761
man . . . 767
mkdir . . . 771
mkfs . . . 772
Mtools . . . 775
mv . . . 778
nice . . . 780
nohup . . . 782
od . . . 782
open (OS X) . . . 786
otool (OS X) . . . 788
paste . . . 790
pax . . . 792
plutil (OS X) . . . 798
pr . . . 799
ps . . . 801
rcp . . . 805
renice . . . 807
rlogin . . . 809
rm . . . 810
rmdir . . . 811
rsh . . . 812
rsync . . . 814
scp . . . 814
sed . . . 816
SetFile (OS X) . . . 817
sleep . . . 818
sort . . . 820
split . . . 829
ssh . . . 830
stat . . . 838
strings . . . 839
stty . . . 840
sysctl (OS X) . . . 845
tail . . . 846
tee . . . 849
telnet . . . 850
test . . . 852
top . . . 855
touch . . . 859
tr . . . 861
tty . . . 864
tune2fs . . . 864
umask . . . 867
uniq . . . 868
w . . . 870
wc . . . 872
which . . . 873
who . . . 875
xargs . . . 877
Предисловие
В книге «Linux . Администрирование и системное программирование»
объясняется, как работать с командной строкой операционной системы Linux . Первые несколько глав быстро введут в курс дела читателей, имеющих сравни- тельно небольшой опыт работы на компьютере . Остальная часть книги адресована опытным пользователям . В этой книге не дается описание конкретного выпуска или дистрибутива Linux, она подходит для всех последних версий этой операционной системы .
Вы узнаете как работать с основой операционной системы Mac OS X, которая досталась ей от UNIX/Linux . Книга позволит вам «заглянуть под капот», обходя стороной традиционный графический интерфейс пользователя (GUI), который отождествляется большинством людей с компьютерами Macintosh, и объяснит, как использовать мощный интерфейс командной строки (command-line interface, CLI) . В этой книге не приводится описание конкретного выпуска OS X, по- скольку она подходит для всех последних выпусков . Материалы, относящиеся к Linux, также относятся и к Mac OS X . Различия между этими операционными системами оговариваются особо .
Первым появился интерфейс командной строки (CLI), или текстовый интерфейс, позволяющий управлять операционной системой Linux прямо из командной строки . Тогда еще не было мыши, с помощью которой можно было указывать на элементы экрана или перетаскивать значки . В не- которых программах (например, emacs) были реализованы примитивные окна, ис- пользующие весьма скромные возможности псевдографического оформления, предо- ставляемые набором ASCII-символов . Выделение областей экрана осуществлялось с помощью негативного изображения .
Система Linux зарождалась и совершенствовалась именно в таком окружении, поэтому вполне естественно, что все исходные инструменты Linux вызывались из командной строки . В этой среде до сих пор скрывается реальная мощь Linux, чем и объясняется тот факт, что многие профессионалы Linux работают исключительно из командной строки . Благодаря четким описаниям и множеству примеров эта книга показывает, как добиться наибольшей отдачи от вашей Linux-системы, используя интерфейс командной строки .
Дистрибутив Linux содержит ядро, утилиты и прикладные программы . В настоящее время доступно множество дистрибутивов — Ubuntu, Fedora, Red Hat, Mint, OpenSUSE, Mandriva, CentOS и Debian . Хотя дистрибутивы несколько отличаются друг от друга, все они основаны на ядре Linux, утилитах и при- ложениях . В этой книге взят за основу тот код, который является общим для боль- шинства дистрибутивов, поэтому вы можете использовать его независимо от того, какой именно дистрибутив работает на вашей машине .
Linux
Mac OS X
Интерфейс командной строки
Дистрибутив Linux
Это издание содержит множество новых и обновленных материалов:
В нем дан обзор интерфейса командной строки Mac OS X (по всей книге) . В ча-Mac OS X (по всей книге) . В ча- OS X (по всей книге) . В ча-OS X (по всей книге) . В ча- X (по всей книге) . В ча-X (по всей книге) . В ча- (по всей книге) . В ча- сти V рассматриваются утилиты и подчеркивается разница между теми ключами утилит, которые используются при работе под управлением Linux, и теми ключами, которые используются при работе под управлением Mac OS X .
Добавлена глава о языке сценариев Perl (глава 11) .
Обновлено описание утилиты безопасного копирования rsync (глава 14) .
В части V рассмотрено более пятнадцати новых утилит, включая некоторые ути- литы, доступные только при работе под управлением Mac OS X .
Если вам приходилось читать книгу «A Practical Guide to Red Hat®
Linux®: Fedora™ and Red Hat Enterprise Linux» или «A Practical Guide to Ubuntu Linux®», вы можете заметить схожесть изложенных в них материалов с некоторыми материалами данной книги . В этих книгах очень похожи предисловия и главы, посвященные утилитам (речь идет о главе 3 данной книги, но не о части V), файловой системе, оболочке Bourne Again Shell (bash) и языку Perl . Вместе с тем, в данной книге есть главы, которых нет в вышеупомянутых книгах, — это главы, посвященные редакторам vim и emacs, оболочке TC Shell (tcsh), языкам AWK и sed, утилите rsync, а также часть V, в которой подробно описываются 97 наиболее востребованных утилит Linux и полезных программ Mac OS X .
Эта книга адресована широкому кругу читателей . Для ее чтения не нужен богатый опыт программирования, но предполагается наличие некоторого опыта в использовании компьютерных систем . Она вполне подойдет:
студентам, изучающим предметы, в которых предусмотрено использование Linux или Mac OS X;
опытным пользователям, желающим исследовать все преимущества работы с Linux или Mac OS X из командной строки;
профессионалам, использующим Linux или Mac OS X в своей работе;
начинающим пользователям Macintosh, желающим узнать, что такое UNIX/Linux и почему все продолжают говорить об их важности, а также как пользоваться их преимуществами;
опытным пользователям Macintosh, желающим узнать, как воспользоваться всей мощью UNIX/Linux, лежащей в основе Mac OS X;
пользователям UNIX, желающим применить свое мастерство работы с UNIX к среде Linux или Mac OS X;
системным администраторам, нуждающимся в более глубоком понимании Linux или Mac OS X и доступных им инструментальных средств, включая оболочку bash и язык сценариев Perl;
студентам, изучающим компьютерные дисциплины, осваивающим операционную систему Linux или Mac OS X;
программистам, которым нужно разобраться в программной среде Linux или Mac OS X;
техническим специалистам, желающим постичь основы Linux или Mac OS X .
Новое в этом издании
Похожие источники информации
Круг читателей
«Linux . Администрирование и системное программирование» позво- ляет всецело усвоить вопросы использования Linux или Mac OS X из командной строки . Независимо от уровня ваших исходных знаний, данная книга предлагает сведения, необходимые в вашей практической деятельности . Прочитав эту книгу, вы поймете, как использовать Linux/OS X, а содержимое книги послужит цен- ным справочником на многие последующие годы .
Для систем Macintosh всегда было доступно огромное количество свободного программного обеспечения . К тому же большую активность проявляет сообщество пользователей условно-бесплатных программ для Macintosh . Представляя UNIX/
Linux аспекты, присущие Mac OS X, эта книга открывает для пользователей Macintosh огромные запасы свободного и дешевого программного обеспечения, применяемого в Linux и других UNIX-подобных систем .
В ДАННОЙ КНИГЕ ТАМ, ГДЕ ГОВОРИТСЯ О LINUX, ИМЕЕТСЯ В ВИДУ НЕ ТОЛЬКО LINUX, НО И MAC OS XОперационная система UNIX является общим предком как для Linux, так и для Mac OS X.
Несмотря на существенные различия в графических пользовательских интерфейсах (GUI) этих двух операционных систем, их интерфейсы командной строки (CLI) очень похожи друг на друга и во многих случаях совпадают. В этой книге описываются интерфейсы командных строк как Linux, так и Mac OS X. Чтобы упростить чтение книги, термин Linux используется в ней применительно и к Linux, и к Mac OS X. Там, где между этими двумя операционными системами имеются различия, даются специальные пояснения.
Особенности данной книги
Структура книги рассчитана на легкое извлечение нужной информации в различных ситуациях . Например, ее можно прочитать от корки до корки, изучив с нуля все, что касается использования командной строки Linux . Но при наличии достаточного опыта в работе с Linux можно использовать эту книгу как справочное пособие: достаточно будет найти интересующую тему в оглавлении или указателе и прочитать обо всем, что ее касается . Или же перейти к описанию одной из утилит в части V, «Справочник команд» .
Можно также рассматривать эту книгу в качестве каталога Linux . В книге также имеется множество указателей на веб-сайты, из которых можно извлечь дополни- тельную информацию: считайте, что Интернет является своеобразным расширением данной книги .
Книга «Linux . Администрирование и системное программирование» обладает следующими особенностями:
Дополнительные разделы, позволяющие читать книгу на разных уровнях, воз- вращаясь к более сложному материалу после предварительной подготовки к его усвоению .
Врезки ВНИМАНИЕ, обращающие ваше внимание на те процедуры, при прове- дении которых можно легко ошибиться, и подсказывающие правильные действия, предупреждая возникновение проблем .
Врезки СОВЕТ, в которых даются сведения, позволяющие сэкономить время за счет применения более рациональных подходов, или приводится дополнительная информация, представляющая какую-нибудь пользу или интерес .
Преимущества данной книги
Особенности данной книги 13
Врезки БЕЗОПАСНОСТЬ, указывающие способы повышения безопасности си- стемы .
Веб-сайт www.sobell.com, поддерживающий книгу и включающий различные ис- правления, загружаемые примеры, приводимые в книге, указатели на полезные веб-сайты и ответы на упражнения с четными номерами .
Практические примеры, которые приводятся во всех частях книги и иллюстрируют изложенный в книге материал .
Множество полезных URL (интернет-адресов), ведущих на сайты, где можно полу- чить программное обеспечение и информацию .
Заключения для каждой из глав, выделяющие наиболее важные из рассмотренных вопросов .
Завершающие каждую главу упражнения для читателей, желающих отточить свое мастерство . Ответы на упражнения с четными номерами доступны на веб-сайте www.sobell.com .
Подробные описания важных инструментальных средств, созданных в рамках проекта GNUs, включая gcc, систему конфигурации и сборки GNU, make, gzip, и множество других инструментов .
Указатели, помогающие извлечь онлайн-документацию из множества источников, включая локальную систему и Интернет .
Подробные описания важных утилит командной строки, разработанных компанией Apple специально для операционной системы Mac OS X, включая diskutil, ditto, dscl, GetFileInfo, launchctl, otool, plutil и SetFile .
Содержание
В этом разделе описывается информация, излагаемая в каждой главе, и объясняется, как эта информация способствует извлечению имеющихся в Linux преимуществ . Для получения более подробных сведений можно просмотреть оглавление .
Глава 1, «Добро пожаловать в Linux и Mac OS X» .
Здесь представлена предыстория появления на свет Linux и OS X . В главе дается историческая справка по Linux, краткая справка по ядру OS X Mach, объ-Linux, краткая справка по ядру OS X Mach, объ-, краткая справка по ядру OS X Mach, объ-OS X Mach, объ- X Mach, объ-X Mach, объ- Mach, объ-Mach, объ-, объ- ясняется, как проект GNU помог Linux на первых порах, и рассматривается ряд важных свойств Linux, отличающих эту операционную систему от других .
Часть I . Операционные системы Linux и Mac OS X
ВОЗМОЖНО, ОПЫТНЫМ ПОЛЬЗОВАТЕЛЯМ БУДЕТ ДОСТАТОЧНО ВСЕГО ЛИШЬ БЕГЛО ПРОСМОТРЕТЬ ЧАСТЬ IЕсли с системой UNIX/Linux уже приходилось иметь дело, возможно, будет вполне достаточно просмотреть или пропустить некоторые или все главы первой части данной книги. Раздел
«Соглашения, используемые в этой книге» на с. 42, в котором объясняются принятые в книге соглашения по типографскому оформлению текста, а также раздел «Где найти документацию»
на с. 52, в котором указываются как локальные, так и удаленные источники документации по Linux, нужно просмотреть всем читателям.
В Части I дается представление об операционной системе Linux и начальные све-I дается представление об операционной системе Linux и начальные све- дается представление об операционной системе Linux и начальные све-Linux и начальные све- и начальные све- дения о работе с ней .
Глава 2, «Начнем!» .
Здесь объясняются соглашения по типографскому оформлению книги, по- могающие представит материал в более понятном виде и упростить чтение книги . Эта глава предоставляет базовую информацию и объясняет, как войти в систему, изменить свой пароль, дать системе Linux команду с помощью оболочки и найти документацию по системе .
Глава 3, «Утилиты» .
Здесь объясняется интерфейс командной строки и дается краткое введение в более чем 30 утилит, использующих данный интерфейс . Изучение этой главы позволяет понять, что такое операционная система Linux, и узнать, что собой представляют некоторые инструментальные средства повседневного пользования . В этой главе рассматриваются следующие утилиты:
y grep, осуществляющая поиск в файлах строки символов;
y unix2dos, осуществляющая преобразование текстовых файлов Linux в формат Windows;
y tar, создающая архивные файлы, которые могут содержать многие другие файлы;
y bzip2 и gzip, сжимающие файлы, позволяя им занимать меньше места на диске, и позволяющие вам пересылать их по сети с более высокой скоростью;
y diff, выводящая различия между двумя текстовыми файлами .
Глава 4, «Файловая система» .
Здесь рассматривается иерархическая файловая система Linux, включая файлы, имена файлов, путевые имена, работу с каталогами, права доступа, а также жесткие и символьные ссылки . Знание файловой системы позволяет организовать свои дан- ные таким образом, чтобы не тратить лишнее время на поиск нужной информации . Это дает также возможность делиться некоторыми своими файлами с другими пользователями, оставляя остальные файлы закрытыми от посторонних глаз .
Глава 5, «Оболочка» .
Здесь объясняется, как использовать свойства оболочки, чтобы ускорить и об- легчить свою работу . Все свойства, рассмотренные в этой главе, присущи как bash, так и tcsh . В этой главе рассматриваются следующие вопросы:
y использование ключей командной строки для изменения способов работы команды;
y внесение незначительных изменений в командную строку для перенаправления ввода в команду, чтобы он исходил из файла, а не с клавиатуры;
y перенаправление вывода команды в файл вместо экрана;
y использование каналов для отправки вывода из одной утилиты непосредствен- но другой утилите, чтобы все задачи решались с использованием только одной командной строки;
y запуск программ в фоновом режиме, чтобы можно было работать с одной за- дачей, в то время как Linux будет работать с другой;
y использование оболочки для генерации файловых имен с целью экономии вре- мени на их набор и с целью оказания помощи в том случае, если пользователь забыл конкретное имя файла .
Часть I. Операционные системы Linux и Mac OS X 15
Часть II . Редакторы
Во второй части книги рассмотрены два мощных классических Linux-редактора, рабо-Linux-редактора, рабо--редактора, рабо- тающих в режиме командной строки . Текстовый редактор vim, «улучшенная» версия широко распространенного редактора vi, а также популярный GNU-редактор emacs включены в большинство дистрибутивов Linux . Текстовые редакторы позволяют создавать и изменять текстовые файлы, в которых могут содержаться программы, сценарии оболочки, памятки и данные для ввода в программы форматирования текста . Поскольку администрирование системы Linux предполагает редактирование конфи-Linux предполагает редактирование конфи- предполагает редактирование конфи- гурационных файлов, имеющих текстовую основу, высокопрофессиональные Linux- администраторы имеют большой опыт по части использования текстовых редакторов .
Глава 6, «Редактор vim» .
Глава начинается с руководства по редактору vim, далее в ней объясняется, как используются многие расширенные функции редактора, включая специальные символы в строках поиска, универсальный и именованные буферы, параметры, маркеры и выполнение команд непосредственно из самого редактора . Глава за- вершается кратким справочником по командам этого редактора .
Глава 7, «Редактор emacs» .
Глава открывается руководством по работе с редактором, а затем в ней объяс- няются многие свойства редактора emacs, а также показывается, как используются клавиши META, ALT и ESCAPE . Дополнительно рассматривается привязка клавиш, буферы, а также полный поиск и поиск с последовательным уточнением, как с ис- пользованием символьных строк, так и с использованием регулярных выражений . Дается подробное описание взаимоотношений между Указателем, Курсором, Меткой и Областью . Также объясняется, как извлечь пользу из всеобъемлющих интерактивных справочных средств, доступных из редактора emacs .
Другие рассматриваемые темы включают вырезку и вставку, использование нескольких окон и областей, работу с режимами emacs — особенно с режимом языка C, который помогает программистам создавать и отлаживать C-код . Глава 7 завершается кратким справочником по командам редактора emacs .
Часть III . Оболочки
Часть III посвящена более подробному рассмотрению оболочки bash и введению в оболочку TC Shell (tcsh) .
Глава 8, «Оболочка Bourne Again Shell» .
Здесь повествование продолжается с того места, на котором оно остановилось в главе 5, при этом рассматриваются более тонкие аспекты работы с оболочкой . Для примеров в этой главе используется Bourne Again Shell — bash, оболочка, практи чески всегда используемая для системных сценариев оболочки . В главе 8 описывается:
y как использовать файлы загрузки, ключи и свойства оболочки для ее настройки;
y как использовать управление заданиями для их приостановки и перемещения из активного в фоновый режим и обратно;
y как модифицировать и повторно выполнять команды, используя исторический список оболочки;
y как создавать псевдонимы для настройки команд;
y как в сценариях оболочки работать с переменными, созданными пользователем, и с переменными, являющимися ключевыми словами;
y как настраивать функции, аналогичные сценариям оболочки, но выполняемые значительно быстрее;
y как создавать и выполнять простые сценарии оболочки;
y как перенаправлять сообщения об ошибках, чтобы они попадали в файл, а не на экран .
Глава 9, «Оболочка TC Shell» .
Здесь описывается оболочка tcsh, и рассматриваются как общие для bash и tcsh свойства, так и те свойства, которые отличают одну оболочку от другой . В этой главе объясняется:
y как запустить tcsh и поменять оболочку, используемую по умолчанию на tcsh;
y как перенаправить сообщения об ошибках, чтобы они попадали в файл, а не на экран;
y как использовать управляющие структуры для изменения порядка выполнения сценариев оболочки;
y как работать с числовыми переменными и переменными массивов tcsh;
y как использовать встроенные команды оболочки .
Часть IV . Средства программирования
Часть IV посвящена важным средствам программирования, широко используемым при системном администрировании Linux и Mac OS, а также при создании программ общего назначения .
Глава 10, «Программирование оболочки Bourne Again Shell» .
Здесь повествование продолжается с того места, на котором оно остановилось в главе 8, рассматриваются особенности расширенного программирования обо- 8, рассматриваются особенности расширенного программирования обо-8, рассматриваются особенности расширенного программирования обо- лочки с использованием bash, подкрепляемые подробными примерами . В этой главе рассматриваются:
y управляющие структуры, такие как if…then…else и case; y переменные, включая вопросы их локальности;
y арифметические и логические (булевы) выражения;
y некоторые, наиболее полезные встроенные команды оболочки, включая exec, trap и getopts .
После усвоения основ Linux можно будет воспользоваться своим знаниями для создания более сложных и специализированных программ, используя в качестве языка программирования оболочку .
В главе 10 даются две сложные задачи, связанные с программированием обо- лочки, а затем шаг за шагом показывается методика их решения . В первой задаче
Часть IV. Средства программирования 17
используется рекурсия для создания иерархии каталогов . Во второй задаче раз- рекурсия для создания иерархии каталогов . Во второй задаче раз-рекурсия для создания иерархии каталогов . Во второй задаче раз- для создания иерархии каталогов . Во второй задаче раз-для создания иерархии каталогов . Во второй задаче раз- создания иерархии каталогов . Во второй задаче раз-создания иерархии каталогов . Во второй задаче раз- иерархии каталогов . Во второй задаче раз-иерархии каталогов . Во второй задаче раз- каталогов . Во второй задаче раз-каталогов . Во второй задаче раз- . Во второй задаче раз-Во второй задаче раз- рабатывается программа quiz, показывающая, как создается сценарий оболочки, взаимодействующий с пользователем, и объясняется порядок обработки данных в сценарии . (Примеры в части V также показывают многие свойства утилит, кото-V также показывают многие свойства утилит, кото- также показывают многие свойства утилит, кото- рые можно использовать в сценариях оболочки .)
Глава 11, «Язык сценариев Perl» .
Здесь дается представление о популярном языке программирования Perl, об-Perl, об-, об- ладающим весьма широкими возможностями . В этой главе рассматриваются:
y справочные средства Perl, включая perldoc;
y переменные Perl и управляющие структуры;
y обработка файлов;
y регулярные выражения;
y установка и использование CPAN-модулей .
На языке Perl написаны многие сценарии администрирования Linux-систем . После чтения главы 11 вы сможете лучше разбираться в этих сценариях, а также приступить к созданию своих собственных сценариев . Эта глава включает множе- ство примеров сценариев на языке Perl .
Глава 12, «Язык обработки шаблонов AWK» .
Здесь объясняется, как создавать программы, использующие довольно мощный язык AWK, фильтрующий данные, записывающий отчеты и извлекающий данные из Интернета . В разделе расширенного программирования описывается, как уста- новить двунаправленную связь с другой программой, используя сопроцессы, и как получить ввод по сети, а не из локального файла .
Глава 13, «Редактор sed» .
Здесь дается описание утилиты sed, неинтерактивного потокового редактора, который находит множество применений в качестве фильтра внутри сценариев оболочки . В этой главе рассматривается порядок использования буферов sed для написания достаточно простых, но мощных программ и дается множество при- меров .
Глава 14, «Утилита безопасного копирования rsync» .
Здесь рассматривается rsync, надежная утилита, копирующая обычный файл или иерархию каталога на локальной машине или между локальной системой и другой системой, подключенной к сети . По мере написания программ, эту ути- литу можно использовать для их резервного копирования на другие системы .
Часть V . Справочник команд
Система Linux включает сотни утилит . Главы 12–14, а также часть V предоставляют подробные примеры использования сотни наиболее важных утилит, с помощью кото- рых можно решить проблемы, не обращаясь к программированию на языке C . Для тех, кто уже знаком с системами UNIX/Linux, эта часть книги послужит весьма объемным и простым в использовании справочником . Для недостаточно опытных пользователей она послужит полезным подспорьем при усвоении предыдущих частей книги .
Хотя описания утилит, предоставленные в главах 12–14, а также в части V, даны в формате, похожем на тот, который используется в справочных страницах Linux- руководства (man-страницах), они намного проще читаются и усваиваются . Описания именно этих утилит включены в книгу потому, что они широко востребованы в по- вседневной работе (например, ls и cp), являются мощными средствами, особенно полезными в сценариях оболочки (sort, paste и test), помогают работать с системой Linux (ps, kill и fsck) или позволяют связываться с другими системами (ssh, scp и ftp) . Описание каждой утилиты включает исчерпывающее объяснение действий ее наи- более полезных ключей с указанием различий между ключами, поддерживаемыми при работе под управлением Mac OS X, и ключами, поддерживаемыми при работе под управлением Linux . Подразделы «Комментарии» и «Примечания» полны советов и приемов, позволяющих извлечь из применения утилит все, на что они способны . В подразделах «Примеры» показывается использование этих утилит в реальной жиз- ни, как в одиночку, так и совместно с другими утилитами с целью составления отчетов, суммирования данных и извлечения информации . Чтобы увидеть, насколько объем- ны эти примеры, обратите внимание на разделы «Примеры» для языка AWK (более 20 страниц в главе 12), для утилиты ftp (в ее описании в части V) и для утилиты sort (также в части V) .
Вспомогательные материалы
На личной странице автора (www.sobell.com) содержатся загружаемые листинги всех длинных программ, приведенных в данной книге, а также указатели на множество интересных и полезных сайтов, связанных с Linux и OS X, имеющихся во Всемирной паутине, перечень исправлений, ответы на все упражнения с четными номерами, а также дается приглашение на внесение уточнений, написание комментариев и вы- сказывание предложений .
Я беру на себя всю ответственность за любые ошибки и упущения, допущенные в данной книге . Если вы их обнаружите или просто захотите что-то прокомментиро- вать, поставьте меня в известность (mgs@sobell.com), и я внесу исправления в следу- ющее издание . На моей личной странице (www.sobell.com) имеется перечень ошибок и упоминания о тех, кто их обнаружил . Там также имеются копии длинных сценариев из данной книги и указатели на множество интересных веб-страниц, посвященных Linux .
Марк Собель (Mark G. Sobell) Сан-Франциско, Калифорния Вспомогательные материалы 19