Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №3

.docx
Скачиваний:
0
Добавлен:
28.09.2026
Размер:
1 Мб
Скачать
☆

Министерство цифрового развития связи и массовых коммуникаций

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

СВЯЗИ И ИНФОРМАТИКИ»

Кафедра «Системное программирование»

Отчёт по лабораторной работе №3

по дисциплине «Современные операционные системы»

на тему «Написание составных команд в командной оболочке bash»

Выполнил: студент группы М092501(70)

Ягудин Р.Р.

Проверил: доц. Трухманов В.Б.

Москва 2025 г.

СОДЕРЖАНИЕ

№ стр.

  1. Цель лабораторной работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

  2. Задачи работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

  3. Теоретическая часть . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

  4. Экспериментальная часть . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1. Подготовка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2. Перенаправление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    3. Пайплайн . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    4. Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

  5. Ответы на контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

  6. Выводы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

  1. ЦЕЛЬ ЛАБОРАТОРНОЙ РАБОТЫ

Получить практические навыки по созданию составных команд в оболочке bash.

  1. ЗАДАЧИ РАБОТЫ

  1. Подготовить виртуальный терминал для выполнения команд

  2. Осуществить перенаправление потоков ввода и вывода

  3. Создать пайплайн команд и переменные командной оболочки

  1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Команды сами по себе являются программами, скомпилированными в бинарные файлы, которые лежат в директории /bin. Вызывая команду в терминале, фактически мы запускаем отдельный процесс. Каждый запущенный процесс в системе Linux имеет связанные с ним три информационных канала:

  • Стандартный поток ввода stdin

  • Стандартный поток вывода stdout

  • Стандартный поток ошибок stderr.

Каждый из этих каналов имеет свой файловый дескриптор. Файловый дескриптор – это индекс (целое неотрицательное число), указывающий на строку в специальной таблице, содержащую информацию об открытых процессом файлах. Стандартные потоки имеют фиксированные значения файловых дескрипторов: STDIN – 0, STDOUT – 1, STDERR – 2.

Эти три стандартных потока фактически выступают универсальным интерфейсом, с помощью которого мы можем взаимодействовать с процессом, связывать команды, выстраивать цепочки (пайплайны) или перенаправлять потоки в места, отличные от терминала (файлы, сокеты и т. д.).

  1. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

    1. Подготовка

Запускаем ВМ, дожидаемся загрузки ОС и запускаем терминал

Рисунок 1 – Запуск терминала ВМ

Запускаем запись терминала

Рисунок 2 – Запись терминала ВМ

Вводим команду ls -l и видим, что файл создался

Рисунок 3 – Вывод созданного файла

    1. Перенаправление

Переходим на рабочий стол, создаём py-файл и записываем в него содержимое из приложения Б методического указания

Рисунок 4 – Переход на рабочий стол

Рисунок 5 – Создание py-файла lab3.py

Рисунок 6 – Запись данных в py-файл lab3.py

Аналогичным образом создаём второй py-файл lab3_2.py и записываем в него содержимое из приложения Б методического указания

Рисунок 7 – Создание py-файла lab3_2.py

Рисунок 8 – Запись данных в py-файл lab3_2.py

Оставшиеся файлы the-matrixreloaded.csv и variants.txt перемещаем на рабочий стол вручную и проверяем их наличие через ls -l

Рисунок 9 – Файлы, необходимые для выполнения лабораторной работы

Запускаем генерацию варианта, осуществляем перенаправление стандартного потока ошибок STDERR в файл yagudin_err, после чего открываем файлы. Затем, выполним подсчёт количества слов в каждом созданном файле, осуществим перенаправление STDOUT и STDIN в один файл и откроем файл

Рисунок 10 – Генерация варианта, перенаправление потоков и открытие файлов

    1. Пайплайн

Вводим команду man grep для вывода руководства пользователя по утилите grep

