ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
ФАКУЛЬТЕТ ИНФОКОММУНИКАЦИОННЫХ СЕТЕЙ И СИСТЕМ (ИКСС)
КАФЕДРА ПРОГРАММНОЙ ИНЖЕНЕРИИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ (ПИ И ВТ)
ДИСЦИПЛИНА: «Операционные системы и сети»
Лабораторная работа №2.
Программирование на Shell Linux
Выполнил:
Цыганков М.А.
Козлов Н.С.
Тюришев М.А.
Подпись____________
Принял:
Дагаев А.В.
Подпись____________
«_____»________ 2021
Цель работы
Разработать программу по обработке информации с применением операторов и команд на Shell Linux;
Постановка задачи
Написать скрипт, который будет реализовывать создание файлов, их удаление и вывод в терминал GNU bash в отсортированном формате по имени или размеру. Взаимодействие со скриптом должно быть реализовано путем выбора нужного действия.
Ход работы
Описание алгоритма:
Создать файлы, удалить или перейти к следующему функционалу
Если было выбрано создание, то создается 20 файлов с порядковыми именами [1.txt, 2.txt…20.txt]
Заполнение каждого файла по порядку n (n.txt) количеством строк
Если было выбрано удаление файлов, то все 20 файлов удаляются
Если было выбрано показать следующий функционал, то предоставляется на выбор отсортированный вывод файлов в терминал GNU bash по имени или по размеру
Если был выбран отсортированный вывод файлов по имени, то одной колонкой выводится список файлов, отсортированный по имени по возрастанию
Если был выбран отсортированный вывод файлов по размеру, то одной колонкой выводится список файлов, отсортированный по размеру по убыванию
Демонстрация работы
Рис. 1 – Результат работы команды «create»
Рис. 2 – Результат работы команды «remove»
Рис. 3 – Результат работы команды «next» и «name»
Рис. 4 – Результат работы команды «next» и «size»
Вывод
В ходе выполнения лабораторной работы, было изучено средство автоматизации Shell Linux и сопутствующий ему язык сценариев.
Код программы
#script
#!/bin/bash
#create or remove or next ignore filework
printf "%s create or remove or next filework: "
read answer
if [ "$answer" = "create" ]; then
for((a=1; a<=20; a++))
do
touch $a.txt
for((b=0; b<$a; b++))
do
echo "->content<-">>$a.txt
done
done
elif [ "$answer" = "remove" ]; then
for((file_name=1; file_name<=20; file_name++))
do
rm $file_name.txt
done
elif [ "$answer" = "next" ]; then
printf "%s name or size: "
read answer
if [ "$answer" = "name" ]; then
ls -1v
elif [ "$answer" = "size" ]; then
ls -1S
else
echo "ERROR 404"
fi
fi
