 
        
        - •Федеральное агенство связи
- •1. Использование командного интерпретатора для работы с файлами
- •1.1. Структура файловой системы FreeBsd
- •1.2. Работа с файлами
- •1.2.1. Работа с обычным текстовым файлом
- •1.2.2. Работа с каталогами
- •1.2.3. Работа со ссылками
- •1.3. Задание на лабораторную работу
- •4. Контрольные вопросы
- •2. Архивирование и сжатие файлов
- •2.1. Архивирование
- •2.2. Cжатие файлов
- •2.3. Задание на лабораторную работу
- •2.4. Контрольные вопросы
- •3. Управление учётными записями пользователей и правами доступа к файлам
- •3.1. Концепция пользователей и групп
- •3.2. Учетные записи пользователей
- •3.3. Группы пользователей
- •3.4. Владельцы файлов и права доступа к файлам
- •3.5. Задание на лабораторную работу
- •3.6. Контрольные вопросы
- •4. Использование команд для фильтрации и обработки текстов
- •4.1. Основные команды
- •4.3. Контрольные вопросы
- •5. Программирование на языке командного интерпретатора
- •5.1. Командные интерпретаторы
- •5.2. Синтаксис языка Bourne shell
- •5.3. Задание на лабораторную работу
- •5.4. Контрольные вопросы
- •6. Мониторинг производительности, управление процессами и автоматизация заданий
- •6.1. Мониторинг производительности
- •6.2. Управление процессами
- •6.3. Запуск заданий по расписанию
- •6.4. Задание на лабораторную работу
- •7. Монтирование файловых систем и мониторинг их использования
- •7.1. Монтирование и демонтирование файловых систем
- •7.2. Мониторинг использования файловых систем
- •6.4. Задание на лабораторную работу
- •7.4. Контрольные вопросы
- •8. Установка и настройка операционной системыFreeBsd
- •8.1. Установка и настройка виртуальной машины
- •8.2. Установка и настройка FreeBsDна виртуальной машине
- •8.3. Задание на лабораторную работу
- •8.4. Контрольные вопросы
- •Список литературы
- •Содержание
3.5. Задание на лабораторную работу
- Посмотреть текстовые файлы, содержащие сведения о пользователях и группах /etc/passwdи/etc/group. 
- Используя команду su, подключиться к системе в качестве администратора. 
- Создать нового пользователя с помощью команды adduser. 
- Обязательно выйти из системы с помощью команды exitи войти в неё под новой учетной записью! 
- Убедиться, что создан домашний каталог для нового пользователя. 
- Найти созданных пользователя и группу в файлах /etc/passwdи/etc/group. 
- С помощью команды passwdизменить для своей новой учётной записи пароль. 
- С помощью команды chpassизменить для своей новой учётной записи полное имя пользователя. 
- Войти в систему под учётной записью user. Используя командуsu, подключиться к системе в качестве администратора. 
- С помощью команды pw groupadd создать новую группу пользователей. 
- Добавить своего нового пользователя в новую группу с помощью команды pw groupmod. 
- С помощью команды idопределить принадлежность вашего пользователя к группам. 
- Изменить владельца-пользователя, а также владельца-группу для созданного ранее текстового файла test. 
- Изменить атрибуты файла testнаr-xr-xr-x, задавая их в текстовом виде. 
- Изменить атрибуты файла test2наr-xr-xr-x, задавая их в числовом виде. 
- Удалить созданную учётную запись с помощью команды rmuser. 
- Обязательно выйти из системы с помощью команды exit! 
3.6. Контрольные вопросы
- Какой командой можно получить список работающих пользователей и сохранить его в файле? 
- Для чего нужны пользователи и группы в системе? 
- Перечислите основных пользователей системы и группы. 
- Назовите атрибуты пользователя. 
- Назовите атрибуты группы. 
- Что определяет атрибуты файлов и каким образом их можно просмотреть и изменить? 
- Перечислите права доступа к файлам. 
- Каким образом можно изменить права доступа к файлам? 
- Что означает владелец-пользователь и владелец-группа? 
- Перечислите основные команды для управления учётными записями. 
4. Использование команд для фильтрации и обработки текстов
4.1. Основные команды
В составе операционной системы Unix имеется большое число системных утилит, предназначенных для обработки текстов. В таблице 8.1. приведены основные из них.
Таблица 8.1.
| Утилита | Назначение | 
| cat | вывод и конкатенация (объединение) файлов; | 
| grep | поиск по шаблону, заданному регулярным выражением; | 
| cmp | сравнение файлов; | 
| cut | вырезание полей из текста; | 
| paste | сцепление строк файлов; | 
| head | распечатка начала файла; | 
| tail | распечатка последних строк файла; | 
| sort | сортировка; | 
| sed | потоковый текстовый редактор; | 
| awk | многофункциональная утилита для обработки текстов; использует C-подобный язык программирования; | 
| wc | подсчёт числа строк в файле. | 
Командаgrepвыполняет поиск строк в файлах или во входном потоке, соответствующих шаблону, заданному регулярным выражением.Регулярные выраженияпредставляют собой язык описания текстовых шаблонов. Регулярные выражения содержат образцы символов, входящих в искомое текстовое выражение, и конструкции, определяемые специальными символами (метасимволами). В таблице 8.2. приведены метасимволы, используемые в регулярных выражениях.
Таблица 8.2.
| Метасимвол | Назначение | 
| ^ | начало строки; | 
| $ | конец строки; | 
| [] | любой символ, заключенный в квадратные скобки; чтобы задать диапазон символов, в квадратных скобках указываются через дефис первый и последний символы диапазона; | 
| [^] | любой символ, кроме символов, заданных в квадратных скобках; | 
| . | любой отдельный символ; | 
| \ | отменяет специальное значение следующего за ним метасимвола; | 
| * | указывает, что предыдущий шаблон встречается 0 или более раз; | 
| \{n\} | указывает, что предыдущий шаблон встречается ровно nраз; | 
| \{n,\} | указывает, что предыдущий шаблон встречается не менее nраз; | 
| \{,n\} | указывает, что предыдущий шаблон встречается не более nраз; | 
| \{n,m\} | указывает, что предыдущий шаблон встречается не менее nи не болееmраз. | 
Ниже приведены примеры регулярных выражений, которые задают условия поиска следующих строк:
| ^the | начинающихся с буквосочетания "the"; | 
| be$ | заканчивающихся буквосочетанием "be"; | 
| [Ss]igna[lL] | содержащих буквосочетания: "signal", "Signal", "signaL" или "SignaL"; | 
| \. | содержащих точку; | 
| ^...th | содержащих символы "th" в 4-й и 5-й позициях; | 
| ^.*\{53\}th | содержащих символы "th" в 54-й и 55-й позициях; | 
| ^.*\{10,30\}th | содержащих символы "th" в любых позициях между 11-й и 31-й; | 
| ^.....$ | состоящих из 5 любых символов; | 
| ^t.*e$ | ищутся строки, начинающихся с буквы "t" и заканчивающиеся буквой "e"; | 
| [0-9][a-z] | содержащих комбинацию: цифра-прописная буква; | 
| [^123] | содержащих цифр "1" или "2" или "3" | 
Команда grepимеет следующий синтаксис:
grep [опции] [шаблон] [файл...]
Опции команды grep приведены в таблице 8.3. Если команда задана без опций, выводятся все найденные строки.
Таблица 8.3.
| Опция | Назначение | 
| -c | выводится толькочисло строк файла, соответствующих шаблону | 
| -f файл | чтение шаблона из файла | 
| -h | не выводятся имена файлов, в которых найдены строки, соответствующие шаблону | 
| -i | игнорирование верхнего/нижнего регистров | 
| -l | выводятся толькоимена файлов, в которых найдены строки, соответствующие шаблону | 
| -n | перед каждой выводимой строкой выводится ее номер в файле | 
| -v | ищутся строки, несоответствующие заданному шаблону | 
| -w | ищутся слова, полностьюсоответствующие шаблону | 
| -x | ищутся строки, полностьюсоответствующие шаблону | 
Примеры:
Задание 1.В файлеquery4выбрать все строки, в которых дата продажи - весна 1990 г. Дата представлена в формате «год-месяц-число», где месяц – три первых символа, например, 8 марта 2011 года будет «2011-mar-08».
$ grep "[0-9]-[MA][AP][RY]-[0-9]" ./lab8/query4
Первая буква весеннего месяца должна быть "M" или "A", вторая - "A" или "P", третья - "R" или "Y". Из этих букв можно сложить буквосочетания, обозначающие весенние месяцы, а все другие возможные буквосочетания не являются обозначениями месяцев вообще. Таким образом, шаблон для распознавания весеннего месяца будет: "[MA][AP][RY]".
Задание 2. В файле query2 выбрать все строки, в которых в адресе есть улица ("ST."). Поле адреса в файле начинается с 31-й позиции. Длина адреса составляет не более 20 символов.
$ grep "^.\{30\}.*\{0,17\}ST\." ./lab8/query2
Задание 3. В файле query1 выбрать все строки, в которых зарплата составляет целое число тысяч. Поле зарплаты в файле начинается с 60-й позиции.
grep "^.\{59\}[0-9]\{1,\}000[^0-9]*" ./lab8/query1
Если зарплата составляет целое число тысяч, то в ней содержится одна или несколько цифр, за которыми следует три нуля - подвыражение: "[0-9]\{1,\}000". Однако возможна (теоретически) зарплата, например "10001", поэтому стоит позаботиться о том, чтобы следующие за тремя нулями символы были отличны от значащих цифр. Таких символов может быть сколько угодно, и это условие можно обеспечить подвыражением: "[^0-9]*".
Приведем еще несколько примеров работы с другими утилитами для обработки текстов.
head -5 ./lab8/query1– вывод первых пяти строк файла;
tail -3 ./lab8/query1– вывод трёх последних строк файла;
head -5 ./lab8/query1 | tail -3 >./myfile– вывод строкc3 по 5 файлаquery1 и помещение результата в файлmyfile.
- Задание на лабораторную работу 
- В файле query4выбрать все строки, в которых код покупателя - 201. 
- В файле query2выбрать все строки, в которых индекс начинается с'11'. 
- В файле query3выбрать все строки, в которых минимальная цена не меньше 10. 
- В файле query1выбрать все строки, в которых имя сотрудника начинается на букву'R'. 
- В файле query3выбрать все строки, в которых в названии есть слово'TENNIS', а цена установлена в 1990 г. 
- В файле query4выбрать все строки, в которых фамилия продавца -'DUNCAN'. 
- Вывести 20 символов с конца файла. 
- Вывести 10 строк с конца файла. 
- Вывести 15 строк в обратном порядке. 
- Просматривать файл с конца в процессе его создания. 
- Отсортировать последние 20 строк файла. 
- Вывести количество пользователей подключенных к системе. 
