- •Лабораторные работы Лабораторная работа №1. Файловая оболочка Midnight Commander
- •Лабораторная работа №2. Информационные команды оболочки, работа со справочной системой
- •Лабораторная работа №3. Управление каталогами
- •Лабораторная работа №4. Файловые операции
- •Лабораторная работа №5. Права доступа к файлам
- •Лабораторная работа №6. Организация поиска
- •Лабораторная работа №7. Регулярные выражения. Команда egrep
- •Лабораторная работа №8. Перенаправление стандартных потоков, конвейеры
- •Лабораторная работа №9. Фильтры, обработка текстовых данных
- •Лабораторная работа №10. Архивирование и сжатие
- •Лабораторная работа №11. Текстовый редактор Vim
- •Vim [ключи] [файл].
- •Лабораторная работа №12. Сценарии оболочки
- •Лабораторная работа №13. Условные конструкции
- •Лабораторная работа №14. Циклические конструкции
- •Лабораторная работа №15. Одномерные массивы
- •Лабораторная работа №16. Потоковый редактор sed
- •Лабораторная работа №17. Язык обработки шаблонов gawk
- •If (условие) {действия1} [else {действия2}].
Лабораторная работа №8. Перенаправление стандартных потоков, конвейеры
Цель работы: освоить различные способы организации перенаправления стандартных потоков и конвейеров.
Основные форматы организации перенаправления и конвейеров:
Перенаправление вывода:
команда > файл
команда >> файл
Результаты работы команды будут перенаправлены в указанный файл. В первом случае файл будет создан (перезаписан), во втором — данные будут добавлены в конец файла.
Перенаправление ввода:
команда < файл
Входные данные будут поступать из указанного файла.
Полный формат команд перенаправления:
команда n>m
команда n>>m
где n и m — дескрипторы стандартных потоков или имена файлов.
Перенаправление потока ошибок:
команда 2> файл
команда 2>> файл
Копия содержимого стандартного потока:
команда n>&m
Организация конвейеров:
команда1 | команда2
Если необходимо не только перенаправить стандартный вывод в файл, но и вывести на экран, можно использовать команду tee:
команда | tee файл
Ход работы
Выведите краткую информацию о всех блок-ориентированных файлах каталога /dev в файл devinfo домашнего каталога. Добавьте в конец этого файла полную информацию об этих устройствах.
Выведите только имена файлов домашнего каталога в файл lstest. Используя перенаправление ввода, просмотрите информацию о дисковом пространстве, которое занимает каждый файл, имя которого записано в файле lstest.
Определите количество файлов, с именем README, находящихся в файловом дереве, начиная с каталога /usr/share/doc. (Указание: используйте команду wc).
Используя группировку команд, выведите в файл diffhelp справочные данные, получаемые по команде man, о командах find, egrep и chmod. Просмотрите файл diffhelp в постраничном режиме.
Осуществите поиск всех файлов в файловом дереве, начиная с каталога /usr/lib, с выводом информации в файл lib_info и выводом ошибок на фиктивное устройство.
Осуществите в файловом дереве, начиная с каталога /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, в котором разделителем является двоеточие.
Ход работы
Сформируйте файл user_list, в котором содержится информация о всех зарегистрированных в системе пользователях (воспользуйтесь командой who). Сформируйте файл user_list_sort, содержащий отсортированные в обратном порядке данные о пользователях.
Выведите на экран файл user_list_sort с преобразованием символов в верхний регистр.
Создайте файл path_list, содержащий список полных путей к файлам домашнего каталога. Сформируйте файл path_list_changed, в котором символ / заменен на символ \.
Выведите на экран файл path_list, убрав все гласные буквы.
Выведите на экран файл path_list, заменив все гласные буквы на символ *.
Выполните команду, аналогичную предыдущему пункту с удалением повторяющихся символов.
Создайте файл size_list, содержащий данные о размерах файлов домашнего каталога, отсортированных по возрастанию размера.
Используя совместно команды ls, tr и cut, выведите на экран данные о файлах текущей директории в виде
права_доступа имя время_создания.