Файл: Лабораторная работа 1 по дисциплине Операционные системы и оболочки Руководитель работы канд пед наук, доцент.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 777
Скачиваний: 10
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство образования и науки Российской ФедерацииФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»Институт математики и информационных технологий Кафедра программного обеспечения вычислительной техники и автоматизированных системЛабораторная работа № 1по дисциплине«Операционные системы и оболочки»Руководитель работыканд. пед. наук, доцент_____________ Е. Н. Наточая«__» _______________2023 г.Исполнительстудент группы З-21ПИнж(б)РПиС______________ А.Ю. Шалгенбаев«__» _______________2023 г.Оренбург 2023Задание на лабораторную работу 1. Создайте каталог для выполнения лабораторной работы в директории/home/user/ Все скрипты создавайте внутри этого каталога или егоподкаталогов. (mkdir lab1) 2. Напишите скрипты, решающие следующие задачи:i) В параметрах при запуске скрипта передаются три целых числа.Вывести максимальное из них.ii) Считывать строки с клавиатуры, пока не будет введена строка "q". Послеэтого вывести последовательность считанных строк в виде одной строки.iii) Создать текстовое меню с четырьмя пунктами. При вводе пользователемномера пункта меню происходит запуск редактора nano, редактора vi,браузера links или выход из меню.iv) Если скрипт запущен из домашнего каталога, вывести на экран путь кдомашнему каталогу и завершить работу с кодом 0. В противном случаевывести сообщение об ошибке и завершить работу с кодом 1.v) Создать файл info.log, в который поместить все строки из файла/var/log/anaconda/syslog, второе поле в которых равно INFO.vi) Создать full.log, в который вывести строки файла/var/log/anaconda/X.log
, содержащие предупреждения иинформационные сообщения, заменив маркеры предупреждений иинформационных сообщений на слова Warning: и Information:так, чтобы в получившемся файле сначала шли все предупреждения, апотом все информационные сообщения. Вывести этот файл на экран.vii) Создать файл emails.lst, в который вывести через запятую всеадреса электронной почты, встречающиеся во всех файлах каталога/etc.viii) Вывести список пользователей системы с указанием их UID,отсортировав по UID. Сведения о пользователей хранятся в файле/etc/passwd. В каждой строке этого файла первое поле – имяпользователя, третье поле – UID. Разделитель полей – двоеточие.ix) Подсчитать общее количество строк в файлах, находящихся вдиректории /var/log/ и имеющих расширение log.x) Вывести три наиболее часто встречающихся слова из man по командеbash длиной не менее четырех символов. 3. Предъявите скрипты преподавателю и получите вопрос или задание длязащиты лабораторной работы.Выполнение работы 1. Создайте каталог для выполнения лабораторной работы в директории/home/user/ Все скрипты создавайте внутри этого каталога или егоподкаталогов.2. Напишите скрипты, решающие следующие задачи:1. В параметрах при запуске скрипта передаются три целых числа. Выведите максимальное число#!/bin/basha=$1b=$2c=$3if [[ "$b" -gt "$a" ]]then a=$bfiif [[ "c" -gt "$a" ]]then a=$cfiecho "$a"
2. Считывать строки с клавиатуры, пока не будет введена строка "q". Послеэтого вывести последовательность считанных строк в виде одной строки.#!/bin/bashb=""read ab="$b$a"while [[ "$a" != "q" ]]do read ab="$b$a"if [[ "$a" == "q" ]]then breakfidoneecho "$b"3. Создать текстовое меню с четырьмя пунктами. При вводе пользователемномера пункта меню происходит запуск редактора nano, редактора vi,браузера links или выход из меню.#!/bin/bashecho "Vyberite deystvie:"echo "1 = nano"echo "2 = vi"echo "3 = links"echo "4 = exit"read acase $a in1 )/usr/bin/nano;;2 )/usr/bin/vim;;3 )/usr/bin/links;;4 )echo "Goodbye"exit 0;;esac4. Если скрипт запущен из домашнего каталога, вывести на экран путь кдомашнему каталогу и завершить работу с кодом 0. В противном случаевывести сообщение об ошибке и завершить работу с кодом 1.#!/bin/bashif [[ "$HOME" == "$PWD" ]]then echo "$HOME"exit 0fiif [[ "$HOME" != "$PWD" ]]then echo "ERROR"exit 1fi5. Создать файл info.log, в который поместить все строки из файла/var/log/anaconda/syslog, второе поле в которых равно INFO.#!/bin/bashgrep -E -r -h "^ACPI.*" /var/log/syslog > info.loggrep -E -r -h "^.*[[:alnum:]]\.[[:alpha:]]" /home/pyatkin/lab1/info.log6. Создать full.log, в который вывести строки файла/var/log/anaconda/X.log, содержащие предупреждения иинформационные сообщения, заменив маркеры предупреждений иинформационных сообщений на слова Warning: и Information:так, чтобы в получившемся файле сначала шли все предупреждения, апотом все информационные сообщения. Вывести этот файл на экран.#!/bin/bashinf="\\(II\\)"
war="\\(WW\\)"grep -E -h -s $war /var/log/Xorg.0.log | sed -E "s/$war/Warning: /" > full.loggrep -E -h -s $inf /var/log/Xorg.0.log | sed -E "s/$inf/Information: /" >> full.log7. Создать файл emails.lst, в который вывести через запятую всеадреса электронной почты, встречающиеся во всех файлах каталога/etc.#!/bin/bashmail="[a-zA-Z0-9_.]+@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+"grep -E -h -s -o -w $mail /etc/* | awk '{printf("%s, ",$1)}' | sed -E "s/$mail,\s$//g" > emails.lst8. Вывести список пользователей системы с указанием их UID,отсортировав по UID. Сведения о пользователей хранятся в файле/etc/passwd. В каждой строке этого файла первое поле – имяпользователя, третье поле – UID. Разделитель полей – двоеточие.#!/bin/bashawk '{ FS=":"; print $3, $1;}' /etc/passwd | sort -n -k 19. Подсчитать общее количество строк в файлах, находящихся вдиректории /var/log/ и имеющих расширение log.#!/bin/bashcat /var/log/*.log | wc –l10. Вывести три наиболее часто встречающихся слова из man по командеbash длиной не менее четырех символов.#!/bin/bashman bash | grep -o -i "[a-zA-Z]\{4,\}" | tr "[:upper:]" "[:lower:]" | sort | uniq -c | sort -r -n | head -3
, содержащие предупреждения иинформационные сообщения, заменив маркеры предупреждений иинформационных сообщений на слова Warning: и Information:так, чтобы в получившемся файле сначала шли все предупреждения, апотом все информационные сообщения. Вывести этот файл на экран.vii) Создать файл emails.lst, в который вывести через запятую всеадреса электронной почты, встречающиеся во всех файлах каталога/etc.viii) Вывести список пользователей системы с указанием их UID,отсортировав по UID. Сведения о пользователей хранятся в файле/etc/passwd. В каждой строке этого файла первое поле – имяпользователя, третье поле – UID. Разделитель полей – двоеточие.ix) Подсчитать общее количество строк в файлах, находящихся вдиректории /var/log/ и имеющих расширение log.x) Вывести три наиболее часто встречающихся слова из man по командеbash длиной не менее четырех символов. 3. Предъявите скрипты преподавателю и получите вопрос или задание длязащиты лабораторной работы.Выполнение работы 1. Создайте каталог для выполнения лабораторной работы в директории/home/user/ Все скрипты создавайте внутри этого каталога или егоподкаталогов.2. Напишите скрипты, решающие следующие задачи:1. В параметрах при запуске скрипта передаются три целых числа. Выведите максимальное число#!/bin/basha=$1b=$2c=$3if [[ "$b" -gt "$a" ]]then a=$bfiif [[ "c" -gt "$a" ]]then a=$cfiecho "$a"
2. Считывать строки с клавиатуры, пока не будет введена строка "q". Послеэтого вывести последовательность считанных строк в виде одной строки.#!/bin/bashb=""read ab="$b$a"while [[ "$a" != "q" ]]do read ab="$b$a"if [[ "$a" == "q" ]]then breakfidoneecho "$b"3. Создать текстовое меню с четырьмя пунктами. При вводе пользователемномера пункта меню происходит запуск редактора nano, редактора vi,браузера links или выход из меню.#!/bin/bashecho "Vyberite deystvie:"echo "1 = nano"echo "2 = vi"echo "3 = links"echo "4 = exit"read acase $a in1 )/usr/bin/nano;;2 )/usr/bin/vim;;3 )/usr/bin/links;;4 )echo "Goodbye"exit 0;;esac4. Если скрипт запущен из домашнего каталога, вывести на экран путь кдомашнему каталогу и завершить работу с кодом 0. В противном случаевывести сообщение об ошибке и завершить работу с кодом 1.#!/bin/bashif [[ "$HOME" == "$PWD" ]]then echo "$HOME"exit 0fiif [[ "$HOME" != "$PWD" ]]then echo "ERROR"exit 1fi5. Создать файл info.log, в который поместить все строки из файла/var/log/anaconda/syslog, второе поле в которых равно INFO.#!/bin/bashgrep -E -r -h "^ACPI.*" /var/log/syslog > info.loggrep -E -r -h "^.*[[:alnum:]]\.[[:alpha:]]" /home/pyatkin/lab1/info.log6. Создать full.log, в который вывести строки файла/var/log/anaconda/X.log, содержащие предупреждения иинформационные сообщения, заменив маркеры предупреждений иинформационных сообщений на слова Warning: и Information:так, чтобы в получившемся файле сначала шли все предупреждения, апотом все информационные сообщения. Вывести этот файл на экран.#!/bin/bashinf="\\(II\\)"
war="\\(WW\\)"grep -E -h -s $war /var/log/Xorg.0.log | sed -E "s/$war/Warning: /" > full.loggrep -E -h -s $inf /var/log/Xorg.0.log | sed -E "s/$inf/Information: /" >> full.log7. Создать файл emails.lst, в который вывести через запятую всеадреса электронной почты, встречающиеся во всех файлах каталога/etc.#!/bin/bashmail="[a-zA-Z0-9_.]+@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+"grep -E -h -s -o -w $mail /etc/* | awk '{printf("%s, ",$1)}' | sed -E "s/$mail,\s$//g" > emails.lst8. Вывести список пользователей системы с указанием их UID,отсортировав по UID. Сведения о пользователей хранятся в файле/etc/passwd. В каждой строке этого файла первое поле – имяпользователя, третье поле – UID. Разделитель полей – двоеточие.#!/bin/bashawk '{ FS=":"; print $3, $1;}' /etc/passwd | sort -n -k 19. Подсчитать общее количество строк в файлах, находящихся вдиректории /var/log/ и имеющих расширение log.#!/bin/bashcat /var/log/*.log | wc –l10. Вывести три наиболее часто встречающихся слова из man по командеbash длиной не менее четырех символов.#!/bin/bashman bash | grep -o -i "[a-zA-Z]\{4,\}" | tr "[:upper:]" "[:lower:]" | sort | uniq -c | sort -r -n | head -3