Лабораторная работа № 1
Формат проведения проверочной работы
Проверочная работа будет проходить в удалённом режиме. Всем студентам будет одновременно выдано проверочное задание. Время выполнение задания — 1.5 часа с момента начала.
Задание для всех студентов выдаётся одинаковое. Совместное решение задач запрещено. При наличии признаков совместного решения всем участникам будет зачтена оценка 0.
Для каждого задания необходимо разработать Bash-скрипт, решающий поставленную задачу. Все скрипты необходимо объединить в архив и загрузить в качестве ответа на Moodle.
Проверяемые знания
- Базовое использование командного интерфейса.
- Понятие текущего рабочего каталога. Знание особенностей использования абсолютных и относительных путей. Изменение текущего рабочего каталога.
- Манипулирование структурой каталогов файловой системы. Копирование, перемещение и удаление файлов и каталогов.
- Понятие о типах команд в Bash. Чтение руководств и встроенной помощи в зависимости от типа команды.
- Знание структуры файловой системы Linux: назначение каталогов и их структуры.
- Перенаправление потоков ввода-вывода, использование конвееров. Знание типичных фильтров для обработки данных.
- Расширение строк в Bash: расширение пути, расширение скобок, арифметическое расширение, расширение параметров, подстановка команд.
- Написание скриптов на языке Bash.
- Проверка качества исходного кода с помощью ShellCheck.
Задача
Реализуйте следующее приложение с помощью Bash-скрипта. Помимо самого скрипта Вам необходимо также предоставить текстовый документ, который описывает работу с данным скриптом. Если руководства по использованию скрипта нет, то за это будет снижена оценка.
Вам необходимо реализовать систему для анализа журналов проездов автомобилей через контрольно-пропускной пункт. В журнале указана следующая информация:
- Время проезда автомобиля. Формат:
ЧЧ:ММ
, пример07:53
. - Направление проезда. 1 слово:
заезд
,выезд
. - Номер автомобиля. 1 слово, формат:
A537PT76
. - Марка автомобиля. 1 слово, формат:
ВАЗ
. - Комментарий в произвольной форме.
Проезд в компанию «Рога и копыта»
.
Данные поля разделяются запятой.
Журнал за каждый день записывается в отдельный файл, имя которого — дата в формате ГГГГ-ММ-ДД.csv
, например 2021-11-10.log
. Журналы верны, в них нет нарушений.
Архив с примером журналов можно скачать по ссылке.
Скрипт должен решать следующие задачи:
- Для каждого отдельного дня высчитывать:
- Количество машин, проехавших через КПП внутрь.
- Количество машин, проехавших через ПКК наружу.
- Количество отечественных машин, проехавших через КПП (в оба направления). Отечественными считаются марки
ВАЗ
,ГАЗ
,УАЗ
,AURUS
,КАМАЗ
,ЛИАЗ
,ПАЗ
.
- Для журналов всех дней:
- Разница между общим количеством автомобилей, заехавших на территорию, и выехавших с неё.
- Количество автомобилей (в оба направления), проехавших в первой половине дня (до 12:00).
- Количество автомобилей (в оба направления), проехавших во второй половине дня (после 12:00).
Дополнительно. Найти автомобили, которые проехали через КПП нечётное количество раз.