Проверочная № 1
Формат проведения проверочной работы
Проверочная работа будет проходить в удалённом режиме. Всем студентам будет одновременно выдано проверочное задание. Время выполнение задания — 1.5 часа с момента начала.
Задание для всех студентов выдаётся одинаковое. Совместное решение задач запрещено. При наличии признаков совместного решения всем участникам будет зачтена оценка 0.
Для каждого задания необходимо разработать Bash-скрипт, решающий поставленную задачу. Все скрипты необходимо объединить в архив и загрузить в качестве ответа на Moodle.
Проверяемые знания
- Базовое использование командного интерфейса.
- Понятие текущего рабочего каталога. Знание особенностей использования абсолютных и относительных путей. Изменение текущего рабочего каталога.
- Манипулирование структуры каталогов файловой системы. Копирование, перемещение и удаление файлов и каталогов.
- Понятие о типах команд в Bash. Чтение руководств и встроенной помощи в зависимости от типа команды.
- Знание структуры файловой системы Linux: назначение каталогов и их структура.
- Перенаправление потоков ввода-вывода, использование конвееров. Знание типичных фильтров для обработки данных.
- Расширение строк в Bash: расширение пути, расширение скобок, арифметическое расширение, расширение параметров, подстановка команд.
- Права доступа к файлам в Linux, изменение прав текстовым и буквенным способом, изменение владельца и группы файлов.
- Написание скриптов на языке Bash.
- Проверка качества исходного кода с помощью ShellCheck.
Задача
Предположим, что мы проводим анализ текстовых работ, которые пришли в качестве ответов на задание в Moodle. Работы студентов лежат в следующей структуре каталогов:
$ tree -f students
students
└── source/
├── Комаров Сергей Юрьевич/
│ └── zadacha otvet.txt
├── Петров Василий Игоревич/
│ └── ответ.txt
└── Чесарова Дарья Михайловна/
└── text-one.txt
В исходном каталоге есть подкаталог source
, в котором для каждого студента есть отдельный каталог. В каталоге студента существует ровно один текстовый файл, содержащий ответ студента. В названиях каталогов скорее всего есть пробелы. В названиях файлов со сданными работами могут присутствовать пробелы, файлы не обязательно заканчиваются расширением .txt
.
Необходимо написать скрипт, который поможет преподавателю в выставлении оценок за представленные работы. Скрипт принимает на вход путь к каталогу с данными. В примере это каталог students
.
Затем скрипт для каждого студента выполняет следующие действия:
- Печатает имя студента.
- С помощью приложения less открывает файл.
- Просит пользователя вести оценку работы для данного студента. В качестве оценки может выступать любое значение, однако предполагается ввод числа от 0 до 6.
- В зависимости от оценки распределяет каталоги с данными студентов в каталоги с соответствующими оценками.
Пример обработки исходных данных скриптом:
$ tree -F students
students
├── results/
│ ├── 3/
│ │ └── Петров Василий Игоревич/
│ │ └── ответ.txt
│ └── 4/
│ ├── Комаров Сергей Юрьевич/
│ │ └── zadacha otvet.txt
│ └── Чесарова Дарья Михайловна/
│ └── text-one.txt
└── source/
Если скрипту будет передано недостаточно аргументов, то он должен сообщать об этом пользователю.
Если скрипту в качестве аргумента был передан путь не к каталогу, то скрипт должен сообщать об ошибке и завершать свою работу.
Скрипт не должен содержать ошибок согласно проверкам ShellCheck.
Дополнительно следует реализовать следующие проверки:
- В каталоге с исходными данными присутствует каталог source.
- В каталоге с ответом студента находится ровно 1 файл.
- Ответ студента представляет собой именно текстовый файл.