Искусство программирования на языке сценариев командной оболочки pdf

Скачать книгу бесплатно или читать онлайн

Искусство программирования на языке сценариев командной оболочки

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев — это написание сценариев.

Advanced Bash-Scripting Guide

Автор: Мендель Купер (Mendel Cooper [email protected])

Перевод: Андрей Киселев <[email protected]>

Посвящения

Посвящается Аните — источнику очарования

Часть 1. Введение

Shell — это командная оболочка. Но это не просто промежуточное звено между пользователем и операционой системой, это еще и мощный язык программирования. Программы на языке shell называют сценариями, или скриптами. Фактически, из скриптов доступен полный набор команд, утилит и программ UNIX. Если этого недостаточно, то к вашим услугам внутренние команды shell — условные операторы, операторы циклов и пр., которые увеличивают мощь и гибкость сценариев. Shell-скрипты исключительно хороши при программировании задач администрирования системы и др., которые не требуют для своего создания полновесных языков программирования.

Глава 1. Зачем необходимо знание языка Shell?

Знание языка командной оболочки является залогом успешного решения задач администрирования системы. Даже если вы не предполагаете заниматься написанием своих сценариев. Во время загрузки Linux выполняется целый ряд сценариев из /etc/rc.d, которые настраивают конфигурацию операционной системы и запускают различные сервисы, поэтому очень важно четко понимать эти скрипты и иметь достаточно знаний, чтобы вносить в них какие либо изменения.

Язык сценариев легок в изучении, в нем не так много специфических операторов и конструкций. [ 1 ]Синтаксис языка достаточно прост и прямолинеен, он очень напоминает команды, которые приходится вводить в командной строке. Короткие скрипты практически не нуждаются в отладке, и даже отладка больших скриптов отнимает весьма незначительное время.

Shell-скрипты очень хорошо подходят для быстрого создания прототипов сложных приложений, даже не смотря на ограниченный набор языковых конструкций и определенную «медлительность». Такая метода позволяет детально проработать структуру будущего приложения, обнаружить возможные «ловушки» и лишь затем приступить к кодированию на C, C++, Java, или Perl.

Скрипты возвращают нас к классической философии UNIX — «разделяй и влавствуй» т.е. разделение сложного проекта на ряд простых подзадач. Многие считают такой подход наилучшим или, по меньшей мере, наиболее эстетичным способом решения возникающих проблем, нежели использование нового поколения языков — «все-в-одном», таких как Perl.

Для каких задач неприменимы скрипты

для ресурсоемких задач, особенно когда важна скорость исполнения (поиск, сортировка и т.п.)

для задач, связанных с выполнением математических вычислений, особенно это касается вычислений с плавающей запятой, вычислений с повышенной точностью, комплексных чисел (для таких задач лучше использовать C++ или FORTRAN)

для кросс-платформенного программирования (для этого лучше подходит язык C)

для сложных приложений, когда структурирование является жизненной необходимостью (контроль за типами переменных, прототипами функций и т.п.)

для целевых задач, от которых может зависеть успех предприятия.

когда во главу угла поставлена безопасность системы, когда необходимо обеспечить целостность системы и защитить ее от вторжения, взлома и вандализма.

для проектов, содержащих компоненты, очень тесно взаимодействующие между собой.

для задач, выполняющих огромный объем работ с файлами

для задач, работающих с многомерными массивами

когда необходимо работать со структурами данных, такими как связанные списки или деревья

когда необходимо предоставить графический интерфейс с пользователем (GUI)

когда необходим прямой доступ к аппаратуре компьютера

когда необходимо выполнять обмен через порты ввода-вывода или сокеты

когда необходимо использовать внешние библиотеки

для проприетарных, «закрытых» программ (скрипты представляют из себя исходные тексты программ, доступные для всеобщего обозрения)

Если выполняется хотя бы одно из вышеперечисленных условий, то вам лучше обратиться к более мощным скриптовым языкам программирования, например Perl, Tcl, Python, Ruby или к высокоуровневым компилирующим языкам — C, C++ или Java. Но даже в этом случае, создание прототипа приложения на языке shell может существенно облегчить разработку.

