ebook img

Advanced Bash-scripting guide. Искусство программирования на языке сценариев командной оболочки PDF

586 Pages·2003·1.827 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Advanced Bash-scripting guide. Искусство программирования на языке сценариев командной оболочки

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки Автор: Mendel Cooper [email protected] Перевод: Андрей Киселев [email protected] Advanced Bash-Scripting Guide: Искусство программирования на языке сценариев командной оболочки byАвтор:MendelCooper byПеревод:АндрейКиселев Published19July2003 Данноеруководствонепредполагаетналичиеучитателяпознанийвобластипрограммированияна языкесценариев,однако,быстровосполняетэтотнедостаток...постепенно,шагзашагомраскрывая мудростьикрасотуUNIX.Эторуководствоможетрассматриватьсякакучебник,предназначенный длясамостоятельногоизученияиликаксправочникпопрограммированиюнаshell.Руководство снабженосериейхорошопрокомментированныхпримеров,посколькулучший путь к изучению языка сценариев -- это написание сценариев. Последнююверсиюдокумента,ввиде.bz2архива,содержащемисходныетекстывформатеSGMLи HTML,вынайдетена домашнейстраничкеавтора (http://personal.riverusers.com/~thegrendel/abs-guide-1.8.tar.bz2).Тамжевынайдетеиchangelog (http://personal.riverusers.com/~thegrendel/Change.log). RevisionHistory Revision0.1 14June2000 Revisedby:mc Первыйвыпуск. Revision0.2 30October2000 Revisedby:mc Исправленияидополнения. Revision0.3 12February2001 Revisedby:mc Значительныедополнения. Revision0.4 08July2001 Revisedby:mc Исправления.Добавленновыйматериал,примерысценариев. Revision0.5 03September2001Revisedby:mc Значительныедополнения.Исправления.Реорганизацияструктурыкниги. Revision1.0 14October2001 Revisedby:mc Исправленияидополнения."Стабильный"выпуск. Revision1.1 06January2002 Revisedby:mc Исправленияидополнения. Revision1.2 31March2002 Revisedby:mc Исправленияидополнения. Revision1.3 02June2002 Revisedby:mc ’TANGERINE’release:Исправленияидополнения. Revision1.4 16June2002 Revisedby:mc ’MANGO’release:Исправленияидополнения. Revision1.5 13July2002 Revisedby:mc ’PAPAYA’release:Исправленияидополнения. Revision1.6 29September2002Revisedby:mc ’POMEGRANATE’release:Исправленияидополнения. Revision1.7 05January2003 Revisedby:mc ’COCONUT’release:Исправленияидополнения. Revision1.8 10May2003 Revisedby:mc ’BREADFRUIT’release:Исправленияидополнения. Revision1.9 21June2003 Revisedby:mc ’PERSIMMON’release:Исправленияидополнения. Revision1.9.319July2003 Revisedby:mc Промежуточныйвыпускперед’GOOSEBERRY’release. Dedication ПосвящаетсяАните--источникуочарования Table of Contents Часть1.Введение...............................................................................................................................ix 1.ЗачемнеобходимознаниеязыкаShell?..................................................................................1 2.ДляначалаоSha-Bang...............................................................................................................4 2.1.Запусксценария.............................................................................................................7 2.2.Упражнения....................................................................................................................7 Часть2.Основы..................................................................................................................................10 3.Служебныесимволы................................................................................................................11 4.Переменныеипараметры.Введение....................................................................................34 4.1.Подстановкапеременных...........................................................................................34 4.2.Присваиваниезначенийпеременным......................................................................37 4.3.ПеременныеBashнеимеюттипа...............................................................................39 4.4.Специальныетипыпеременных...............................................................................40 5.Кавычки.....................................................................................................................................46 6.Завершениеикодзавершения...............................................................................................55 7.Проверкаусловий.....................................................................................................................57 7.1.Конструкциипроверкиусловий...............................................................................57 7.2.Операциипроверкифайлов.......................................................................................64 7.3.Операциисравнения...................................................................................................68 7.4.Вложенныеусловныеоператорыif/then..................................................................76 7.5.Проверкастепениусвоенияматериала...................................................................76 8.Операцииисмежныетемы.....................................................................................................78 8.1.Операторы.....................................................................................................................78 8.2.Числовыеконстанты...................................................................................................86 Часть3.Углубленныйматериал.................................................................................................88 9.Квопросуопеременных.........................................................................................................89 9.1.Внутренниепеременные.............................................................................................89 9.2.Работасостроками...................................................................................................110 9.3.Подстановкапараметров.........................................................................................117 9.4.Объявлениепеременных:declareиtypeset............................................................128 9.5.Косвенныессылкинапеременные.........................................................................130 9.6.$RANDOM:генерацияпсевдослучайныхцелыхчисел.......................................133 9.7.Двойныекруглыескобки.........................................................................................139 10.Циклыиветвления..............................................................................................................142 10.1.Циклы........................................................................................................................142 10.2.Вложенныециклы...................................................................................................154 10.3.Управлениеходомвыполненияцикла.................................................................155 10.4.Операторывыбора...................................................................................................159 11.Внутренниекоманды...........................................................................................................168 11.1.Командыуправлениязаданиями.........................................................................193 12.Внешниекоманды,программыиутилиты......................................................................199 12.1.Базовыекоманды.....................................................................................................199 12.2.Болеесложныекоманды........................................................................................203 12.3.Командыдляработысдатойивременем...........................................................211 12.4.Командыобработкитекста....................................................................................215 12.5.Командыдляработысфайламииархивами....................................................235 v 12.6.Командыдляработыссетью................................................................................255 12.7.Командыуправлениятерминалом.......................................................................261 12.8.Командывыполненияматематическихопераций.............................................262 12.9.Прочиекоманды......................................................................................................273 13.Командысистемногоадминистрирования......................................................................286 14.Подстановкакоманд............................................................................................................317 15.Арифметическиеподстановки...........................................................................................324 16.Перенаправлениеввода/вывода........................................................................................325 16.1.Спомощьюкомандыexec.......................................................................................328 16.2.Перенаправлениедляблоковкода.......................................................................331 16.3.Областьприменения...............................................................................................335 17.Встроенныедокументы.......................................................................................................338 Часть4.Материалповышеннойсложности........................................................................347 18.Регулярныевыражения......................................................................................................348 18.1.Краткоевведениеврегулярныевыражения......................................................348 18.2.Globbing--Подстановкаименфайлов.................................................................354 19.Подоболочки,илиSubshells................................................................................................357 20.Ограниченныйрежимкоманднойоболочки...................................................................361 21.Подстановкапроцессов.......................................................................................................363 22.Функции.................................................................................................................................366 22.1.Сложныефункцииисложностисфункциями..................................................368 22.2.Локальныепеременные..........................................................................................377 23.Псевдонимы...........................................................................................................................382 24.Спискикоманд......................................................................................................................385 25.Массивы.................................................................................................................................388 26.Файлы.....................................................................................................................................410 27./devи/proc..............................................................................................................................411 27.1./dev............................................................................................................................411 27.2./proc..........................................................................................................................411 28./dev/zeroи/dev/null.................................................................................................................417 29.Отладкасценариев...............................................................................................................421 30.Необязательныепараметры(ключи)...............................................................................429 31.Широкораспространенныеошибки.................................................................................433 32.Стильпрограммирования...................................................................................................440 32.1.Неофициальныерекомендациипооформлениюсценариев............................440 33.Разное.....................................................................................................................................444 33.1.Интерактивныйинеинтерактивныйрежимработы........................................444 33.2.Сценарии-обертки....................................................................................................445 33.3.Операциисравнения:Альтернативныерешения..............................................449 33.4.Рекурсия....................................................................................................................450 33.5.“Цветные”сценарии................................................................................................451 33.6.Оптимизация............................................................................................................456 33.7.Разныесоветы..........................................................................................................457 33.8.Проблемыбезопасности.........................................................................................466 33.9.Проблемыпереносимости......................................................................................467 33.10.СценариикоманднойоболочкиподWindows...................................................468 34.Bash,версия2.........................................................................................................................469 vi 35.Замечанияидополнения........................................................................................................475 35.1.Отавтора............................................................................................................................475 35.2.Обавторе.............................................................................................................................475 35.3.Инструменты,использовавшиесяприсозданиикниги..............................................475 35.3.1.Аппаратура............................................................................................................476 35.3.2.Программноеобеспечение...................................................................................476 35.4.Благодарности...................................................................................................................476 Bibliography...........................................................................................................................................479 A.Дополнительныепримерысценариев...............................................................................486 B.МаленькийучебникпоSedиAwk..........................................................................................531 B.1.Sed..........................................................................................................................................531 B.2.Awk.........................................................................................................................................535 C.Кодызавершения,имеющиепредопределенныйсмысл...........................................538 D.Подробноевведениевоперацииввода-выводаиперенаправление ввода-вывода............................................................................................................................540 E.Локализация.................................................................................................................................543 F.Историякоманд...........................................................................................................................546 G.Примерфайла.bashrc.............................................................................................................548 H.Преобразованиепакетных(*.bat)файловDOSвсценариикоманднойоболочки 561 I.Упражнения...................................................................................................................................566 I.1.Анализсценариев.................................................................................................................566 I.2.Созданиесценариев.............................................................................................................567 J.Авторскиеправа..........................................................................................................................576 vii List of Tables 11-1.Идентификациязаданий...........................................................................................................197 30-1.КлючиBash..................................................................................................................................430 33-1.Числовыезначенияцветавescape-последовательностях...................................................454 B-1.Основныеоперацииsed...............................................................................................................532 B-2.Примерыоперацийвsed.............................................................................................................533 C-1.“Зарезервированные”кодызавершения.................................................................................538 H-1.Ключевыеслова/переменные/операторыпакетныхфайловDOSииханалогикомандной оболочки.......................................................................................................................................561 H-2.КомандыDOSиихэквивалентывUNIX................................................................................562 viii Часть 1. Введение Shell--этокоманднаяоболочка.Ноэтонепростопромежуточноезвеномежду пользователемиоперационойсистемой,этоещеимощныйязыкпрограммирования. Программынаязыкеshellназываютсценариями,илискриптами.Фактически,изскриптов доступенполныйнаборкоманд,утилитипрограммUNIX.Еслиэтогонедостаточно,ток вашимуслугамвнутренниекомандыshell--условныеоператоры,операторыцикловипр., которыеувеличиваютмощьигибкостьсценариев.Shell-скриптыисключительнохороши припрограммированиизадачадминистрированиясистемыидр.,которыенетребуютдля своегосозданияполновесныхязыковпрограммирования. Chapter 1. Зачем необходимо знание языка Shell? Знаниеязыкакоманднойоболочкиявляетсязалогомуспешногорешениязадач администрированиясистемы.Дажеесливынепредполагаетезаниматьсянаписаниемсвоих сценариев.ВовремязагрузкиLinuxвыполняетсяцелыйрядсценариевиз/etc/rc.d, которыенастраиваютконфигурациюоперационнойсистемыизапускаютразличные сервисы,поэтомуоченьважночеткопониматьэтискриптыииметьдостаточнознаний, чтобывноситьвнихкакиелибоизменения. Языксценариевлегоквизучении,внемнетакмногоспецифическихоператорови конструкций.1Синтаксисязыкадостаточнопростипрямолинеен,оноченьнапоминает команды,которыеприходитсявводитьвкоманднойстроке.Короткиескриптыпрактически ненуждаютсявотладке,идажеотладкабольшихскриптовотнимаетвесьма незначительноевремя. Shell-скриптыоченьхорошоподходятдлябыстрогосозданияпрототиповсложных приложений,даженесмотрянаограниченныйнаборязыковыхконструкцийи определенную"медлительность".Такаяметодапозволяетдетальнопроработатьструктуру будущегоприложения,обнаружитьвозможные"ловушки"илишьзатемприступитьк кодированиюнаC,C++,Java,илиPerl. СкриптывозвращаютнаскклассическойфилософииUNIX--"разделяйивлавствуй"т.е. разделениесложногопроектанарядпростыхподзадач.Многиесчитаюттакойподход наилучшимили,поменьшеймере,наиболееэстетичнымспособомрешениявозникающих проблем,нежелииспользованиеновогопоколенияязыков--"все-в-одном",такихкакPerl. Длякакихзадачнеприменимыскрипты • дляресурсоемкихзадач,особеннокогдаважнаскоростьисполнения(поиск,сортировкаи т.п.) • длязадач,связанныхсвыполнениемматематическихвычислений,особенноэтокасается вычисленийсплавающейзапятой,вычисленийсповышеннойточностью,комплексных чисел(длятакихзадачлучшеиспользоватьC++илиFORTRAN) • длякросс-платформенногопрограммирования(дляэтоголучшеподходитязыкC) • длясложныхприложений,когдаструктурированиеявляетсяжизненнойнеобходимостью (контрользатипамипеременных,прототипамифункцийит.п.) • дляцелевыхзадач,откоторыхможетзависетьуспехпредприятия. • когдавоглавууглапоставленабезопасностьсистемы,когданеобходимообеспечить целостностьсистемыизащититьееотвторжения,взломаивандализма. • дляпроектов,содержащихкомпоненты,оченьтесновзаимодействующиемеждусобой. 1

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.