Пропустить навигацию.
Главная

Спецификация к первой лабораторной работе на BASH

Лабораторная работа №1
Версия 2
1) Описание.
Процедура должна копировать из каталога FROM в подкаталог с таким же именем в каталоге TO файлы с расширениями из за данного списка.
первый - FROM имя подкаталога в текущем каталоге;
второй - TO имя каталога;
третий и далее - расширения имен файлов.
Операционная система: Unix
Язык реализации: Bash
2) Интерфейс
2.1 Входные данные
2.1.1. Параметры вызовы
prog < Catalog2 > [ …]
Catalog1 – краткое имя подкаталога в текущем каталоге
Catalog2 – полное или относительное имя каталога
file1, file2 - расширения имён файлов в каталоге Catalog1
Расширение – это содержимое в кратком имени файла после точки, в случае отсутствия точки в кратком названии файла, то расширение пустое.
Должны состоять из символов ".", "-", английских и русских символов и цифр. Если имя каталога Catalog1 или Catalog2 содержит пробелы, то соответствующий входной параметр ввода должен быть заключён в кавычки.
Каждый параметр должен разделён пробелом. Первые два параметра - обязательные.

2.1.2. Информационное окружение и структура файлов.
В текущем каталоге должен существовать подкаталог Catalog1 с правами записи, чтения и исполнения (r-x).
Все файлы в Catalog1 должны иметь разрешение для чтения.
В подкатологе Catalog1 могут находятся файлы с разными расширениями.
Каталог Catalog2 должен существовать и иметь права -(w – если каталог Catalog2\Catalog1 не существовал до запуска программы)x
В каталоге Catalog2 должен быть каталог Catalog1, т.е. Catalog2\Catalog1 c правами –wx или отсутствовать.

2.1.3. Данные вводимые пользоваталем.

2.2 Выходные данные
2.2.1 Коды возврата программы (целое число).
Программа возвращает код возврата 1, 2 или 0.

2.2.2 Информационное окружение и структура файлов после выполнения.
После выполнения программы, в текущем каталоге должен остаться Catalog1. Если в этом каталоге изначально были какие-либо файлы и папки, то они должны остаться нетронутыми. В папке Catalog2 должна создаться папка Catalog1 (если там не существовала раньше), в которой будет находится каждый из файлов из папки Catalog1, расширение имени которого будет содержаться в одном из параметров вызова: file1, file2 и т.п.
2.2.3 Сообщения программы.

№ Сообщение Комментарий
1 Catalog1 not existing Каталог Catalog1 не найден в текущей директории
2 Wrong format Пользователь вызвал программу с несоответствующими пункту 2.1.1 параметрами.
3 Catalog not existing Проблемы с вводом-выводом
4 Unable to copy files Проблемы с вводом-выводом
5

3. Функциональные требования.
3.1 Преобразования.
Если пользователь запустил программу с параметрами не в соответствии с требованиями в пункте 2.1.1, то программа должна вывести на экран Сообщение № 2 и завершbтся с кодом возврата 1.
Иначе, программа должна проверить все файлы в Catalog1, каждый из которых имеют расширение описанные в 2.1.1, на наличие прав на чтение (-r) и в случае неуспешной проверки программа должна вывести на экран Сообщение № 4 и завершиться с кодом возврата 1.
Если каталог Catalog2 не существует, то программа должна вывести на экран Сообщение №3 и завершиться с кодом возврата 1
Если каталог Catalog1 не существует, то программа должна вывести на экран Сообщение №3 и завершиться с кодом возврата 1
Если у каталога Catalog1 или у каталога Catalog2 отсутствуют права на rx и на -(w – если каталог Catalog2\Catalog1 не существовал до запуска программы)x соответственно, то программа должна вывести на экран Сообщение №3 и завершиться с кодом возврата 1.
Если Catalog2\Catalog1 существует и не имеет права –wx, то программа должна вывести Сообщение №3 и завершится с кодом возврата 1.
Если Catalog2\Catalog1 не существует, то программа должна создать его с правами –wx.
Дальше программа должна скопировать только те файлы из Catalog1 в Catalog2, у которых расширение совпадает с одним или несколькими элементами из списка необязательных параметров вызова данной программы и выставить им права rwx. В случае возникновения ошибки при копировании, программа должна вывести на экран Сообщение № 4 и завершиться с кодом возврата 2. Иначе программа должна завершиться с кодом возврата 0.

4. Тест- требования.
4.1. Проверить, что если не существует директория Catalog1 в текущем каталоге, то программа выводит Сообщение № 1 и завершатся с кодом возврата 1.
4.2. Проверить, что если отсутствуют права для директорий Catalog1, Catalog2 или Catalog2\Catalog1 соответственно r-x, -(w – если каталог Catalog2\Catalog1 не существовал до запуска программы)x, -wx то программа выводит Сообщение № 3 и завершается с кодом возврата 1.
4.3. Проверить, что если передано менее двух параметров, то программа выводит Сообщение № 2 и завершается с кодом возврата 1.
4.4. Проверить, что права доступа каждого созданного файла выставлены rwx.
4.5. Проверить, что содержимое директории Catalog1 не изменилось, кроме как в директории Catalog2 была создана директория Catalog1, если её не было изначально.
4.6. Проверить, что права доступа созданной папки catalog2 выставлены rwх.
4.7. Проверить, что имя каталога Catalog1 и Catalog2 может содержать пробелы.
4.8. Проверить, что если существует такая же папка Catalog2 в Catalog1 до начала работы программы, то выводится на экран Сообщение № 3 и программа завершается с кодом возврата 1.
4.9 Проверить, что скопировались все файлы с заданными разрешениями.
4.10 Проверить, что в директории Catalog2 была создана директория Catalog1 с правами -wx, если её не было изначально.
4.11 Проверить, что в случае возникновения ошибки при копировании, программа должна вывести на экран Сообщение № 4 и завершиться с кодом возврата 2