- Дэньэл Роббинс. Основы Linux (перевод В.Б.Титовым ресурса D. Robbins http://www.funtoo.org/Bash_by_Example,_Part_1)
- Daniel Robbins. Linux Fundamentals (in English)
(Перед разархивированием убрать из названия файла архива символы между "tar" и ".gz".)
- Владимир Игнатов. Эффективное использование GNU Make
- Приемы повышения эффективности работы (для оболочки MATE, залы 2444, 2023 г.)
- Минимальные требования по курсу «ОС UNIX» (2022)
- Тренировочные задания по написанию скриптов (сценариев) оболочки bash
Программа практических занятий
- 14.09.2023
Установочное занятие: изучение приемов повышения эффективности работы (см. ссылку на файл выше). Настройка рабочего места в зале 2444.
- 28.09.2023
Команда ls с параметрами и без, со всеми ключами во всевозможных комбинациях. Исследование с ее помощью дерева директорий файловой системы.
Глобальные символы и шаблоны с командами ls и echo.
Команды cp, mv, rm. Упражнения на копирование и переименование директорий (обстоятельства, влияющие на результат: существует ли целевая директория, существует ли в целевой директории поддиректория с именем исходной диектории, пуста ли эта поддиректория, какая команда - cp или mv, совпадют ли имена исходной и целевой директорий).
Упражнения на временные штампы в директории /tmp и в своей домашней директории: 1) проследить временные штампы при редактировании и просмотре файлов; 2) при использовании cp сравнить все три временных штампа у оригинального файла до и после применения команды и у файла-копии; 3) проверить, что будет с временными штампами при переименовании - mv.
- 05.10.2023
Команды работы с директориями: mkdir, cd, rmdir; dirs, pushd, popd.
Вьюеры (cat, more, less, mcview), система команд less.
Новые специальные символы: ; $ {,}. Отмена специального значения символов: \, кавычки ' ' и " ".
Командная подстановка: старый (кавычки ` `) и новый стили.
- 12.10.2023
Командная подстановка: повторное и кратное применение подстановки (гнездование) для старого и нового стилей.
Команда grep, регулярные выражения. Команда sort, совместное применение sort и ls -l.
Команда find с отдельными ключами и комбинациями ключей. Использование find в виде командной подстановки в команде ls; использование `pwd` при работе с find, пример гнездования при совместном использовании ls, find и pwd.
Команда chmod. Тестовые упражнения на изменение прав доступа. Настроить права доступа к своей домашней директории!
Линки: создание и работа с жесткими и мягкими линками. Мягкие линки в / и /dev. Создание цепей линков.
- 25.10.2023
Команды diff, tail, head, wc, file.
Работа с устройствами, имеющими файловую систему: команды mount, dmesg и df.
Команда du.
Средства оболочки на специальных клавишах клавиатуры. Завершение (completion); история команд, C-r; листание
выдачи на терминал ([Shift]-[PgUp], [Shift]-[PgDn]). Команды редактирования командной строки: C-a, C-e, M-f (C-[--->]),
M-b (C-[<---]), C-k, C-u, M-d, M-[Backspace]}, C-y, C-_.
Переадресация ввода-вывода. Стандартные устройства stdin, stdout, stderr и стандартный ввод-вывод.
Перенаправление (переадресация) ввода-вывода: операторы переадресации <, >, 2>, сдвоенные операторы >>, 2>>; слияние stdout и stderr с перенаправлением в файл &> и перенаправление stderr в stdout без обязательного перенаправления в файл 2>&1.
- 02.11.2023
Переадресация ввода-вывода. Конвейер (|). Встроенные документы (<<). Чтение аргументов со stdin: команда xargs. Устройство /dev/null.
Midnight commander. Настройка X-терминала для повышения эффективности работы в mc (см. "Приемы повышения эффективности работы", п. 2). Общий стиль работы под mc: перемещения двух курсоров, F-клавиши, строка подсказки,
выделение списка файлов, [F9] — главное меню mc (другие команды и настройка). Отображение типов и других атрибутов
файлов: включение в залах 2444 (см. "Приемы...", п. 8). Англоизация mc. "Горячие клавиши": C-o; C-r; M-p, M-n; [Esc],[Tab]; M-s; M-[Enter]; C-x,t; C-x,p (M-a), C-x,C-p; M-i; M-y, M-u; C-\ ("горячие директории"); M-t; [F9],c,c,t (детальное сравнение двух директорий); M-? (функции команд find и grep). Стандартные реакции на расширения.
Переменные оболочки. Заведение переменных, способы ссылки на их значения.
Нестандартное раскрытие переменной (длина значения, удаление части значения переменной по
шаблону, выделение подстроки). Команда export, cоздание переменных в ~/.bash_profile.
- 09.11.2023
Отладка и модификации скрипта, написанного в аудитории: реакция на ошибки (отсутствие
параметров, их неполное число), синопсис, усложнения.
- 23.11.2023
Программирование на языке shell
Переменные оболочки. Присвоение значений для исполнения команды. Общий шаблон simple command.
Команда readonly. Переменные окружения. Команды set и unset. locale как приложение и команда.
Код завершения команды. Специальный параметр ?.
Команды test, true, false, expr, bc, date, sleep, eval, cut, gawk, sed, paste, seq.
Последовательности команд. Работа с разделителями конвейеров в списке.
Скрипты, способы их выполнения.
Команда alias.
Структуры if, while, until, for, case; операторы прерывания continue, break, exit.
Написание тренировочных скриптов (см. п. "Тренировочные задания..." выше).
Координатор make
Написать и отладить простейший мэйкфайл (makefile), осуществляющий сборку и исполнение программы, состоящей по крайней мере из двух исходных модулей (содержание программы может быть произвольным). В этом варианте можно не использовать средства автоматизации.
На примере написанного мэйкфайла изучить алгоритм работы координатора (программы) make. Использовать команду touch, ключ -n для make и явное (не по умолчанию) указание главной цели (-ей).
- 30.11.2023
Координатор make
Постепенно усложняя ранее написанный мэйкфайл, добавить в него следующие средства автоматизации.
- Обычные переменные мэйкфайла.
- Автоматические переменные.
- Шаблонные правила.
- Функции манипуляции с текстом wildcard и patsubst. Написать и отладить вариант мэйкфайла, в котором список объектных файлов, необходимых для создания исполнимого файла программы, строится автоматически.
Переместить хотя бы один исходный модуль в другую директорию. Написать и отладить два варианта мэйкфайла, правильно собирающего программу, зависящую от исходного модуля (или модулей), не находящихся в текущей директории. Один вариант - с использованием функции notdir и переменной VPATH, другой - без использования этих функции и переменной. Сравнить результаты работы двух вариантов.
Организовать по крайней мере в одном исходном модуле вызов хотя бы одного include-файла (можно произвольного). При помощи комбинирования правил учесть в мэйкфайле зависимость соответствующих объектных файлов от include-файла (-ов).
По желанию, освоить модификацию мэйкфайла для работы с фортрановскими модулями (*.mod).
Управление процессами
Команда ps с различными ключами. Поиск процессов по имени команды. Команда top.
Режимы переднего плана и фоновый. Управление процессами в этих режимах: управляющие комбинации C-c и C-z; команды
jobs, fg, bg.
Управление процессами при помощи команды kill.
Освоение запуска программ под приложением screen.
Архивирование и упаковка файлов. Команда tar, работа с алгоритмами Lempel-Ziv (LZ77/LZ78) и Burrows-Wheeler. Упаковщики gzip, bzip2. Архиватор и упаковщик zip.