Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО - Лабораторные работы.doc
Скачиваний:
22
Добавлен:
10.11.2019
Размер:
752.13 Кб
Скачать

Лабораторная работа №8. Перенаправление стандартных потоков, конвейеры

Цель работы: освоить различные способы организации перенаправления стандартных потоков и конвейеров.

Основные форматы организации перенаправления и конвейеров:

  1. Перенаправление вывода:

команда > файл

команда >> файл

Результаты работы команды будут перенаправлены в указанный файл. В первом случае файл будет создан (перезаписан), во втором — данные будут добавлены в конец файла.

  1. Перенаправление ввода:

команда < файл

Входные данные будут поступать из указанного файла.

  1. Полный формат команд перенаправления:

команда n>m

команда n>>m

где n и m — дескрипторы стандартных потоков или имена файлов.

  1. Перенаправление потока ошибок:

команда 2> файл

команда 2>> файл

  1. Копия содержимого стандартного потока:

команда n>&m

  1. Организация конвейеров:

команда1 | команда2

Если необходимо не только перенаправить стандартный вывод в файл, но и вывести на экран, можно использовать команду tee:

команда | tee файл

Ход работы

  1. Выведите краткую информацию о всех блок-ориентированных файлах каталога /dev в файл devinfo домашнего каталога. Добавьте в конец этого файла полную информацию об этих устройствах.

  2. Выведите только имена файлов домашнего каталога в файл lstest. Используя перенаправление ввода, просмотрите информацию о дисковом пространстве, которое занимает каждый файл, имя которого записано в файле lstest.

  3. Определите количество файлов, с именем README, находящихся в файловом дереве, начиная с каталога /usr/share/doc. (Указание: используйте команду wc).

  4. Используя группировку команд, выведите в файл diffhelp справочные данные, получаемые по команде man, о командах find, egrep и chmod. Просмотрите файл diffhelp в постраничном режиме.

  5. Осуществите поиск всех файлов в файловом дереве, начиная с каталога /usr/lib, с выводом информации в файл lib_info и выводом ошибок на фиктивное устройство.

  6. Осуществите в файловом дереве, начиная с каталога /usr/lib, поиск файлов, имя которых начинается на n или m, с выводом информации в файл lib_info2 и выводом ошибок в файл lib_error.

Лабораторная работа №9. Фильтры, обработка текстовых данных

Цель работы: освоить приемы обработки строк текстовых файлов.

Необходимые команды

sort [ключи] [файл(ы)] — сортирует строки текстовых файлов и отправляет результат на стандартный вывод. Если файлов несколько, то они объединяются. Некоторые ключи:

-b — игнорировать пробелы в начале сортируемых полей или ключей;

-f — сортировка, нечувствительная к регистру;

-r — сортировка в обратном порядке;

-o файл — вывод результата в указанный файл;

-n — числовая сортировка (используется совместно с ключом -b).

tr [ключи] строка1 [строка2] — выполняет подстановку, замену, сокращение или удаление символов, поступающих со стандартного ввода и отправляет результат на стандартный вывод. Обычно эта команда имеет два аргумента: между наборами символов строка1 и строка2 устанавливается соответствие, после чего происходит замена набора строка1 на строка2. Некоторые ключи:

-d — удаляет символы, перечисленные в наборе строка1;

-s — заменяет несколько одинаковых подряд идущих символов на один такой же.

Если строка2 короче строки1, то строка2 удлиняется до длины строки1 повторением своего последнего символа. Лишние символы строки2 игнорируются. Строка1 и строка2 должны быть только диапазонами и последовательностями символов, либо отдельными символами:

символ1-символ2 — диапазон символов (без квадратных скобок!);

[:almun:] — все буквы и цифры;

[:alpha:] — все буквы;

[:cntrl:] — все управляющие символы;

[:digit:] — все цифры;

[:lower:] — все буквы нижнего регистра:

[:upper:] — все буквы ВЕРХНЕГО регистра.

[:graph:] — все печатаемые символы, исключая пробел;

[:print:] — все печатаемые символы, включая пробел.

Примеры:

tr -s "[:alpha:]" < file.in > file.out — устранение повторяющихся букв в файле file.in и запись результата в файл file.out.

tr "a-k" "a-d" < file.in > file.out — все символы с e по k будут заменены на символ d (вторая строка была расширена).

cut [опции] [файл]  — выделяет части строк текста (столбцы) из каждого файла и отправляет в стандартный поток вывода. Часть строк определяется либо по смещению в символах, либо по разделителям. Если файл не указан, данные поступают со стандартного ввода. Список опций:

-f список — выводит только столбцы (поля), указанные в списке. Список представляет один или более номеров символов или диапазонов, разделенных запятой, например, 7-10,15,40-50;

-d разделитель — задает разделитель колонок (полей) входного файла. Применяется совместно с ключом -f. Разделитель должен быть одним символом;

-c список — выводит только символы из позиций, указанных в списке. Формат задания списков аналогичен ключу -f.

Примеры:

cut -f 3-5 myfile — вывод с 3 по 5 поле каждой строки файла myfile.

cut -d ":" -f 2,4 myfile — вывод 2 и 4 полей каждой строки файла myfile, в котором разделителем является двоеточие.

Ход работы

  1. Сформируйте файл user_list, в котором содержится информация о всех зарегистрированных в системе пользователях (воспользуйтесь командой who). Сформируйте файл user_list_sort, содержащий отсортированные в обратном порядке данные о пользователях.

  2. Выведите на экран файл user_list_sort с преобразованием символов в верхний регистр.

  3. Создайте файл path_list, содержащий список полных путей к файлам домашнего каталога. Сформируйте файл path_list_changed, в котором символ / заменен на символ \.

  4. Выведите на экран файл path_list, убрав все гласные буквы.

  5. Выведите на экран файл path_list, заменив все гласные буквы на символ *.

  6. Выполните команду, аналогичную предыдущему пункту с удалением повторяющихся символов.

  7. Создайте файл size_list, содержащий данные о размерах файлов домашнего каталога, отсортированных по возрастанию размера.

  8. Используя совместно команды ls, tr и cut, выведите на экран данные о файлах текущей директории в виде

права_доступа имя время_создания.