|
ИВАНЬКО Методичка Операционные системы 2012. Методические указания для практических занятий и выполнения лабораторных работ для студентов, обучающихся по специальности 230400 Информационные системы и технологии
Лабораторная работа №8
Программирование shell-процедур. Работа предусматривается выполнение индивидуального задания повышенной сложности. Работа предусматривает несколько выходов на машину для отладки процедуры.
Отчетом по работе является работающая процедура, продемонстрированная преподавателю с объяснениями её текста и алгоритма работы. Выполнение лабораторной работы в полном объеме является обязательным условием для получения по курсу в целом экзаменационной оценки – «отлично».
Индивидуальные задания к лабораторной работе Вариант 1.
Написать shell-процедуру, которая:
вводит передаваемое в качестве 1-го параметра количество символьных строк;
в каждой введенной строке ищет подстроку, передаваемую в качестве второго параметра;
заменяет каждую найденную подстроку на строку, передаваемую в качестве третьего параметра;
выводит на экран каждую введенную строку и соответствующую ей новую строку.
Вариант 2.
Написать shell-процедуру, которая:
вводит 2 символьные строки;
в каждой введенной строке ищет подстроку, передаваемую в качестве параметра;
заменяет каждую найденную подстроку на пробел;
образует из полученных строк третью строку так, чтобы в ней чередовались слова из первой и второй строк;
выводит на экран введенные строки и новую строку.
Вариант 3.
Написать shell-процедуру, которая:
вводит символьную строку;
во введенной строке ищет подстроку, передаваемую в качестве первого параметра;
вставляет после каждой найденной подстроки символ, передаваемый в качестве второго параметра;
удаляет из полученной строки символ, передаваемый в качестве третьего параметра;
выводит на экран введенную и новую строку.
Вариант 4.
Написать shell-процедуру, которая:
вводит символьную строку;
проверяет введенную строку на совпадение со строкой, переданной в качестве 1-го параметра;
если строки совпадают, то выдает на экран приглашение повторить ввод;
если не совпадают, то сравнивает длину введенной строки с длиной 2-го параметра, и, в случае их равенства, выводит на экран введенную строку в обратном порядке составляющих ее символов;
Вариант 5.
Написать shell-процедуру, которая:
вводит символьную строку;
проверяет введенную строку на совпадение со строками, содержащимися в файле, имя которого передается в качестве 1-го параметра;
для всех найденных совпадений заменяет соответствующие строки в файле на строку, переданную в качестве 2-го параметра;
выводит на экран старое и новое содержимое файла, а также число найденных совпадений;
Вариант 6.
Написать shell-процедуру, которая:
вводит символьную строку, содержащую маршрутное имя некоторого файла; проверяет введенное маршрутное имя, если оно начинается с символа /, на совпадение его первой части с маршрутным именем домашнего каталога пользователя;
если введенное маршрутное имя содержит маршрутное имя домашнего каталога или является относительным, то проверяет существование указанного файла, в противном случае выводит на экран сообщение об ошибке;
если файл существует, то выводит на экран его содержимое;
если файл не существует, то создает его и записывает в него строку, передаваемую в качестве параметра;
Вариант 7.
Написать shell-процедуру, которая:
вводит символьную строку, содержащую имя некоторого файла;
проверяет наличие файла в домашнем каталоге или в одном из подкаталогов;
если файл существует, то выводит на экран его содержимое;
если файл не существует, то создает его и записывает в него с консоли некоторый текст;
устанавливает для файла права доступа, передаваемые в качестве параметра.
Вариант 8.
Написать shell-процедуру, которая:
вводит символьную строку, содержащую текст некоторого сообщения;
проверяет наличие в своем почтовом ящике такого же сообщения;
если в почтовом ящике имеется введенное сообщение, то выводит его на экран и посылает на терминалы всем пользователям, в данный момент работающим в системе из числа тех, чьи имена передаются в качестве параметров;
всем остальным пользователям, чьи имена передаются в качестве параметров, рассылает введенное сообщение по почте;
Вариант 9.
Написать shell-процедуру, которая:
вводит символьную строку, содержащую текст некоторого сообщения;
проверяет регистрацию в системе пользователей, чьи имена переданы вторым и последующими параметрами;
всем пользователям, чьи имена передаются в качестве второго и следующих параметров и работающим в системе в течение заданного первым параметром времени, рассылает введенное сообщение по почте;
всем остальным пользователям, работающим в данный момент в системе, рассылает прямые сообщения, содержащие введенную символьную строку.
Вариант 10.
Написать shell-процедуру, которая:
проверяет свой почтовый ящик на наличие в нем сообщений;
находит в почтовом ящике одинаковые по тексту сообщения;
всем пользователям, приславшим более одного сообщения с одинаковым текстом, рассылает по почте сообщения, текст которого содержится в файле, имя которого передается в качестве параметра.
Вариант 11.
Написать shell-процедуру, которая:
удаляет из заданного первым параметром каталога и всех подкаталогов файлы, дата последней модификации которых предшествует текущей дате минус число дней, переданное в качестве второго параметра;
изменяет дату последней модификации всех остальных файлов указанного каталога на текущую без изменения содержимого файлов.
Вариант 12.
Написать shell-процедуру, которая:
выводит на экран список всех пользователей системы, включенных в заданную первым параметром группу пользователей;
для каждого из заданных третьим и следующими параметрами имен пользователей выводит на экран права доступа к заданному вторым параметром файлу.
Вариант 13.
Написать shell-процедуру, которая:
всем пользователям, работающим в данный момент в системе, имена которых задаются третьим и последующими параметрами, рассылает сообщения из файла, имя которого передается вторым параметром;
повторяет сообщения с периодичностью, задаваемой первым параметром;
прекращает выдачу сообщений при вводе слова quit.
Вариант 14.
Написать shell-процедуру, которая:
всем пользователям, не включенным в заданную первым параметром группу, посылает по почте сообщения о текущем времени и дате;
всем пользователям, включенным в заданную первым параметром группу, посылает по почте сообщения Нарру New Year!.
Вариант 15.
Написать shell-процедуру, которая:
вводит с терминала некоторое целое число;
всем пользователям, работающим в данный момент в системе, посылает сообщение о числе порожденных ими процессов;
тем пользователям, у которых число процессов больше введенного числа, посылает второе сообщение с предупреждением.
Вариант 16.
Написать shell-процедуру, которая:
вводит с терминала некоторое целое число;
всем пользователям, работающим в данный момент в системе, посылает сообщение о среднем числе процессов у каждого пользователя ;
тем пользователям, у которых число процессов больше среднего, посылает второе сообщение с предупреждением, если число процессов у них отличается от среднего больше, чем введенное целое число.
Вариант 17.
Написать shell-процедуру, которая:
все почтовые сообщения, полученные от заданного первым параметром пользователя, посылает работающим в данный момент в системе пользователям;
если в системе работает пользователь, приславший данное сообщение, то этому пользователю посылает сообщение, вводимое с терминала.
Вариант 18.
Написать shell-процедуру, которая:
всем пользователям, у которых есть больше 1 приостановленного процесса, посылает на терминал предупредительное сообщение;
если пользователь, получивший предупредительное сообщение, в течение 2 минут не ответит и не уменьшит число приостановленных процессов, то его имя записывается в заданный файл.
Вариант 19.
Написать shell-процедуру, которая:
периодически проверяет содержимое некоторого файла, хранящего имена пользователей, работавших в системе в заданный интервал времени;
если в файле имя пользователя встречается более 2-х раз, то такому пользователю выдается некоторое сообщение, текст которого передается в качестве второго параметра;
если требуемый пользователь в данный момент не работает в системе, то ему передается сообщение по почте.
Вариант 20.
Написать shell-процедуру, которая:
В заданном первым параметром каталоге находит все простые файлы, число ссылок на которые максимально, и удаляет их;
Удаляет все пустые каталоги;
Выдает на экран сообщения о каждом удаленном файле и каталоге.
Вариант 21.
Написать shell-процедуру, которая:
В заданном первым параметром каталоге находит все подкаталоги, число простых файлов в которых больше заданного вторым параметром числа
Удаляет найденные подкаталоги;
Выдает на экран сообщения о каждом удаленном каталоге.
Вариант 22.
Написать shell-процедуру, которая:
В заданном первым параметром каталоге находит все простые файлы, в которых содержится заданная вторым параметром символьная строка;
В найденных файлах удаляет все повторяющиеся строки;
Выводит на экран имена всех найденных файлов;
Вариант 23.
Написать shell-процедуру, которая:
В каталоге, имя которого передается первым параметром, находит все простые файлы размером более заданного вторым параметром;
Создает в указанном каталоге 3 новых каталога;
Помещает в созданные каталоги файлы из исходного каталога: в первый – файлы, содержащие одну строку с заданным словом, во второй – файлы с двумя такими строками, в третий – с тремя;
Имена всех файлов, не включенных в новые каталоги, выводит на экран
Вариант 24.
Написать shell-процедуру, которая:
В заданном первым параметром каталоге находит все простые файлы, в которых содержатся заданные вторым и третьим параметрами символьные строки;
В найденных файлах удаляет все повторяющиеся строки;
Выводит на экран имена всех полученных файлов;
Вариант 25.
Написать shell-процедуру, которая:
Находит в текущем каталоге все файлы, имена которых вводятся при работе процедуры по запросу, выводимому на экран;
В каждом найденном файле ищет строку, содержащую слово, переданное первым параметром;
Если такая строка имеется в файле, то на экран выводится ее номер (или номера, если таких строк несколько);
При отсутствии в файле таких строк выводит соответствующее сообщение
Вариант 26.
Написать shell-процедуру, которая:
Вычисляет значение арифметического выражения, заданного первыми 7 параметрами;
Сравнивает полученное значение с числом, вводимым при исполнении процедуры;
При совпадении результатов сравнения выводит на экран заданное выражение и его значение
Вариант 27.
Написать shell-процедуру, которая:
В заданном первым параметром файле находит все строки-омонимы;
Выводит на экран найденные строки;
Подсчитывает в каждой строке число символов, совпадающих с заданным вторым параметром символом, и выводит его на экран
Вариант 28.
Написать shell-процедуру, которая:
Определяет высоту поддерева каталогов, начиная от каталога, передаваемого в качестве первого параметра;
Выводит на экран полное маршрутное имя каталога, последнего в ветви поддерева максимальной длины
Вариант 29.
Написать shell-процедуру, которая:
Среди пользователей, работающих в данный момент времени в системе, находит пользователей, имена которых содержатся в файле, передаваемом в качестве первого параметра;
Выводит на экран найденные имена пользователей;
Тем пользователям, имена которых вводятся при исполнении процедуры, передает сообщение, текст которого содержится в файле (имя файла передается в качестве второго параметра)
Вариант 30.
Написать shell-процедуру, которая:
Читает содержимое первого файла, передаваемого в качестве первого параметра;
Выводит на экран каждые n секунд banner, текст которого содержится во втором файле, имя которого задается вторым параметром;
Очередное значение n содержится в очередной строке первого файла
Вариант 31.
Написать shell-процедуру, которая:
Читает содержимое первого файла, передаваемого в качестве первого параметра;
Читает содержимое второго файла, передаваемого в качестве второго параметра;
Находит в первом файле строку, содержащую заданное третьим параметром слово;
Вставляет содержимое второго файла после найденной строки первого файла;
Выводит на экран содержимое полученного файла
Вариант 32.
Написать shell-процедуру, которая:
Читает содержимое первого файла, передаваемого в качестве первого параметра;
Читает содержимое второго файла, передаваемого в качестве второго параметра;
Если число строк в первом и втором файлах одинаковое, то выводит на экран каждые 5 секунд попеременно строки из первого и второго файлов
Вариант 33.
Написать shell-процедуру, которая:
Читает содержимое первого файла, передаваемого в качестве первого параметра;
Читает содержимое второго файла, передаваемого в качестве второго параметра;
Выводит на экран каждые 7 секунд попеременно 2 строки из первого и 1 строку из второго файла, перемещаясь по файлам циклически
Вариант 34.
Написать shell-процедуру, которая:
Вводит символьную строку, содержащую некоторое целое число;
Читает содержимое файла, передаваемого в качестве первого параметра;
Выводит на экран каждые 6 секунд попеременно 2 строки из файла и 1 введенную строку, перемещаясь по файлу циклически
Вариант 35.
Написать shell-процедуру, которая:
Вводит символьную строку;
Читает содержимое файла, передаваемого в качестве первого параметра;
Выводит на экран каждые 6 секунд попеременно 2 строки из файла и 1 введенную строку, перемещаясь по файлу циклически
Вариант 36.
Написать shell-процедуру, которая:
Вводит символьную строку, содержащую два целых числа m и n, разделенных пробелами;
Читает содержимое файла, передаваемого в качестве первого параметра;
Выводит на экран каждые 5 секунд попеременно m строк из файла и n строк "Будь здоров"
Вариант 37.
Написать shell-процедуру, которая:
Вводит символьную строку, содержащую два целых числа m и n, разделенных пробелами;
Читает содержимое файла, передаваемого в качестве первого параметра;
Выводит на экран каждые m секунд попеременно n строк из файла и пустую строку
Вариант 38.
Написать shell-процедуру, которая:
Вводит символьную строку, содержащую три целых числа k,m и n, разделенных пробелами;
Читает содержимое файла, передаваемого в качестве первого параметра;
Выводит на экран каждые m секунд попеременно m строк из файла и n пустых строк
Вариант 39.
Написать shell-процедуру, которая:
Читает содержимое файла, передаваемого в качестве первого параметра;
Записывает через каждые 5 секунд в файл, имя которого передается в качестве второго параметра, попеременно строки из первого файла и текущее время и дату;
Выводит на экран каждые 7 секунд текущее содержимое второго файла;
При вводе с клавиатуры слова quit удаляет второй файл и завершает работу
Вариант 40.
Написать shell-процедуру, которая:
Читает содержимое файла, передаваемого в качестве первого параметра;
Создает новый файл, имя которого передается в качестве второго параметра;
Выводит на экран каждые 7 секунд очередную строку первого файла;
Сортирует все выведенные на экран строки первого файла по длине и записывает их в новый файл;
При вводе с клавиатуры слова quit удаляет новый файл и завершает работу
Вариант 41.
Написать shell-процедуру, которая:
Читает содержимое файла, имя которого вводится при исполнении процедуры;
Создает новый файл, имя которого передается в качестве параметра;
Выводит на экран каждые 6 секунд очередные 2 строки файла;
Сортирует выведенные на экран строки по длине и записывает их в новый файл;
При вводе с клавиатуры слова end удаляет второй файл и завершает работу
Вариант 42.
Написать shell-процедуру, которая:
Читает содержимое файла, передаваемого в качестве первого параметра;
Создает новый файл, имя которого передается в качестве второго параметра;
Записывает в новый файл строки первого файла в обратном порядке, вставляя после каждого слова фразу "THAT IS ALL" столько раз , сколько задано третьим параметром
Вариант 43.
Написать shell-процедуру, которая:
Читает содержимое файла, передаваемого в качестве первого параметра;
Создает в текущем каталоге цепочку подкаталогов с относительным маршрутным именем, повторяющим полное маршрутное имя текущего каталога;
Создает в последнем подкаталоге новый файл, имя которого передается в качестве второго параметра;
Записывает в новый файл строки первого файла в обратном порядке, вставляя после каждого слова фразу "THAT IS ALL" столько раз, сколько задано третьим параметром
Вариант 44.
Написать shell-процедуру, которая:
Читает содержимое файла, передаваемого в качестве первого параметра;
Создает в текущем каталоге цепочку подкаталогов с относительным маршрутным именем, повторяющим полное маршрутное имя текущего каталога;
Создает в последнем подкаталоге новый файл, имя которого передается в качестве второго параметра;
Записывает в новый файл строки первого файла в обратном порядке, вставляя после каждого слова фразу "THAT IS ALL" столько раз, сколько задано третьим параметром
Вариант 45.
Написать shell-процедуру, которая:
Читает содержимое файла, передаваемого в качестве первого параметра (в файле в каждой строке представлено одно целое число);
Проверяет правильность формата содержимого файла, при ошибках выводит соответствующие сообщения и завершает работу;
Подсчитывает сумму всех содержащихся в файле чисел;
Выводит на экран полученную сумму
Вариант 46.
Написать shell-процедуру, которая:
Читает содержимое файла, передаваемого в качестве первого параметра (в файле в каждой строке представлено по два целых числа, разделенных пробелами);
Проверяет правильность формата содержимого файла, при ошибках выводит соответствующие сообщения и завершает работу;
Подсчитывает сумму чисел в каждой строке файла;
Сортирует полученные суммы по убыванию и выводит их на экран
Вариант 47.
Написать shell-процедуру, которая:
Читает содержимое двух файлов, передаваемых в качестве первых параметров (в файлах в каждой строке представлено по одному целому числу);
Проверяет правильность формата содержимого файлов, при ошибках выводит соответствующие сообщения и завершает работу;
Выбирает одинаковые числа в первом и втором файлах;
Сортирует полученные числа по возрастанию и выводит их на экран
Вариант 48.
Написать shell-процедуру, которая:
Читает содержимое двух файлов, передаваемых в качестве первых параметров (в файлах в каждой строке представлено по одному целому числу);
Проверяет правильность формата содержимого файлов, при ошибках выводит соответствующие сообщения и завершает работу;
Суммирует числа из первого и второго файлов, расположенные в строках с одинаковым номером;
Сортирует полученные суммы по возрастанию и выводит их на экран
Вариант 49.
Написать shell-процедуру, которая:
Читает содержимое двух файлов, передаваемых в качестве первых параметров (в файлах в каждой строке представлено не более, чем по три целых числа, разделенных пробелами);
Проверяет правильность формата содержимого файлов, при ошибках выводит соответствующие сообщения и завершает работу;
Вычисляет суммы чисел в каждой строке;
Сортирует полученные положительные суммы по возрастанию и выводит их на экран
Вариант 50.
Написать shell-процедуру, которая:
Читает содержимое трех файлов, передаваемых в качестве первых параметров (в файлах в каждой строке представлено не более, чем по четыре целых числа, разделенных пробелами);
Проверяет правильность формата содержимого файлов, при ошибках выводит соответствующие сообщения и завершает работу;
Вычисляет произведения чисел в каждой строке;
Сортирует полученные произведения по возрастанию и выводит их на экран
Вариант 51.
Написать shell-процедуру, которая:
вводит передаваемое в качестве 1-го параметра количество символьных строк;
в каждой введенной строке ищет слово, передаваемую в качестве второго параметра;
заменяет каждую найденную подстроку на пустую строку;
выводит на экран каждую введенную строку и ее номер.
Вариант 52.
Написать shell-процедуру, которая:
вводит 3 символьные строки;
в каждой введенной строке ищет подстроку, передаваемую в качестве параметра;
заменяет каждую найденную подстроку на пробел;
образует из полученных строк четвертую строку так, чтобы в ней чередовались слова из первой, второй и третьей строк;
выводит на экран введенные строки и новую строку.
Вариант 53.
Написать shell-процедуру, которая:
вводит символьную строку;
во введенной строке ищет подстроку, передаваемую в качестве первого параметра;
вставляет перед каждой найденной подстрокой группу символов, передаваемых в качестве второго параметра;
удаляет из полученной строки группу символов, передаваемых в качестве третьего параметра;
выводит на экран введенную и новую строку.
Вариант 54.
Написать shell-процедуру, которая:
вводит символьную строку;
проверяет введенную строку на несовпадение со строкой, переданной в качестве 1-го параметра;
если строки не совпадают, то выдает на экран приглашение повторить ввод;
если совпадают, то сравнивает длину введенной строки с длиной 2-го параметра, и, в случае их равенства, выводит на экран введенную строку .
Вариант 55.
Написать shell-процедуру, которая:
вводит символьную строку;
проверяет введенную строку на несовпадение со строками, содержащимися в файле, имя которого передается в качестве 1-го параметра;
для всех найденных несовпадений заменяет соответствующие строки в файле на пустые строки;
выводит на экран старое и новое содержимое файла, а также число найденных несовпадений;
Вариант 56.
Написать shell-процедуру, которая:
вводит символьную строку, содержащую маршрутное имя некоторого файла; проверяет введенное маршрутное имя, если оно начинается с символа /, на совпадение его первой части с маршрутным именем домашнего каталога пользователя;
если введенное маршрутное имя содержит маршрутное имя домашнего каталога или является относительным, то проверяет существование указанного первым параметром файла, в противном случае выводит на экран сообщение об ошибке;
если файл существует, то выводит на экран его содержимое в обратном порядке;
если файл не существует, то создает его и записывает в него строку, передаваемую в качестве параметра в обратном порядке;
Вариант 57.
Написать shell-процедуру, которая:
вводит символьную строку, содержащую имя некоторого каталога;
проверяет наличие каталога в домашнем каталоге или в одном из подкаталогов;
если каталог существует, то выводит на экран его содержимое;
если каталог не существует, то создает его;
устанавливает для каталога права доступа, соответствующие правам доступа к указанному каталогу.
Вариант 58.
Написать shell-процедуру, которая:
вводит символьную строку, содержащую текст некоторого сообщения;
проверяет наличие в своем почтовом ящике хотя бы одного сообщения того же автора;
если в почтовом ящике имеются такие сообщения, то выводит их на экран и посылает эти сообщения на терминалы всем пользователям, в данный момент работающим в системе из числа тех, чьи имена передаются в качестве параметров;
Вариант 59.
Написать shell-процедуру, которая:
вводит символьную строку, содержащую имя файла с текстом некоторого сообщения;
всем пользователям, чьи имена передаются в качестве второго и следующих параметров и работающим в системе в течение заданного первым параметром времени, рассылает введенное сообщение по почте;
всем остальным пользователям, работающим в данный момент в системе, рассылает прямые сообщения, содержащие введенную символьную строку.
Вариант 60.
Написать shell-процедуру, которая:
проверяет свой почтовый ящик на отсутствие в нем сообщений;
создает некоторое сообщение, текст которого помещает в файл, имя которого передается в качестве первого параметра;
всем пользователям, работающим в системе, рассылает по почте сообщения, текст которого содержится в файле, имя которого передается в качестве второго параметра.
|
|
|