POSIX Shell — Программирование
PSSFT

О КУРСЕ
Этот курс предназначен для пользователей систем *NIX, которые используют эти системы на регулярной основе. Материал этого курса и материал лабораторных работ построены с учетом того, что слушатели в будущем будут выполнять функции системных администраторов или администраторов сети.
В этом курсе содержится множество примеров, которые призваны помочь слушателям получить более глубоки знания и умения, а также проверить эти знания на практике. Примеры представляют собой небольшие упражнения по написанию shell-сценариев и сценариев с использованием awk. Примеры являются неотъемлемой частью лекционного материала и приедены не в ознакомительных целях, а в качестве упражнений, которые должны выполнять слушатели. Каждый модуль завершается лабораторной работой. Лабораторные работы являются небольшими исследованиями, которые слушатели должны выполнить самостоятельно.
АУДИТОРИЯ
Курс адресован в первую очередь «продвинутым» пользователям, действующим и будущим администраторам *NIX систем, а также всем, кто использует в своей работе оболочки *NIX (ksh, bash, dash, ash, posix и т.д.)
ПО ОКОНЧАНИИ КУРСА
Слушатели будут способны:
- Создавать, редактировать и тестировать сценарии.
- Использовать переменные окружения и специальные символы shell.
- Использовать регулярные выражения (утилиты grep, sed, и awk).
- Создавать сценарии sed для не интерактивного редактирования текста.
- Создавать сценарии awk.
- Использовать переменную-статус возврата.
- Обрабатывать аргументы командной строки.
- Управлять сообщениями об ошибках и других исключительных ситуациях.
- Использовать логические конструкции и конструкции циклов.
- Использовать целочисленную арифметику.
- Обрабатывать сигналы к процессам.
ПРОГРАММА КУРСА
Модуль 1 — Введение в POSIX Shell программирование
- Процесс создания сценария для POSIX shell.
- Процесс обработки команд оболочкой shell.
- Как shell выполняет команды.
- Как некоторые установки среды выполнения влияют на исполнение сценария.
- Как подготовить файл для выполнения его в качестве сценария shell.
- Обзор основных свойств интерпретатора POSIX shell.
Модуль 2 — Сценарии Shell
- Общая структура сценария.
- Как специфицировать имя интерпретатора, который будет использоваться для обработки команд тела сценария.
- Как создавать и выполнять простые сценарии shell.
- Комментарии в сценариях.
- Как правильно завершить сценарий.
Модуль 3 — Переменные
- Как создавать переменные POSIX shell.
- Как создать и использовать переменные в теле сценария.
- Как пометить переменные для экспортирования в порождаемый процесс.
- Как получить значение переменной.
- Как использовать конкатенацию переменных и подстроки.
Модуль 4 — Ввод данных
- Как присвоить значения переменным с помощью команды read.
- Как получить доступ к параметрам командной строки.
- Как проверить параметры на содержимое (на значения).
- Как установить умолчания для переменных.
- Как использовать встроенные переменные Shell имеющие отношения к параметрам командной строки.
Модуль 5 — Проектирование вывода сценария
- Атрибуты переменных, содержащих строковые данные.
- Как использовать команду typeset.
- Как управлять выводом с помощью кавычек.
- Основы использования возможностей терминала.
- Как использовать команду tput для изменения местоположения вывода на экране.
- Как управлять местоположением курсора.
- Как отключать эхопечать терминала с помощью команды stty.
Модуль 6 — Арифметика Shell
- Как декларировать переменные целого типа с помощью typedef
- Как назначать значения переменным с помощью команды let
- Как назначать значения переменным с использованием синтаксиса (( … ))
- Использование арифметических операторов.
- Как работать с целыми, имеющими разное основание системы счисления.
- Как использовать инструменты для вычисления значений выражений.
Модуль 7 — Ветвления и логические проверки
- Как вывести на экран значение статуса возврата предыдущей командной строки
- Как использовать логические операции в виде команды ((…))
- Применение команды test для оценки логических значений
- Как использовать альтернативы команды test – […] , [[…]]
- Как выполнять командную строку только когда логические состояния TRUE или FALSE
- Как применять управляющую последовательность if … then … fi.
- Как применять альтернативное ветвление elif
- Как использовать конструкции case …esac для выбора из множества альтернатив
- Как применять анализ совпадения по шаблону в конструкции case …esac
Модуль 8 — Шаблоны Shell
- Простые шаблоны Shell
- Как использовать некоторые составные шаблоны для генерации имен файлов
- Как использовать шаблоны и регулярные выражения для поиска совпадений
Модуль 9 — Программные циклы
- Понятие «программный цикл»
- Как управлять исполнением циклов с помощью оператора while
- Как управлять исполнением циклов с помощью оператора until
- Как управлять исполнением циклов с помощью оператора for
- Как прервать выполнение цикла с помощью оператора break
- Как продолжить выполнение цикла с данной точки (команда continue)
- Как завершать работу сценария с помощью команды exit
- Как использовать цикл типа select для конструирования структур меню.
Модуль 10 — Команда getopts
- Как использовать команду gteopts для управления опциями сценария
- Как определять опции, которые требуют указания аргумента
- Как использовать специальные переменные OPTIND и OPTARG
Модуль 11 — Массивы переменных
- Как сохранять множественные элементы в массивах переменных
- Как получать значение одного или более элементов массива
- Как получать количество элементов массива, которым присвоены значения.
Модуль 12 — Функции и библиотеки функций
- Как декларировать функции shell для текущей сущности shell
- Как получать список текущих функций shell с помощью команды typeset –f
- Как декларировать функции shell в теле файла сценария shell
- Как передать функции один или более аргументов
- Как декларировать внутренние (function-specific) переменные функции
- Как использовать команду return для возвращения значения в тело основного сценария
- Как использовать рекурсивный вызов функции
- Как создать файл библиотеки функций
- Как использовать переменную $FPATH для поиска библиотек функций
- Как использовать команду autoload для декларирования функций.
Модуль 13 — Управление вводом и выводом
- Применение дескрипторов файлов (3-9) при перенаправлении ввода/вывода.
- Как перенаправлять ввод из файла данных в сценарий.
- Как перенаправлять вывод из сценария в файл данных.
- Как читать строки данных в цикле while, используя перенаправления.
- Как использовать канал («трубы») для передачи данных внутрь цикла.
- Как использовать shell-управление here («документ здесь»)
Модуль 14 — Ловушки и сигналы
- Концепция сигналов
- Значения сигналов kill
- Как интерактивно обрабатывать сигналы
- Как обрабатывать сигналы с помощью команды kill
- Как использовать команду trap для обработки сигналов
- Как модифицировать установки терминала для посылки сигналов интерактивно.
Модуль 15 — Регулярные выражения
- Цели использования регулярных выражений
- Как использовать команды, в которых применяются регулярные выражения
- Как описывать метасимволы регулярных выражений
- Как использовать команду grep для поиска совпадений с текстовыми образцами.
Модуль 16 — Введение в awk
- Как использовать awk для вывода на печать специфицированной колонки ввода.
- Как применять совпадение по шаблону expression и условные совпадения в awk.
- Как применять команды awk, выполняемые до обработки входного потока с применением оператора BEGIN.
- Как применять команды awk, выполняемые после обработки входного потока с помощью оператора END.
- Как использовать встроенные переменные awk, такие как NF и NR.
- Как модифицировать разделители входного и выходного потоков и использованием FS, RS, OFS и ORS переменных.
- Как создавать и использовать файл программы awk.
- Как создавать и запускать на выполнение сценарий awk.
Модуль 17 — Переменные, строки и арифметические операторы
- Как создавать и использовать переменные в awk
- Как передавать переменные среды из POSIX Shell в awk
- Как использовать арифметические операторы, поддерживаемые в awk
- Как использовать функции работы со строками awk
- Как управлять форматом вывода с использованием print и printf
- Как совместно использовать awk и shell
- Как передать аргументы командной строки в awk
Модуль 18 — Управление потоком исполнения в awk
- Как использовать команду условия if
- Как использовать команду getline
- Как пользоваться командами next и exit.
- Как использовать циклы while и do-while
- Как использовать цикл for
- Как создавать и использовать одномерные и «многомерные» массивы
- Как создавать и использовать ассоциативные массивы
- Как использовать функцию split для создания массивов
- Как обрабатывать данные ассоциативных массивов с помощью цикла for
Модуль 19 — Потоковый редактор sed
- Как использовать редактор sed для выполнения подстановок заданного текста.
- Как использовать sed для удаления входных строк с использованием функции delete.
- Печатать и дублировать входные строки с использованием функции print.
- Как читать строки из другого файла в поток редактирования.
- Как записывать выходные строки в один или более файлов с помощью функции write.
- Как использовать различные функции редактирования в командной строке.
- Как создавать и использовать файл функций sed.
ТРЕБОВАНИЯ К СЛУШАТЕЛЯМ
Слушатели должны иметь знания в объеме курса «Основы работы в среде UNIX» или аналогичного ему. Предварительных знаний по программированию в среде Shell не требуется.
Желателен опыт администрирования операционных систем *NIX.
ДЛЯ КОГО ПРЕДНАЗНАЧЕН:
- Администраторы ПО
- Разработчик ПО
- Системный администратор
Для предварительной записи на курсы или уточнения информации позвоните по телефонам: +380 44 230 34 74
E-mail: education@erc.ua