1 / Документ DOCX
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра Программная инженерия
ОТЧЕТ
по лабораторной работе №1
по дисциплине «Основы DevOps»
Тема: «Linux: базовое взаимодействие»
Выполнил: студент группы БВТ2402
Кудряшов Вадим Георгиевич
Проверил: Тимчук А.В.
Цель работы
Изучить базовое устройство Linux;
Научиться взаимодействовать с ОС Linux;
Научиться писать bash-скрипты
Индивидуальное задание
Написать bash-скрипт для удаления файлов по заданному имени из указанной директории, а также предусмотреть флаг -p для удаления по шаблону.
Скриншоты выполнения
Создали файл с будущим скриптом в директории labs/lab1
Сделали его исполняемым
Добавили проверки на: пустое поле, режим работы скрипта (шаблон или конкретный файл), наличие второго параметра в режиме шаблона.
$# - количество переданных параметров
-eq – проверка на равность (у чисел)
= - проверка на равность (у строк)
-lt – меньше чем
Добавили проверку в Current file mode, существует ли заданный параметр и является ли он файлом.
! -f – если файл НЕ существует или НЕ является файлом
добавили проверку удаления и саму команду удаления (пока только в режиме конкретного файла)
read – ожидает ввод и сохраняет в переменную answer
Добавили в Pattern mode поиск файлов по шаблону, для этого взяли ls и передали его команде grep, которая ищет файлы в названии которых содержится $2
Вывод
консоли:
Добавил проверку если файлов вообще нет
-z – проверяет пустая ли строка
Вывод консоли:
Добавили само удаление в режиме шаблона
Работа
скрипта в терминале:
Исходный код программы
#!/bin/bash
# check params
if [ $# -eq 0 ]; then
echo "Error! There is no params"
echo "Using: $0 [-p] <file_name_or_pattern>"
exit 1
fi
#check mode (if -p - it's pattern mode)
if [ "$1" = "-p" ]; then
echo "Pattern mode"
#check second param
if [ $# -lt 2 ]; then
echo "Error: missing pattern after -p"
exit 1
fi
echo "All patterns:"
echo "${@:2}"
echo ""
for pattern in "${@:2}"; do
echo "Processin pattern: $pattern"
FILES=$(ls | grep "$pattern")
# if no files
if [ -z "$FILES" ]; then
echo "No files found with pattern '$pattern'"
echo ""
continue
fi
echo "Found files:"
echo "$FILES"
echo ""
echo "Do you want to delete this file (y/n)"
read answer
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
echo "Deleting..."
rm $FILES
else
echo "Deletion cancelled"
echo ""
continue
fi
done
else
echo "Current file mode"
for file in "$@"; do
echo "Processin file: $file"
#file check
if [ ! -f "$file" ]; then
echo "Error: File '$file' does not exists"
continue
fi
echo "File '$file' exists"
#submit deletion
echo "Do you want to delete this file (y/n)"
read answer
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
echo "Deleting..."
rm "$file"
else
echo "Deletion cancelled"
continue
fi
done
fi
Заключение
В ходе выполнения лабораторной работы были успешно решены следующие задачи:
Изучил методические материалы к лабораторной работе;
Написал bash-скрипт для удаления файлов по заданному имени из указанной директории, а также предусмотрел флаг -p для удаления по шаблону
Контрольные вопросы
Что такое Linux?
Linux - это компьютерная операционная система, разработанная на основе модели открытого исходного кода.
В чём отличие переменных окружения от переменных оболочки?
Переменные окружения передаются всем системным процессам и программам и наследуются дочерними процессами. Переменные оболочки же живут пока выполняется скрипт или сессия.
С помощью какой команды изменяются права доступа к файлу?
chmod
