- •Міністерство освіти і науки, молоді та спорту України
- •Жуковецька с.Л.
- •Операційна система unix Посібник до виконання лабораторних та самостійних робіт
- •Анотація
- •Порядок виконання роботи
- •Методичні вказівки
- •1 Реєстрація в системі
- •Лабораторна робота №2 Тема: «Керування повноваженнями на файли та каталоги»
- •Порядок виконання роботи
- •Методичні вказівки Хто такі власники файлів?
- •Зміна прав доступу до файлу
- •Числова нотація команди chmod
- •Символьна нотація команди chmod
- •Створення маски – umask
- •Лабораторна робота №3 Тема: «Архівація та пошук файлів. Використання зовнішніх носіїв»
- •Порядок виконання роботи
- •Методичні вказівки
- •Лабораторна робота №4 Тема: «Програмування на мові bash. Файли ініціалізації»
- •Порядок виконання роботи
- •Методичні вказівки
- •Порядок виконання роботи
- •Методичні вказівки
- •Лабораторна робота №6 Тема: «Програмування в bash. Основні прийоми написання команд»
- •Порядок виконання роботи
- •Методичні вказівки
- •Лабораторна робота №7 Тема: «Програмування в bash. Використання фільтрів»
- •Порядок виконання роботи
- •Методичні вказівки
- •Лабораторна робота №8 Тема: «Мережеві засоби unix»
- •Порядок виконання роботи
- •Методичні вказівки
- •Жуковецька с.Л.
- •Сіренко о.І.
- •Операційна система unix
- •Посібник до виконання лабораторних
- •Та самостійних робіт
- •65082, Одеса, вул. Дворянська, 1/3
Лабораторна робота №7 Тема: «Програмування в bash. Використання фільтрів»
Мета
Оволодіння практичними навичками професійної роботи з командною оболонкою shell – використання фільтрів.
Завдання для самостійної підготовки
1. Вивчити:
використання фільтрів;
побудову програмних каналів;
використання файлів обліку користувачів;
поняття регулярного виразу.
2. Детально ознайомитись з довідкової системи man з такими
командами UNIX: cat, more, less, head, tail, wc, grep, sort, diff, uniq, cut, paste, join, tr.
Порядок виконання роботи
По номеру варіанта вибрати завдання і відповідно до методичних вказівок, за матеріалами рекомендованої літератури і конспекту лекцій виконати завдання і оформити звіт по роботі.
Зміст звіту
Початкові дані і постановка задачі.
Текст програми.
Висновки.
Методичні вказівки
Фільтри – це команди, що мають вхідний і вихідний потоки.
Ця обставина дозволяє використовувати фільтри в конвейєрах. Можна будувати команди, що складаються з декількох фільтрів, зв'язаних конвейєром.Використання фільтрів полегшує написання програм.
Фільтри файлів
Cat – вивести
m
ore
– вивести посторінково
less
head –n <n> – вивести перші n рядки
tail –n <n > – вивести останні n рядки
tee – роздвоєння виводу
wc – лічильник
Фільтри пошуку підрядка
grep fgrep egrep
Відмінність:
grep – пошук одного простого шаблону в групі файлів
fgrep - декілька зразків одночасно в одному файлі grep
використовує регулярний вираз , а fgrep - ні
egrep – використовує в зразках розширений набір символів
Найбільш поширений - grep
Синтаксис
grep <зразок> <список файлів>
<опції>:
-i – ігнорувати регістр
-c – виводити тільки кількість знайдених збігів.
-l - виводити тільки імена файлів, що містять зразок
-n – нумерує рядки
-v – виводить рядки, що не містять зразок
<зразок> : регулярний вираз з використанням символів
* декілька
. ? один
[ ] один з набору
۸ початок рядка
$ кінець рядка
Приклад
1. Створити файл students із спісоком групи. Підрахувати, скільки в ньому рядків
cat students | wc -l
2. видати перші 10 прізвищ
head –n 10 students
3. видати останні 10 прізвищ
tail –n 10 students
4. знайти в ньому рядок, відповідний конкретному прізвищу
grep <fam> students
5. скільки прізвищ починається на d?
grep –c “^d” students
grep “^d” students | wc -l
6. Знайти користувача user в файлі /etc/passwd:
grep user /etc/passwd
7. Подивитися всі локальні мережеві імена, зареєстровані в системі:
grep "^127.*" /etc/hosts
Редагуючі фільтри
sort - сортування
diff – порівнює два файли і виводить результат порівняння
uniq – з групи одинакових вибирає один
Опції sort
-o – записати в файл
-c – перевіряє чи відсортований файл
-u – виводить повторний рядок тільки один раз
-d – ігнорує символи набір яких не являється буквами,
цифрами або пробелом
-f – ігнорує регістр
-r – зворотний порядок
-b – ігнорує початкові пробелы
+ <n> - пропускає n полів в рядку + 2 – почати з 3 – го поля
- <n> - закінчити на полі n
- t – задає розділитель полів, за умовчанням пробел
Опції uniq
-c – перед кожним рядком ставить кількість збігів
-d – виводить тільки рядки які повторюються
-u - виводить тільки ті рядки які неповторюються
-<n> - пропускає n полів в рядку
+<n> - пропустити n полів +пробелы
Для ефективного використання фільтру uniq файл заздалегідь треба сортувати.
Приклад
who | cut -f1 -d' ' | sort | uniq
Фільтри даних
cut – вирізати підрядок
paste – вставити підрядок
join – об’єднати рядки з різних файлів
tr – заміна символів
Опції cut
- f <n> номер поля яке вирізається
<n1>, <n2> група
<n1> - <n2> - діапазон полів
-c - <n1> <n2> - вирізається посимвольно
-d <розділитель> - задає розділитель
Приклад
Показати власників файлів в поточній директорії
ls –l | cut –f4 –d” “
Опції tr <що замінити> <на що>
[ ] – задає діапазон заміни
-d – видаляє всі символи зі списку
-с - замінює символ з першого списку символом з другого
-s – замінює всі екземпляри набору символів, що повіряється, з першого списку одним екземпляром символів з другого
Приклад
echo “aabcdefa” | tr – s "a" "z"
Файли обліку користувачів
Файл /etc/passwd – зберігає облікові записи користувачів. Файл має наступні поля:
login: passwd: UID: GID: comments: homedir: shell
Інформація про групи зберігається в файлі /etc/group. Файл має наступні поля:
name: GID: <список користувачів>
Завдання
По файлу /etc/passwd визначити, скільки користувачів прописано в системі.
Написати скрипт, який по введеному імені визначає, чи існує користувач в системі.
Написати скрипт, який по введеному імені користувача визначає групу, до якої належить користувач.
Вивести всі домашні директорії користувачів.
Визначити максимальний UID в системі і користувача, якому він належить.
Вивести список всіх командних оболонок користувачів в системі. Для кожної оболонки вивести число користувачів, в яких вона використовується.
Написати скрипт, який чекає введення будь-якого рядка, і після цього замінює у введеному рядку послідовність символів «а» на один символ «b».
Контрольні запитання
Що таке фільтри?
Коли потрібно використовувати фільтри?
Які команди-фільтри ви знаєте?
Як побудувати програмний канал?
Який формат мають файли /etc/passwd та /etc/group? Для чого вони використовуються?
