ВикиЧтение
ВикиЧтение
Искусство программирования на языке сценариев командной оболочки
Купер Мендель
B.2. Awk
We use cookies. Read the
Privacy and Cookie Policy
I accept
Содержание
Часть 1. Введение
Глава 1. Зачем необходимо знание языка Shell?
Глава 2. Для начала о Sha-Bang
Пример 2-1. cleanup: Сценарий очистки лог-файлов в /var/log
2.1. Запуск сценария
2.2. Упражнения
Пример 3-1. Вложенные блоки и перенаправление ввода-вывода
Глава 4. Переменные и параметры. Введение.
4.1. Подстановка переменных
4.2. Присваивание значений переменным
4.3. Переменные Bash не имеют типа
Пример 4-4. Целое число или строка?
Глава 6. Завершение и код завершения
Пример 6-2. Использование символа ! для логической инверсии кода возврата
Глава 7. Проверка условий
Пример 7-2. Эквиваленты команды test -- /usr/bin/test, [ ], и /usr/bin/[
Пример 7-3. Арифметические выражения внутри (( ))
7.2. Операции проверки файлов
7.3. Операции сравнения
Пример 7-5. Операции сравнения
Пример 7-6. Проверка -- является ли строка пустой
7.4. Вложенные условные операторы if/then
Глава 8. Операции и смежные темы
8.1. Операторы
Пример 8-1. Наибольший общий делитель
Пример 8-2. Арифметические операции
8.2. Числовые константы
Глава 9. К вопросу о переменных
Пример 9-1. $IFS и пробельные символы
Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя
Пример 9-4. Ограничение времени ожидания команды read
Пример 9-5. Я -- root?
Пример 9-6. arglist: Вывод списка аргументов с помощью переменных $* и $@
Пример 9-8. Содержимое $* и $@, когда переменная $IFS -- пуста
Пример 9-9. Переменная "подчеркивание"
9.2.1. Использование awk при работе со строками
9.2.2. Дальнейшее обсуждение
9.3. Подстановка параметров
Пример 9-13. Подстановка параметров и сообщения об ошибках
Пример 9-14. Подстановка параметров и сообщение о "порядке использования"
Пример 9-15. Длина переменной
Пример 9-17. Изменение расширений в именах файлов:
9.4. Объявление переменных: declare и typeset
9.5. Косвенные ссылки на переменные
Пример 9-21. Косвенные ссылки
9.6. $RANDOM: генерация псевдослучайных целых чисел
Пример 9-23. Генерация случайных чисел
Пример 9-24. Выбор случайной карты из колоды
Пример 9-25. Имитация бросания кубика с помощью RANDOM
9.7. Двойные круглые скобки
Глава 10. Циклы и ветвления
10.1. Циклы
Пример 10-2. Цикл for с двумя параметрами в каждом из элементов списка
Пример 10-4. Обработка списка файлов в цикле for
Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд
Пример 10-9. Проверка авторства всех бинарных файлов в текущем каталоге
Пример 10-11. Список символических ссылок в каталоге, сохраняемый в файле
Пример 10-13. Работа с командой efax в пакетном режиме
Пример 10-14. Простой цикл while
Пример 10-16. Цикл while с несколькими условиями
Пример 10-17. C-подобный синтаксис оформления цикла while
Пример 10-18. Цикл until
10.2. Вложенные циклы
Пример 10-19. Вложенный цикл
10.3. Управление ходом выполнения цикла
Пример 10-21. Прерывание многоуровневых циклов
Пример 10-22. Передача управление в начало внешнего цикла
10.4. Операторы выбора
Пример 10-24. Использование case
Пример 10-25. Создание меню с помощью case
Пример 10-26. Оператор case допускает использовать подстановку команд вместо анализируемой переменной
Пример 10-27. Простой пример сравнения строк
Глава 11. Внутренние команды
Пример 11-4. Ввод многострочного текста с помощью read
Пример 11-6. Чтение командой read из файла через перенаправление
Пример 11-9. Демонстрация команды eval
Пример 11-14. Изменение значений позиционных параметров (аргументов)
Пример 11-15. "Сброс" переменной
11.1. Команды управления заданиями
Пример 11-23. Сценарий, завершающий себя сам с помощью команды kill
Глава 12. Внешние команды, программы и утилиты
12.1. Базовые команды
Пример 12-1. Создание оглавления диска для записи CDR, с помощью команды ls
Пример 12-4. Использование команды xargs для мониторинга системного журнала
Пример 12-5. copydir, копирование файлов из текущего каталога в другое место, с помощью xargs
12.3. Команды для работы с датой и временем
12.4. Команды обработки текста
Пример 12-20. Пример форматирования списка файлов в каталоге
12.5. Команды для работы с файлами и архивами
Пример 12-25. Исследование каталога /usr/X11R6/bin
Пример 12-28. Утилиты basename и dirname
Пример 12-30. Декодирование файлов
12.6. Команды для работы с сетью
12.7. Команды управления терминалом
12.8. Команды выполнения математических операций
Пример 12-37. Разложение числа на простые множители
12.9. Прочие команды
Пример 12-43. Генератор имен файлов
Пример 12-45. Пример работы с m4
Пример 13-2. невидимый пароль: Отключение эхо-вывода на терминал
Пример 13-5. Проверка образа CD
Пример 13-6. Создание файловой системы в обычном файле
16.1. С помощью команды exec
Пример 16-2. Перенаправление stdout с помощью exec
Пример 16-3. Одновременное перенаправление устройств, stdin и stdout, с помощью команды exec
16.2. Перенаправление для блоков кода
Пример 16-4. Перенаправление в цикл while
Пример 16-5. Альтернативная форма перенаправления в цикле while
Пример 16-6. Перенаправление в цикл until
Пример 16-9. Перенаправление в конструкции if/then
Пример 16-10. Файл с именами "names.data", для примеров выше
16.3. Область применения
Глава 17. Встроенные документы
Пример 17-4. Вывод многострочных сообщений с подавлением символов табуляции
Пример 17-7. Передача пары файлов во входящий каталог на "Sunsite"
Пример 17-8. Встроенные документы и функции
Пример 17-9. "Анонимный" Встроенный Документ
Пример 17-10. Блочный комментарий
Часть 4. Материал повышенной сложности
Глава 18. Регулярные выражения
18.2. Globbing -- Подстановка имен файлов
Глава 19. Подоболочки, или Subshells
Пример 19-1. Область видимости переменных
Пример 19-3. Запуск нескольких процессов в подоболочках
Глава 20. Ограниченный режим командной оболочки
Пример 20-1. Запуск сценария в ограниченном режиме
Глава 22. Функции
Пример 22-1. Простая функция
22.1. Сложные функции и сложности с функциями
Пример 22-2. Функция с аргументами
Пример 22-3. Наибольшее из двух чисел
Пример 22-4. Преобразование чисел в римскую форму записи
Пример 22-6. Сравнение двух больших целых чисел
22.2. Локальные переменные
Пример 22-8. Область видимости локальных переменных
22.2.1. Локальные переменные делают возможной рекурсию.
Пример 22-9. Использование локальных переменных при рекурсии
Глава 23. Псевдонимы
Глава 24. Списки команд
Пример 24-1. Проверка аргументов командной строки с помощью "И-списка"
Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков"
Пример 24-3. Комбинирование "ИЛИ-списков" и "И-списков"
Глава 25. Массивы
Пример 25-1. Простой массив
Пример 25-2. Форматирование стихотворения
Пример 25-6. Старая, добрая: "Пузырьковая" сортировка
Пример 25-8. Пример реализации алгоритма Решето Эратосфена
Пример 25-9. Эмуляция структуры "СТЕК" ("первый вошел -- последний вышел")
Пример 25-10. Исследование математических последовательностей
Пример 25-11. Эмуляция массива с двумя измерениями
Глава 26. Файлы
Глава 27. /dev и /proc
27.1. /dev
Глава 28. /dev/zero и /dev/null
Пример 28-1. Удаление cookie-файлов
Пример 28-2. Создание файла подкачки (swapfile), с помощью /dev/zero
Пример 28-3. Создание электронного диска
Глава 29. Отладка сценариев
Пример 29-1. Сценарий, содержащий ошибку
Глава 30. Необязательные параметры (ключи)
Пример 31-1. Западня в подоболочке
Глава 32. Стиль программирования
32.1. Неофициальные рекомендации по оформлению сценариев
Глава 33. Разное
Пример 33-5. Комбинирование сценария Bash и Perl в одном файле
33.3. Операции сравнения: Альтернативные решения
33.4. Рекурсия
Пример 33-6. Сценарий (бесполезный), который вызывает себя сам
Пример 33-7. Сценарий имеющий практическую ценность), который вызывает себя сам
33.5. "Цветные" сценарии
33.6. Оптимизация
33.7. Разные советы
Пример 33-10. Необычный способ передачи возвращаемого значения
33.8. Проблемы безопасности
33.9. Проблемы переносимости
33.10. Сценарии командной оболочки под Windows
Глава 34. Bash, версия 2
Пример 34-2. Косвенные ссылки на переменные -- новый метод
Пример 34-4. Массивы и другие хитрости для раздачи колоды карт в четыре руки
Глава 35. Замечания и дополнения
35.1. От автора
35.3. Инструменты, использовавшиеся при создании книги 35.3.1. Аппаратура
35.4. Благодарности
Приложение A. Дополнительные примеры сценариев
Пример A-1. manview: Просмотр страниц руководств man
Пример A-3. rn: Очень простая утилита для переименования файлов
Пример A-4. blank-rename: переименование файлов, чьи имена содержат пробелы
Пример A-5. encryptedpw: Передача файла на ftp-сервер, с использованием пароля
Пример A-6. copy-cd: Копирование компакт-дисков с данными
Пример A-7. Последовательности Коллаца (Collatz)
Пример A-8. days-between: Подсчет числа дней между двумя датами
Пример A-15. Указание на авторские права
Пример A-18. Генерация простых чисел, с использованием оператора деления по модулю (остаток от деления)
Пример A-22. Объектно ориентированная база данных
Приложение B. Маленький учебник по Sed и Awk
Приложение C. Коды завершения, имеющие предопределенный смысл
Приложение G. Пример файла .bashrc
Приложение H. Преобразование пакетных (*.bat) файлов DOS в сценарии командной оболочки
Пример H-1. VIEWDATA.BAT: пакетный файл DOS
Пример H-2. viewdata.sh: Результат преобразования VIEWDATA.BAT в сценарий командной оболочки
Приложение I. Упражнения
I.1. Анализ сценариев
I.2. Создание сценариев
Приложение J. Авторские права