|
Отчет по лабораторной работе 21 по курсу " Практикум на эвм "
Отчет по лабораторной работе № 21 по курсу “ Практикум на ЭВМ ” Студент группы М8О-102Б-21, Бутырин Иван Алексеевич, № по списку 5, вариант 10 Контакты www, e-mail, icq, skype: ynikiivan@mail.com Работа выполнена: « » ____________201___г. Преподаватель: Никулин Сергей Петрович Каф.806________________________ Входной контроль знаний с оценкой _____________________ Отчет сдан « » _________201 __ г., итоговая оценка _____ Подпись преподавателя ________________
Тема: Программирование на интерпретируемых командных языках Цель работы: Научиться программировать на интерпретируемом командном языке (bash) Задание (вариант 10):
Оборудование:
Оборудование ПЭВМ студента:
Процессор: AMD Ryzen 5 4500U, с ОП 8 Мб (виртуальная машина), НМД 51200 Мб. Монитор: Huawei 16,1 IPS 1920×1080, 137 PP.
Программное обеспечение ЭВМ студента, если использовалось: Операционная система семейства Linux, наименование Ubuntu, версия 22.04
Прикладные системы и программы: терминал OC UNIX, текстовый редактор emacs
Идея, метод, алгоритм решения задачи (в формах: словесной, псевдокода, графической [блок-схема, диаграмма, рисунок, таблица] или формальные спецификации с пред- и постусловиями)
Пользователь вводит имя файла. Реализовано бесконечным циклом while для ввода.
Скрипт выполняет проверку по имени на то, существует ли этот файл. Далее выделяем из имени суффикс при помощи комбинации команд basename и sed. Далее находим список всех файлов с данным суффиксом. Далее в цикле for скрипт проходит по одноименным файлам и при помощи команды diff -s определяет идентичны ли файлы. Если идентичны - выполняется тело цикла if-then, которое позволяет удалить идентичные исходному файлы командой rm. При этом выводится список удаленных файлов.
Сценарий выполнения работы [план работы, первоначальный текст программы в черновике (можно на отдельном листе) и тесты либо соображения по тестированию].
Пункты 1-7 отчета составляются строго до начала лабораторной работы. Допущен к выполнению работы. Подпись преподавателя___________________
Распечатка протокола (подклеить листинг окончательного варианта программы с тестовыми примерами, подписанный преподавателем)
#!/bin/bash
while [ 0 ]
do
echo "Введите имя файла:"
read input
while [[ ! "$input" = "." ]] || [[ "$input" = "?" ]]; do
echo -e "Необходимо ввести имя файла, копии которого требуется удалить, в формате prefix.suffix."
read input
done
file=$(find -nowarn -name "$input" || echo 1) if [ $file ]
then
suff=$(basename $file | sed 's/^.*\.//')
echo "Суффикс файла: $suff" list=$(find -type f -name "*.$suff" | grep -v $file)
echo -e "Найдено файлов, имеющих суффикс $suff:\n$list"
echo "Удаленные копии:" for var in $list
do
delta=$(diff -s $var $file)
if [[ "$delta" == *"are identical"* ]]
then
echo "$var"
rm $var
fi
done
echo else
echo -e "Такого файла не существует.\n"
fi
done
Введите имя файла:
ivan
Необходимо ввести имя файла, копии которого требуется удалить, в формате prefix.suffix.
ivan.c
Такого файла не существует. Введите имя файла:
A.txt
Суффикс файла: txt
Найдено файлов, имеющих суффикс txt:
./B.txt
./C.txt
./D.txt
./E.txt
./f.txt Удаленные копии:
./D.txt
./f.txt Введите имя файла:
=
Необходимо ввести имя файла, копии которого требуется удалить, в формате prefix.suffix.
1.jpg
Суффикс файла: jpg
Найдено файлов, имеющих суффикс jpg:
./2.jpg
./3.jpg
./4.jpg
./5.jpg Удаленные копии:
./1.jpg
./4.jpg Введите имя файла:
^Z
Дневник отладки должен содержать дату и время сеансов отладки, и основные события (ошибки в сценарии и программе, нестандартные ситуации) и краткие комментарии к ним. В дневнике отладки приводятся сведения об использовании других ЭВМ, существенном участии преподавателя и других лиц в написании и отладке программы.
№
| Лаб.
| Дата
| Время
| Событие
| Действие по исправлению
| Примечание
|
| или
|
|
|
|
|
|
| дом.
|
|
|
|
|
|
|
|
|
|
|
|
|
Замечания автора по существу работы: - Выводы:
Я изучил способы написания программ на интерпретируемом языке OC UNIX и реализовал их на практике. Подпись студента _________________ |
|
|