Проверочная №1. ИТ-2
Формат проведения проверочной работы
Проверочная работа будет проходить в удалённом режиме. Всем студентам будет одновременно выдано проверочное задание. Время выполнение задания — 3 часа с момента начала.
Задание для всех студентов выдаётся одинаковое. Совместное решение задач запрещено. При наличии признаков совместного решения всем участникам будет зачтена оценка 0.
Для каждого задания необходимо разработать Bash-скрипт, решающий поставленную задачу. Все скрипты необходимо объединить в архив и загрузить в качестве ответа на Moodle.
Проверяемые знания
- Базовое использование командного интерфейса.
- Понятие текущего рабочего каталога. Знание особенностей использования абсолютных и относительных путей. Изменение текущего рабочего каталога.
- Манипулирование структуры каталогов файловой системы. Копирование, перемещение и удаление файлов и каталогов.
- Понятие о типах команд в Bash. Чтение руководств и встроенной помощи в зависимости от типа команды.
- Знание структуры файловой системы Linux: назначение каталогов и их структура.
- Перенаправление потоков ввода-вывода, использование конвееров. Знание типичных фильтров для обработки данных.
- Расширение строк в Bash: расширение пути, расширение скобок, арифметическое расширение, расширение параметров, подстановка команд.
- Права доступа к файлам в Linux, изменение прав текстовым и буквенным способом, изменение владельца и группы файлов.
- Написание скриптов на языке Bash.
- Проверка качества исходного кода с помощью ShellCheck.
Задача №1. Создание структуры проекта
Допустим, что мы работаем в мебельной фирме. Для каждого заказчика необходимо сформировать каталог проекта, который должен содержать:
- Модель мебелировки комнаты.
- Каталог с библиотекой мебельных элементов.
- Каталог с чертежами, полученных из модели.
В каждом из созданных каталогов должен находиться файл info.txt
, содержащий текстовое сообщение о том какую информацию необходимо разместить в данном каталоге.
Скрипт должен принимать в качестве аргумента путь к несуществующему каталогу, который необходимо создать и в котором необходимо создать структуру каталогов.
- Если скрипту не будет передан путь к каталогу, то он должен сообщать пользователю, что скрипту необходимо передать путь к несуществующему каталогу.
- Если скрипту передан путь к существующему каталогу, то скрипт должен завершить работу, указав, что необходимо указать путь к несуществующему каталогу.
Скрипт не должен содержать ошибок согласно проверкам ShellCheck.
Задача №2. Создание архива документов
При удалённой форме обучения для одной темы может быть сформировано несколько видео файлов. Для удобства их выкладывания необходимо брать данные файлы из разных каталогов и складывать в целевой каталог. При перемещении в целевой каталог их необходимо переименовывать.
Пример исходного каталога:
$ tree video
video
├── source-1/
│ └── video.mp4
└── source-2/
└── video.mp4
Пример вызова скрипта и результирующего каталога
$ ./store-videos.sh destination/2020-07-15/ video/source-1/video.mp4 video/source-2/video.mp4
$ tree destination
destination
└── 2020-07-15/
├── video-1.mp4
└── video-2.mp4
Первым аргументом скрипта должен быть несуществующий каталог, в который необходимо поместить данные. Следующие аргументы (произвольное количество) описывают файлы, которые необходимо переместить в целевой каталог.
Имена файлов при перемещении должны изменяться на video-НОМЕР.mp4
, где НОМЕР
- это порядковый номер видео файлов в аргументах скрипта.
Если скрипту будет передано недостаточно аргументов, то он должен сообщать об этом пользователю.
Если скрипту вместо файла для копирования был передан неправильный путь, то скрипт должен сообщать о проблеме и не пытаться копировать данный файл.
Скрипт не должен содержать ошибок согласно проверкам ShellCheck.