Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



Операційна система unix

Операційна система unix




Сторінка9/10
Дата конвертації10.03.2017
Розмір0.74 Mb.
1   2   3   4   5   6   7   8   9   10

Лабораторна робота №7

Тема: «Програмування в bash.

Використання фільтрів»


Мета

Оволодіння практичними навичками професійної роботи з командною оболонкою shell – використання фільтрів.


Завдання для самостійної підготовки

1. Вивчити:



  • використання фільтрів;

  • побудову програмних каналів;

  • використання файлів обліку користувачів;

  • поняття регулярного виразу.
    В програмуванні, регулярний вираз (від англ. regular expression, скорочено regex або regexp, а іноді ще й називають rational expression ) - це рядок, що описує або збігається з множиною рядків, відповідно до набору спеціальних синтаксичних правил.


2. Детально ознайомитись з довідкової системи man з такими

командами UNIX: cat, more, less, head, tail, wc, grep, sort, diff, uniq, cut, paste, join, tr.


Порядок виконання роботи


По номеру варіанта вибрати завдання і відповідно до методичних вказівок, за матеріалами рекомендованої літератури і конспекту лекцій виконати завдання і оформити звіт по роботі.

Зміст звіту


  1. Початкові дані і постановка задачі.

  2. Текст програми.

  3. Висновки.


Методичні вказівки

Фільтри – це команди, що мають вхідний і вихідний потоки.

Ця обставина дозволяє використовувати фільтри в конвейєрах. Можна будувати команди, що складаються з декількох фільтрів, зв'язаних конвейєром.Використання фільтрів полегшує написання програм.
Фільтри файлів

Cat – вивести

more – вивести посторінково

less


head –n – вивести перші n рядки

tail –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 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 полів в рядку 2 – почати з 3 – го поля

- - закінчити на полі n

- t – задає розділитель полів, за умовчанням пробел


Опції uniq

-c – перед кожним рядком ставить кількість збігів

-d – виводить тільки рядки які повторюються

-u - виводить тільки ті рядки які неповторюються

- - пропускає n полів в рядку

- пропустити n полів пробелы

Для ефективного використання фільтру uniq файл заздалегідь треба сортувати.
Приклад

who | cut -f1 -d' ' | sort | uniq


Фільтри даних

cut – вирізати підрядок

paste – вставити підрядок

join – об’єднати рядки з різних файлів

tr – заміна символів
Опції cut

- f номер поля яке вирізається



, група

- - діапазон полів

-c - - вирізається посимвольно

-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: <список користувачів>


Завдання

  1. По файлу /etc/passwd визначити, скільки користувачів прописано в системі.

  2. Написати скрипт, який по введеному імені визначає, чи існує користувач в системі.

  3. Написати скрипт, який по введеному імені користувача визначає групу, до якої належить користувач.

  4. Вивести всі домашні директорії користувачів.

  5. Визначити максимальний UID в системі і користувача, якому він належить.

  6. Вивести список всіх командних оболонок користувачів в системі. Для кожної оболонки вивести число користувачів, в яких вона використовується.

  7. Написати скрипт, який чекає введення будь-якого рядка, і після цього замінює у введеному рядку послідовність символів «а» на один символ «b».


Контрольні запитання

  1. Що таке фільтри?

  2. Коли потрібно використовувати фільтри?

  3. Які команди-фільтри ви знаєте?

  4. Як побудувати програмний канал?

  5. Який формат мають файли /etc/passwd та /etc/group? Для чого вони використовуються?


1   2   3   4   5   6   7   8   9   10



  • Порядок виконання роботи
  • Зміст звіту