Рисунок 11 – Ввод команды

Рисунок 12 – Вывод руководства пользователя по утилите grep

Вводим команду python3 lab3_2.py для генерации варианта, где:

  • Пункт «a» – чьи фразы необходимо найти

  • Пункт «б» – кто должен упоминаться в этих фразах

  • Пункт «в» – какой знак препинания должен содержаться

  • Пункт «г» – какой объект, явление, событие, действие упоминается

Рисунок 13 – Генерация варианта путём запуска скрипта lab3_2.py

Вводим нижеприведённую команду для перенаправления вывода содержимого файла на утилиту grep, где:

  • cat the-matrix-reloaded.csv | grep «^Иван» – строки, где говорит Иван

  • Добавление условия | grep «Мария» – поиск строк, в которых Иван упоминает Марию

  • Добавление условия | grep «\.» – поиск строк, в которых присутствует точка

  • Добавление условия | grep «новая работа» – поиск строк, где используется фраза «новая работа»

Рисунок 14 – Перенаправление вывода содержимого файла на утилиту grep

Добавим к команде выше | wc -l для подсчёта количества найденных строк

Рисунок 15 – Подсчёт количества найденных строк

Выведем количество строк с использованием ключа -с

Рисунок 16 – Подсчёт количества найденных строк через ключ -с

    1. Переменные

Вводим команду man sed для вывода руководства пользователя по команде sed

Рисунок 17 – Ввод команды

Рисунок 18 – Вывод руководства пользователя по команде sed

Перекодируем файл the-matrixreloaded.csv из cp1251 в UTF-8, переименовываем его и выводим его содержимое

Рисунок 19 – Перекодирование, переименовывание и вывод содержимого файла

Задаём имя переменной и выводим первые 5 строк файла

Рисунок 20 – Задание имени переменной и вывод первых 5 строк файла

Заменим во всех фразах имя персонажа на имя актёра и запишем в файл данные

Рисунок 21 – Замена имени персонажа на имя актёра и вывод файла

Пронумеруем строки в файле

Рисунок 22 – Ввод нумерации строк в файле

Завершаем запись команд

Рисунок 23 – Завершение записи команд

  1. ОТВЕТЫ НА КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Перечислите потоки ввода и вывода, ассоциированные с любым процессом в операционной системе Linux

С каждым процессом в Linux ассоциированы три стандартных потока:

  • STDIN (Standard Input) — стандартный поток ввода (дескриптор 0): используется для передачи данных в процесс. По умолчанию связан с клавиатурой.

  • STDOUT (Standard Output) — стандартный поток вывода (дескриптор 1): используется для вывода результатов работы процесса. По умолчанию связан с терминалом (экраном).

  • STDERR (Standard Error) - стандартный поток ошибок (дескриптор 2): используется для вывода сообщений об ошибках. По умолчанию связан с терминалом.

  1. Что такое пайплайн?

Пайплайн (конвейер) — это механизм в командной оболочке, позволяющий соединить стандартный вывод одной команды со стандартным вводом другой с помощью символа «|». Пример: cat file.txt | grep "text"

  1. Как осуществляется перенаправление потоков ввода/вывода в командной оболочке bash?

Перенаправление потоков ввода/вывода в командной оболочке bash осуществляется следующими способами:

  • > – перенаправление STDOUT в файл (с перезаписью)

  • >> – перенаправление STDOUT в файл (с добавлением)

  • 2> – перенаправление STDERR в файл

  • < – перенаправление ввода из файла

  • &> – перенаправление STDOUT и STDERR вместе

  1. Для чего используется утилита grep?

Утилита grep используется для поиска текста по шаблону (регулярному выражению) в файлах или потоке данных.

  1. ВЫВОДЫ

В ходе выполнения данной лабораторной работы я приобрёл навыки работы с командной оболочкой bash операционной системы семейства Linux и изучил основные команды файловой системы.

12