Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ
УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Лабораторная работа № 2
по дисциплине «Операционные системы»
на тему «Управляющие операторы командного языка»
Выполнил студент:
специальности 27.03.04
Жуков Сергей Андреевич
2022 год
Содержание
Задание 3
Список использованных источников 7
Задание Требуется разработать программу на языке shell (без использования команды find), выполняющую поиск в заданном поддереве файловой структуры всех файлов, имена которых отвечают заданному шаблону. Результатом работы программы является перечень имен искомых файлов на экране.
Вложенный скрипт выполняет поиск в заданном каталоге искомых файлов, а для каждого подкаталога вызывает точно такой же скрипт. (При выполнении любого скрипта запускается новый экземпляр shell, поэтому рекурсивное выполнение скриптов не приводит к каким-либо трудностям.)
Примечание. Программа состоит из двух скриптов. Главный скрипт выполняет вывод на экран приглашения ввести с клавиатуры имя-путь начального каталога и шаблон поиска. Далее он выполняет ввод этих данных с клавиатуры и выводит на экран перечень искомых файлов в начальном каталоге поиска (если они там есть). Затем он вызывает для каждого подкаталога вложенный скрипт, передав ему два входных параметра: 1) относительное имя подкаталога; 2) шаблон поиска.
Решение
Содержимое обоих файлов программы выложим в соответствующих листингах.
Листинг 1
Содержимое файла lr2
globmatch () {
case "$1" in
$2)
return 0;
;;
*)
return 1;
;;
esac
} echo "Enter directory to search in:"
read Dir
echo "Enter pattern to search for:"
read Pat for File in $Dir/*; do
if [ -d $File ]; then
# echo "$File: directory"
# recurse_into_directory
sh lr2_p2 $File $Pat
elif globmatch "$File" "*$Pat*"; then
echo "Found match: $File"
else
:
# echo "$File: file not following our pattern"
fi
done Листинг 2
Содержимое файла lr2_p2
globmatch () {
case "$1" in
$2)
return 0;
;;
*)
return 1;
;;
esac
} #echo "Enter directory to search in:"
#read Dir
#echo "Enter pattern to search for:"
#read Pat for File in $1/*; do
if [ -d $File ]; then
# echo "$File: directory"
# recurse_into_directory
sh lr2_p2 $File $Pat
elif globmatch "$File" "*$2*"; then
echo "Found match: $File"
else
:
# echo "$File: file not following our pattern"
fi
done
Результат работы программы изобразим на рисунке 1.
Рис. 1 Результат работы программы
1. Таненбаум Э. С. Современные операционные системы / Э. С. Таненбаум. – 3-е изд. – СПб. : Питер, 2010. – 1040 с.
2. Одиноков В. В. Операционные системы / В. В. Одиноков, В. П. Коцубинский. – Томск : ТУСУР, 2006. – 342 с.
3. Одиноков В. В. Операционные системы и сети / В. В. Одиноков, В. П. Коцубинский. – Томск : ТУСУР, 2008. – 395 с.
4. Дунаев С. UNIX SYSTEM V. Releas 4.2 : Общее руководство / С. Дунаев. – М. : ДИАЛОГ-МИФИ, 1995. – 287 с.
5. Рейчард К., Фостер-Джонсон Э. UNIX : справочник / К. Рейчард, Э. Фостер-Джонсон. – СПб. : Питер, 2000. – 384 с.
6. Робачевский А. Операционная система UNIX / А. Робачевский. – СПб. : БХВ – Санкт-Петербург, 1999. – 528 с.
7. Соловьев А. А. Программирование на shell / А. А. Соловьев. – М. : Финансы и статистика, 1999. – 318 с.
8. Столлингс В. Операционные системы. Внутреннее устройство и принципы проектирования / В. Столлингс. – М. : Вильямс, 2002. – 848 с.
9. Олифер В. Г. Сетевые операционные системы / В. Г. Олифер, Н. А. Олифер. – СПб. : Питер, 2001. – 544 с.
10. PuTTY Download Page [Электронный ресурс]. – Режим доступа: http://www.chiark.greenend.org.uk/sgtatham/putty/download.html (дата обращения: 23.02.2017).
11. Установка Ubuntu Linux : инструкция для пользователя Windows [Электронный ресурс]. – Режим доступа: http://help.ubuntu.ru/ wiki/ubuntu_install (дата обращения: 23.02.2017). |