Название BASH — это аббревиатура от «Bourne-Again Shell» и игра слов от, ставшего уже классикой, «Bourne Shell» Стефена Бурна (Stephen Bourne). В последние годы BASH достиг такой популярности, что стал стандартной командной оболочкой de facto для многих разновидностей UNIX. Большинство принципов программирования на BASH одинаково хорошо применимы и в других командных оболочках, таких как Korn Shell (ksh), от которой Bash позаимствовал некоторые особенности[ 2 ], и C Shell и его производных. (Примечательно, что C Shell не рекомендуется к использованию из-за отдельных проблем, отмеченных Томом Кристиансеном (Tom Christiansen) в октябре 1993 года на Usenet post

Далее, в тексте документа вы найдете большое количество примеров скриптов, иллюстрирующих возможности shell. Все примеры — работающие. Они были протестированы, причем некоторые из них могут пригодиться в повседневной работе. Уважаемый читатель можеть «поиграть» с рабочим кодом скриптов, сохраняя их в файлы, с именами scriptname.sh.[ 3 ] Не забудьте выдать этим файлам право на исполнение (chmod u+rx scriptname), после чего сценарии можно будет запустить на исполнение и проверить результат их работы. Вам следует помнить, что описание некоторых примеров следует после исходного кода этого примера, поэтому, прежде чем запустить сценарий у себя — ознакомьтесь с его описанием.

Скрипты были написаны автором книги, если не оговаривается иное.

Глава 2. Для начала о Sha-Bang

В простейшем случае, скрипт — это ни что иное, как простой список команд системы, записанный в файл. Создание скриптов поможет сохранить ваше время и силы, которые тратятся на ввод последовательности команд всякий раз, когда необходимо их выполнить.

Пример 2-1. cleanup: Сценарий очистки лог-файлов в /var/log

# cleanup

# Для работы сценария требуются права root.

cd /var/log

cat /dev/null > messages

cat /dev/null > wtmp

echo «Лог-файлы очищены.»

Здесь нет ничего необычного, это простая последовательность команд, которая может быть набрана в командной строке с консоли или в xterm. Преимущество размещения последовательности команд в скрипте состоит в том, что вам не придется всякий раз набирать эту последовательность вручную. Кроме того, скрипты легко могут быть модифицированы или обобщены для разных применений.

Пример 2-2. cleanup: Расширенная версия предыдущего сценария.

#!/bin/bash

# cleanup, version 2

# Для работы сценария требуются права root.

LOG_DIR=/var/log

ROOT_UID=0 # Только пользователь с $UID 0 имеет привилегии root.

LINES=50 # Количество сохраняемых строк по-умолчанию.

E_XCD=66 # Невозможно сменить каталог?

E_NOTROOT=67 # Признак отсутствия root-привилегий.

if [ «$UID» -ne «$ROOT_UID» ]

then

echo «Для работы сценария требуются права root.»

exit $E_NOTROOT

fi

if [ -n «$1» ]

# Проверка наличия аргумента командной строки.

then

lines=$1

else

lines=$LINES # Значение по-умолчанию, если число не задано в командной строке

fi

# Stephane Chazelas предложил следующее,

#+ для проверки корректности аргумента, переданного из командной строки,

#+ правда это достаточно сложно для данного руководства.

#

# E_WRONGARGS=65 # Не числовой аргумент

#

# case «$1» in

# «» ) lines=50;;

# *[!0-9]*) echo «Usage: `basename $0` file-to-cleanup»; exit $E_WRONGARGS;;

# * ) lines=$1;;

# esac

#

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

close

close

Забыли свой пароль?

Если вы забыли пароль, введите адрес электронной почты или логин, и мы отправим вам письмо с указаниями по его восстановлению.

E-mail / login:

close

close

Подписка на новые поступления

close

Вы зарегистрированы

Для подтверждения регистрации, перейдите по ссылке, которая была отправлена на указанный Вами електронный адрес (также советуем перепроверить спам)

close

Ваш отзыв добавлен

Спасибо. Ваш отзыв появится на сайте после проверки модератором.

close

Подписка успешна

Спасибо. Вы успешно подписались на новые поступления, на вашу почту было отправлено письмо с инструкциями.

close

Ваш отзыв получен

Спасибо. Ваш отзыв уже обрабатывается.

close

Ваша книга успешно отправлена на обработку

Следите за обновлениями и возможно Ваш материал скоро появится на сайте

close

Ваш заказ принят

Заказ появится на сайте как только пройдёт модерацию. Спасибо!

Advanced Bash-Scripting Guide

��������� ���������������� �� ����� ���������
��������� ��������

�������: ������ �������

��������: Russian Linux Gazette

����� ����������� � html-������� (~380��)

����� ����������� � sgml-������� (~380��)


������ ����������� �� ������������ ������� � ��������
�������� � ������� ���������������� �� ����� ���������,
������, ������ ���������� ���� ���������� . . . ����������, ��� �� ����� ���������
�������� � ������� UNIX
. ��� ����������� �����
��������������� ��� �������, ��������������� ���
���������������� �������� ��� ��� ���������� ��
���������������� �� shell. ����������� �������� ������
������ ������������������� ��������, ��������� ������ ���� � �������� �����
��������� — ��� ��������� ���������
.

��������� ������ ���������, � ���� .bz2 ������, ����������
�������� ������ � ������� SGML � HTML, �� ������� �� �������� ��������� ������. ��� �� ��
������� � change log.


Advanced Bash-Scripting Guide

Искусство программирования на языке сценариев командной оболочки

Версия 2.5 (15 февраля 2004)

Автор: Mendel Cooper (thegrendel at theriver dot com)

Перевод: Андрей Киселев (kis_an at mail dot ru)

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток . . . постепенно, шаг за шагом раскрывая мудрость и красоту Unix™. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к

изучению языка сценариев — это написание сценариев.

Кроме того, эта книга может служить в качестве учебного пособия по основам програмирования вообще.

Последнюю версию документа, в виде .bz2 архива, содержащем исходные тексты в формате SGML и HTML, вы найдете на домашней страничке автора. Там же вы найдете и список изменений (change log).

Посвящения

Посвящается Аните — источнику очарования

Содержание

Часть 1. Введение

1.Зачем необходимо знание языка Shell?

2.Для начала о Sha-Bang

2.1.Запуск сценария

2.2.Упражнения

Часть 2. Основы

3.Служебные символы

4.Переменные и параметры. Введение.

4.1.Подстановка переменных

1

4.2.Присваивание значений переменным

4.3.Переменные Bash не имеют типа

4.4.Специальные типы переменных

5.Кавычки

6.Завершение и код завершения

7.Проверка условий

7.1.Конструкции проверки условий

7.2.Операции проверки файлов

7.3.Операции сравнения

7.4.Вложенные условные операторы if/then

7.5.Проверка степени усвоения материала

8.Операции и смежные темы

8.1.Операторы

8.2.Числовые константы Часть 3. Углубленный материал

9.К вопросу о переменных

9.1.Внутренние переменные

9.2.Работа со строками

9.3.Подстановка параметров

9.4.Объявление переменных: declare и typeset

9.5.Косвенные ссылки на переменные

9.6.$RANDOM: генерация псевдослучайных целых чисел

9.7.Двойные круглые скобки

10.Циклы и ветвления

10.1.Циклы

10.2.Вложенные циклы

10.3.Управление ходом выполнения цикла

10.4.Операторы выбора

11.Внутренние команды

11.1.Команды управления заданиями

12.Внешние команды, программы и утилиты

12.1.Базовые команды

12.2.Более сложные команды

12.3.Команды для работы с датой и временем

12.4.Команды обработки текста

12.5.Команды для работы с файлами и архивами

12.6.Команды для работы с сетью

12.7.Команды управления терминалом

12.8.Команды выполнения математических операций

12.9.Прочие команды

13.Команды системного администрирования

14.Подстановка команд

15.Арифметические подстановки

16.Перенаправление ввода/вывода

2

16.1.С помощью команды exec

16.2.Перенаправление для блоков кода

16.3.Область применения

17.Встроенные документы

Часть 4. Материал повышенной сложности

18.Регулярные выражения

18.1.Краткое введение в регулярные выражения

18.2.Globbing — Подстановка имен файлов

19.Подоболочки, или Subshells

20.Ограниченный режим командной оболочки

21.Подстановка процессов

22.Функции

22.1.Сложные функции и сложности с функциями

22.2.Локальные переменные

22.3.Рекурсия без локальных переменных

23.Псевдонимы

24.Списки команд

25.Массивы

26.Файлы

27./dev и /proc

27.1./dev

27.2./proc

28./dev/zero и /dev/null

29.Отладка сценариев

30.Необязательные параметры (ключи)

31.Широко распространенные ошибки

32.Стиль программирования

32.1.Неофициальные рекомендации по оформлению сценариев

33.Разное

33.1.Интерактивный и неинтерактивный режим работы

33.2.Сценарии-обертки

33.3.Операции сравнения: Альтернативные решения

33.4.Рекурсия

33.5.«Цветные» сценарии

33.6.Оптимизация

33.7.Разные советы

33.8.Проблемы безопасности

33.9.Проблемы переносимости

33.10.Сценарии командной оболочки под Windows

34.Bash, версия 2

35.Замечания и дополнения

35.1.От автора

3

35.2.Об авторе

35.3.Куда обращаться за помощью

35.4.Инструменты, использовавшиеся при создании книги

35.4.1.Аппаратура

35.4.2.Программное обеспечение

35.5.Благодарности

Библиография

A.Дополнительные примеры сценариев

B.Справочная информация

C.Маленький учебник по Sed и Awk

C.1. Sed

C.2. Awk

D.Коды завершения, имеющие предопределенный смысл

E.Подробное введение в операции ввода-вывода и перенаправление ввода-вывода

F.Системные каталоги

G.Локализация

H.История команд

I.Пример файла .bashrc

J.Преобразование пакетных (*.bat) файлов DOS в сценарии командной оболочки

K.Упражнения

K.1. Анализ сценариев

K.2. Создание сценариев

L.Хронология

M.Авторские права

Перечень таблиц

11-1. Идентификация заданий

30-1. Ключи Bash

33-1. Числовые значения цвета в escape-последовательностях B-1. Переменные специального назначения

B-2. Операции проверки: Двухместные операции B-3. Операции проверки: Файлы

B-4. Подстановка параметров и экспансия B-5. Операции со строками

B-6. Прочие конструкции C-1. Основные операции sed C-2. Примеры операций в sed

D-1. «Зарезервированные» коды завершения

J-1. Ключевые слова/переменные/операторы пакетных файлов DOS и их аналоги командной оболочки

J-2. Команды DOS и их эквиваленты в Unix L-1. Хронология

Перечень примеров

2-1. cleanup: Сценарий очистки лог-файлов в /var/log 2-2. cleanup: Расширенная версия предыдущего сценария. 3-1. Вложенные блоки и перенаправление ввода-вывода

3-2. Сохранение результата исполнения вложенного блока в файл 3-3. Запуск цикла в фоновом режиме

3-4. Резервное архивирование всех файлов, которые были изменены в течение последних суток

4

4-1. Присваивание значений переменным и подстановка значений переменных

4-2. Простое присваивание

4-3. Присваивание значений переменным простое и замаскированное

4-4. Целое число или строка?

4-5. Позиционные параметры

4-6. wh, whois выяснение имени домена

4-7. Использование команды shift

5-1. Вывод «причудливых» переменных

5-2. Экранированные символы

6-1. завершение / код завершения 6-2. Использование символа ! для логической инверсии кода возврата 7-1. Что есть «истина»?

7-2. Эквиваленты команды test /usr/bin/test, [ ], и /usr/bin/[

7-3. Арифметические выражения внутри (( ))

7-4. Проверка «битых» ссылок

7-5. Операции сравнения

7-6. Проверка является ли строка пустой

7-7. zmost

8-1. Наибольший общий делитель

8-2. Арифметические операции 8-3. Построение сложных условий, использующих && и ||

8-4. Различные представления числовых констант

9-1. $IFS и пробельные символы

9-2. Ограничения времени ожидания ввода 9-3. Еще один пример ограничения времени ожидания ввода от пользователя

9-4. Ограничение времени ожидания команды read

9-5. Я root?

9-6. arglist: Вывод списка аргументов с помощью переменных $* и $@ 9-7. Противоречия в переменных $* и $@

9-8. Содержимое $* и $@, когда переменная $IFS пуста 9-9. Переменная «подчеркивание»

9-10. Вставка пустых строк между параграфами в текстовом файле 9-11. Преобразование графических файлов из одного формата в другой, с изменением имени файла 9-12. Альтернативный способ извлечения подстрок 9-13. Подстановка параметров и сообщения об ошибках

9-14. Подстановка параметров и сообщение о «порядке использования» 9-15. Длина переменной 9-16. Поиск по шаблону в подстановке параметров

9-17. Изменение расширений в именах файлов:

9-18. Поиск по шаблону при анализе произвольных строк 9-19. Поиск префиксов и суффиксов с заменой по шаблону 9-20. Объявление переменных с помощью инструкции declare 9-21. Косвенные ссылки

9-22. Передача косвенных ссылок в awk

9-23. Генерация случайных чисел

9-24. Выбор случайной карты из колоды

9-25. Псевдослучайное число из заданного диапазона

9-26. Имитация бросания кубика с помощью RANDOM

9-27. Переустановка RANDOM

9-28. Получение псевдослучайных чисел с помощью awk 9-29. Работа с переменными в стиле языка C

10-1. Простой цикл for

10-2. Цикл for с двумя параметрами в каждом из элементов списка 10-3. Fileinfo: обработка списка файлов, находящегося в переменной 10-4. Обработка списка файлов в цикле for

10-5. Цикл for без списка аргументов

10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд

5

10-7. grep для бинарных файлов

10-8. Список всех пользователей системы 10-9. Проверка авторства всех бинарных файлов в текущем каталоге 10-10. Список символических ссылок в каталоге

10-11. Список символических ссылок в каталоге, сохраняемый в файле 10-12. C-подобный синтаксис оператора цикла for

10-13. Работа с командой efax в пакетном режиме 10-14. Простой цикл while

10-15. Другой пример цикла while

10-16. Цикл while с несколькими условиями

10-17. C-подобный синтаксис оформления цикла while

10-18. Цикл until

10-19. Вложенный цикл

10-20. Команды break и continue в цикле

10-21. Прерывание многоуровневых циклов

10-22. Передача управление в начало внешнего цикла

10-23. Живой пример использования «continue N»

10-24. Использование case

10-25. Создание меню с помощью case

10-26. Оператор case допускает использовать подстановку команд вместо анализируемой переменной 10-27. Простой пример сравнения строк

10-28. Проверка ввода

10-29. Создание меню с помощью select

10-30. Создание меню с помощью select в функции 11-1. printf в действии

11-2. Ввод значений переменных с помощью read

11-3. Пример использования команды read без указания переменной для ввода 11-4. Ввод многострочного текста с помощью read

11-5. Обнаружение нажатия на курсорные клавиши

11-6. Чтение командой read из файла через перенаправление 11-7. Проблемы чтения данных из канала (конвейера)

11-8. Смена текущего каталога

11-9. Команда let, арифметические операции.

11-10. Демонстрация команды eval

11-11. Принудительное завершение сеанса

11-12. Шифрование по алгоритму «rot13»

11-13. Замена имени переменной на ее значение, в исходном тексте программы на языке Perl, с помощью eval

11-14. Установка значений аргументов с помощью команды set 11-15. Изменение значений позиционных параметров (аргументов) 11-16. «Сброс» переменной

11-17. Передача переменных во вложенный сценарий awk, с помощью export 11-18. Прием опций/аргументов, передаваемых сценарию, с помощью getopts 11-19. «Подключение» внешнего файла 11-20. Пример (бесполезный) сценария, который подключает себя самого. 11-21. Команда exec

11-22. Сценарий, который запускает себя самого 11-23. Ожидание завершения процесса перед тем как продолжить работу

11-24. Сценарий, завершающий себя сам с помощью команды kill

12-1. Создание оглавления диска для записи CDR, с помощью команды ls 12-2. Здравствуй или Прощай

12-3. Badname, удаление файлов в текущем каталоге, имена которых содержат недопустимые символы и пробелы.

12-4. Удаление файла по его номеру inode

12-5. Использование команды xargs для мониторинга системного журнала 12-6. copydir, копирование файлов из текущего каталога в другое место.

6

12-7. Завершение работы процесса по его имени

12-8. Подсчет частоты встречаемости слов using xargs

12-9. Пример работы с expr

12-10. Команда date

12-11. Частота встречаемости отдельных слов

12-12. Какие из файлов являются сценариями?

12-13. Генератор 10-значных случайных чисел

12-14. Мониторинг системного журнала с помощью tail

12-15. Сценарий-эмулятор «grep»

12-16. Поиск слов в словаре

12-17. toupper: Преобразование символов в верхний регистр.

12-18. lowercase: Изменение имен всех файлов в текущем каталоге в нижний регистр. 12-19. du: Преобразование текстового файла из формата DOS в формат Unix.

12-20. rot13: Сверхслабое шифрование по алгоритму rot13. 12-21. Более «сложный» шифр 12-22. Отформатированный список файлов.

12-23. Пример форматирования списка файлов в каталоге

12-24. nl: Самонумерующийся сценарий.

12-25. Пример перемещения дерева каталогов с помощью cpio 12-26. Распаковка архива rpm

12-27. Удаление комментариев из файла с текстом программы на языке C 12-28. Исследование каталога /usr/X11R6/bin

12-29. «Расширенная» команда strings

12-30. Пример сравнения двух файлов с помощью cmp. 12-31. Утилиты basename и dirname

12-32. Проверка целостности файла

12-33. Декодирование файлов 12-34. Сценарий, отправляющий себя самого по электронной почте

12-35. Ежемесячные выплаты по займу 12-36. Перевод чисел из одной системы счисления в другую

12-37. Пример взаимодействия bc со «встроенным документом» 12-38. Вычисление числа «пи»

12-39. Преобразование чисел из десятичной в шестнадцатиричную систему счисления 12-40. Разложение числа на простые множители 12-41. Расчет гипотенузы прямоугольного треугольника

12-42. Использование seq для генерации списка аргументов цикла for 12-43. Использование getopt для разбора аргументов командной строки 12-44. Захват нажатых клавиш 12-45. Надежное удаление файла 12-46. Генератор имен файлов 12-47. Преобразование метров в мили

12-48. Пример работы с m4

13-1. Установка нового пароля

13-2. Установка символа «забоя»

13-3. невидимый пароль: Отключение эхо-вывода на терминал 13-4. Перехват нажатия на клавиши с помощью stty.

13-5. Использование команды pidof при остановке процесса

13-6. Проверка образа CD

13-7. Создание файловой системы в обычном файле

13-8. Добавление нового жесткого диска

13-9. Сценарий killall, из каталога /etc/rc.d/init.d 14-1. Глупая выходка 14-2. Запись результатов выполнения цикла в переменную

16-1. Перенаправление stdin с помощью exec

16-2. Перенаправление stdout с помощью exec

16-3. Одновременное перенаправление устройств, stdin и stdout, с помощью команды exec 16-4. Перенаправление в цикл while

7

16-5. Альтернативная форма перенаправления в цикле while

16-6. Перенаправление в цикл until

16-7. Перенаправление в цикл for

16-8. Перенаправление устройств (stdin и stdout) в цикле for 16-9. Перенаправление в конструкции if/then

16-10. Файл с именами «names.data», для примеров выше 16-11. Регистрация событий

17-1. dummyfile: Создание 2-х строчного файла-заготовки

17-2. broadcast: Передача сообщения всем, работающим в системе, пользователям 17-3. Вывод многострочных сообщений с помощью cat

17-4. Вывод многострочных сообщений с подавлением символов табуляции 17-5. Встроенные документы и подстановка параметров

17-6. Передача пары файлов во входящий каталог на «Sunsite» 17-7. Отключение подстановки параметров 17-8. Сценарий, который создает другой сценарий 17-9. Встроенные документы и функции 17-10. «Анонимный» Встроенный Документ 17-11. Блочный комментарий 17-12. Встроенная справка к сценарию

19-1. Область видимости переменных

19-2. Личные настройки пользователей

19-3. Запуск нескольких процессов в подоболочках

20-1. Запуск сценария в ограниченном режиме

22-1. Простые функции

22-2. Функция с аргументами

22-3. Передача косвенных ссылок в функцию 22-4. Изменение значения переменной, переданной в функцию по ссылке.

22-5. Еще один пример разыменования параметров функции, передаваемых по ссылке. 22-6. Наибольшее из двух чисел 22-7. Преобразование чисел в римскую форму записи

22-8. Проверка возможности возврата функциями больших значений

22-9. Сравнение двух больших целых чисел

22-10. Настоящее имя пользователя

22-11. Область видимости локальных переменных

22-12. Использование локальных переменных при рекурсии

22-13. Ханойские Башни

23-1. Псевдонимы в сценарии

23-2. unalias: Объявление и удаление псевдонимов

24-1. Проверка аргументов командной строки с помощью «И-списка» 24-2. Еще один пример проверки аргументов с помощью «И-списков» 24-3. Комбинирование «ИЛИ-списков» и «И-списков»

25-1. Простой массив

25-2. Форматирование стихотворения

25-3. Различные операции над массивами

25-4. Строковые операции и массивы

25-5. Загрузка исходного текста сценария в массив

25-6. Некоторые специфичные особенности массивов

25-7. Пустые массивы и пустые элементы

25-8. Инициализация массивов

25-9. Копирование и конкатенация массивов

25-10. Еще пример на конкатенацию массивов

25-11. Старая, добрая: «Пузырьковая» сортировка

25-12. Вложенные массивы и косвенные ссылки

25-13. Пример реализации алгоритма Решето Эратосфена 25-14. Эмуляция структуры «СТЕК» («первый вошел последний вышел») 25-15. Исследование математических последовательностей

25-16. Эмуляция массива с двумя измерениями

8

27-1. Пример работы с псевдоустройством /dev/tcp

27-2. Поиск файла программы по идентификатору процесса

27-3. Проверка состояния соединения

28-1. Удаление cookie-файлов

28-2. Создание файла подкачки (swapfile), с помощью /dev/zero 28-3. Создание электронного диска 29-1. Сценарий, содержащий ошибку 29-2. Пропущено ключевое слово

29-3. test24

29-4. Проверка условия с помощью функции «assert»

29-5. Ловушка на выходе

29-6. Удаление временного файла при нажатии на Control-C 29-7. Трассировка переменной 31-1. Строки и числа нельзя сравнивать напрямую 31-2. Западня в подоболочке

31-3. Передача вывода от команды echo команде read, по конвейеру

33-1. сценарий-обертка

33-2. Более сложный пример сценария-обертки

33-3. Сценарий-обертка вокруг сценария awk

33-4. Сценарий на языке Perl, встроенный в Bash-скрипт 33-5. Комбинирование сценария Bash и Perl в одном файле 33-6. Сценарий (бесполезный), который вызывает себя сам

33-7. Сценарий (имеющий практическую ценность), который вызывает себя сам 33-8. Еще один сценарий, который вызывает себя сам 33-9. «Цветная» адресная книга 33-10. Вывод цветного текста

33-11. Необычный способ передачи возвращаемого значения

33-12. Необычный способ получения нескольких возвращаемых значений 33-13. Передача массива в функцию и возврат массива из функции 33-14. Игры с анаграммами

33-15. Сценарий с графическим интерфейсом

34-1. Расширение строк 34-2. Косвенные ссылки на переменные новый метод

34-3. Простая база данных, с применением косвенных ссылок 34-4. Массивы и другие хитрости для раздачи колоды карт в четыре руки A-1. manview: Просмотр страниц руководств man

A-2. mailformat: Форматирование электронных писем

A-3. rn: Очень простая утилита для переименования файлов

A-4. blank-rename: переименование файлов, чьи имена содержат пробелы A-5. encryptedpw: Передача файла на ftp-сервер, с использованием пароля A-6. copy-cd: Копирование компакт-дисков с данными

A-7. Последовательности Коллаца (Collatz)

A-8. days-between: Подсчет числа дней между двумя датами A-9. Создание «словаря»

A-10. Расчет индекса «созвучности» A-11. «Игра «Жизнь»»

A-12. Файл с первым поколением для игры «Жизнь»

A-13. behead: Удаление заголовков из электронных писем и новостей A-14. ftpget: Скачивание файлов по ftp

A-15. Указание на авторские права

A-16. password: Генератор случайного 8-ми символьного пароля A-17. fifo: Создание резервных копий с помощью именованных каналов

A-18. Генерация простых чисел, с использованием оператора деления по модулю (остаток от деления)

A-19. tree: Вывод дерева каталогов

A-20. Функции для работы со строками

A-21. Directory information

9

Соседние файлы в папке Справочный материал

  • #
  • #
  • #
  • #
  • #
  • #

libcats.org

Главная

Искусство программирования на языке сценариев командной оболочки

Нет обложки

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Скачать книгу бесплатно (fb2, 1.66 Mb)


Читать «Искусство программирования на языке сценариев командной оболочки»

EPUB | PDF | MOBI | TXT | RTF

* Конвертация файла может нарушить форматирование оригинала. По-возможности скачивайте файл в оригинальном формате.

Популярные книги за неделю:

#1

Корпорация. Россия и КГБ во времена президента Путина

Фельштинский Юрий, Прибыловский Владимир

Категория: Политика

1.08 Mb

#2

Олег Верещагин. Ох уж, эти детки!

289 Kb

#3

Дискретная математика. Часть 2

Булгаков И. Н., Федотенко Г. Ф.

605 Kb

#4

Подготовка саперов, подразделений специального назначения по разминированию

Категория: Научно-популярная литература (разное)

1.49 Mb

#5

ВАЗ 2110i, -2111i, -2112i

Категория: civil, civil, transport

57.35 Mb

#6

128 советов начинающему программисту

Очков В.Ф., Пухначев Ю.В.

Категория: computers, computers, prog

8.91 Mb

#7

Английский язык в картинках

I.A. Richards; Christine M. Gibson

Категория: Иностранные языки

5.77 Mb

#8

Ограждение участка. Ограды. Заборы. Калитки. Ворота

В.И.Рыженко

Категория: Строительство

1.23 Mb

#9

Эти загадочные зеркала

В. Правдивцев

Категория: Религия. Эзотерика

88.19 Mb

#10

Модели воздушного боя

Киселёв Б.А.

Категория: hobby, , hobby, otherhobby

7.81 Mb

Только что пользователи скачали эти книги:

#1

Г.Г.Костанди. Самодельные ультракоротковолновые приставки и приемники (МРБ-0221, 1955, djvu)

3.32 Mb

#2

Елена Семенова «Эротика в спорте»

2 Kb

#3

В.Ф.Шилов. Самодельные приборы по радиоэлектронике (1973, djvu)

12.86 Mb

#4

Популярные лекции по математике. Неподвижные точки

Шашкин Ю.А.

Категория: Mathematics, School-level, Популярные лекции по математике

1.05 Mb

#5

Популярные лекции по математике. Преследование на плоскости

Петросян Л.А., Рихсиев Б.Б.

Категория: Mathematics, School-level, Популярные лекции по математике

1.37 Mb

#6

Популярные лекции по математике. Три классические задачи на построение

Прасолов В.В.

Категория: Mathematics, School-level, Популярные лекции по математике

653 Kb

#7

Самодельные станки и инструменты

Чебан В.А.

Категория: civil, tech, civil, building, hobby, otherhobby, house

1.15 Mb

#8

Аэродинамика малых скоростей

Шмитц Ф.В.

Категория: Авиация, Аэродинамика

1.39 Mb

#9

Самоделки школьника

Тарасов Б.В.

Категория: science, science, technical, hobby, oddjob

41.91 Mb

#10

Изготовление самодельного станка с ЧПУ (управление от компьютера)

Категория: ТЕХНИКА, ХОББИ и РЕМЕСЛА

10.30 Mb

Advanced Bash-Scripting Guide: Искусство программирования на языке сценариев командной оболочки

Версия 2.5 (15 февраля 2004)

Перевод: Андрей Киселев (kis_an at mail dot ru)

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток постепенно, шаг за шагом раскрывая мудрость и красоту Unix. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев — это написание сценариев.

Кроме того, эта книга может служить в качестве учебного пособия по основам програмирования вообще.

Последнюю версию документа, в виде .tar.gz архива, содержащем исходные тексты в формате SGML и HTML, вы найдете на домашней страничке автора.



Посвящения

Посвящается Аните — источнику очарования

Книга - Искусство программирования на языке сценариев командной оболочки. Мендель Купер - прочитать в ЛитВек

ДРУГИЕ КНИГИ:

Искусство программирования на языке сценариев командной оболочки

Издано в серии:

Издательство:

Город печати:

ISBN:

Книга закончена

   просмотрело человек за:

день: 1  месяц: 54    год: 144    всего: 359

fb2 QR-код

X

QR-код ссылки на скачивание книги

QR-код

Размер: 359.6 Кбайт
mobi QR-код

X

QR-код ссылки на скачивание книги

QR-код

Размер: 2260.4 Кбайт
txt QR-код

X

QR-код ссылки на скачивание книги

QR-код

Размер: 441.6 Кбайт
html QR-код

X

QR-код ссылки на скачивание книги

QR-код

Размер: 509.7 Кбайт
pdf_a4 QR-код

X

QR-код ссылки на скачивание книги

QR-код

Размер: 2658.8 Кбайт
Читать онлайн

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев — это написание сценариев.

Ключевые слова: Bash Linux Unix Shell
  : 0 : 0 : 0 : 0 : 1 : 0 : 0  

Оставить комментарий:

Понравилась статья? Поделить с друзьями:
  • Искусство объединяет сценарий мероприятия
  • Искусство написания сценариев unity
  • Искусство ислама исламские праздники
  • Искусство быть читателем день библиографии сценарий
  • Искусственный праздник я падаю на снег текст