
- •Лабораторна робота №5
- •Теоретичні відомості:
- •Налаштування робочого середовища
- •Завдання назв файлів
- •Передавання даних між процесами з використанням каналів (pipes)
- •Використання змінних оточення
- •Підстановка результата виконання команди
- •Групи команд та породжені оболонки
- •Редагування команд оболонки та використання псевдонімів
- •Робота з командними скріптами оболонки
- •Використання у програмах спеціальних символів
- •Використання команд керування процесом виконання
- •Хід роботи
Лабораторна робота №5
Тема: ОС Linux. Робота з інтерпретаторами команд
Мета роботи: навчитися основам роботи з інтерпретаторами команд Linux. Вміти створювати командні скрипти
Теоретичні відомості:
Одразу ж після реєстрації у системі Linux переходить у робочий каталог користувача та запускає інтерпретатор команд (який ще називають оболонкою, shell). Оболонка отримує від користувача команди та виконує їх.
В UNIX було розроблено декілька різних інтерпретаторів команд. Найбільш популярними та доступними в Linux за замовчуванням є оболонки bash (Bourne Again Shell), csh (C – shell), sh (Bourne shell).
Командні скрипти – це послідовність команд оболонки, створені у звичайному текстовому редакторі, наприклад, vim. Програма для базової оболонки Linux bash знаходиться у файлі /bin/bash
Для визначення яка оболонка встановлена на комп’ютері можна вивести значення змінної оточення SHELL:
echo $SHELL
Якщо треба, наприклад завантажити оболонку C-shell, то досить набрати команду
csh. Для повернення у попередню оболонку скористайтеся командою exit
Оболонка, яку Linux запускає відразу ж після реєстрації користувача у системі, прописується у файлі паролів.
Налаштування робочого середовища
На початку сеанса роботи користувача Linux встановить для нього робоче середовище. Робоче середовище складається з двох частин.
Перша частина, яку ще називають налаштуваннями термінала (terminal environment) визначає налаштування термінала. При використанні Linux на персональному комп”ютері терміналом є монітор та клавіатура.
Друга частина, що називають середовищем оболонки (environment shell) керує поведінкою оболонки та програм, що запускаються.
Налаштування термінала
Незважаючи на те, що отримує та виконує команди користувача оболонка, усе, що ввів користувач спочатку мусить пройти через проміжну програму – драйвер пристрою. Драйвер терміналу виконує керування терміналом. Він приймає усі символи від користувача, та приймає рішення чи треба з ними щось зробити перед тим, як передати оболонці. З іншого боку, кожен символ, який видає оболонка повинен пройти опрацювання драйвером перед тим, як з’явитися на екрані.
Характерною властивістю OC UNIX є те, що всі приєднані до системи пристрої виглядають для програм однаково – як файли. Це досягається використанням відповідних драйверів пристроїв.
Термінал приймає на вивід впорядковану послідовність символів, яка надходить з невеликою швидкістю. Драйвер пристрою впорядковує потік даних та посилає їх на термінал зі швидкістю 1200, 2400, 9600 та більше біт на секунду, додаючи до потоку стартові, стопові біти та біти контролю парності.
Так як термінал завжди приєднано до системи, драйвер дозволяє визначити спеціальні, керуючі символи (control characters), які використовують як маркери кінця файлу та кінця рядка. За допомогою драйвера пристрою визначають керуючі символи, які можна надіслати процесу, що виконується (наприклад, сигнал переривання, який зупинить виконання процесу).
Драйвер пристрою може працювати в одному з двох режимів – з розпізнаванням керуючих клавіш (cooked mode) та без розпізнавання (raw mode). У режимі без розпізнавання керуючих клавіш усі введені символи одразу ж передаються оболонці та програмі, що запущена в оболонці. Деякі програми, такі як текстові редактори або електронні таблиці потребують саме такого режиму та самі його встановлюють. Водночас, у режимі без розпізнавання керуючих символів неможливо, наприклад, перервати виконання програми якщо послати відповідний керуючий символ.
При роботі термінала у режимі з розпізнаванням, кожна натиснута користувачем клавіша аналізується драйвером пристрою. Введені звичайні символи накопичуються у буфері, поки не буде натиснута клавіша, яка означає кінець рядка (Enter). Після отримання усього рядка драйвер аналізує його перед тим, як спрямувати до оболонки.
Поведінка терміналу визначається десятками параметрів, більшість з яких встановлюються автоматично. У таблиці наведено деякі найбільш важливі символи керування
Символ |
Призначення |
Перервати (interrupt) |
Зупиняє програму яка виконується. В Linux для переривання використовують символ <Ctrl+C> |
Видалити (erase) |
Видалити з буфера останній введений символ. Використовують клавішу <Backspace> |
Очистити (kill) |
Повністю очищує буфер вводу. Використовують символ <@> |
Кінець рядка (End-of-line) |
Повідомляє про закінчення рядка – рядок треба передати з буфера оболонці або прикладній програмі. Використовується клавіша <Enter> |
Кінець файлу (End-of-file) |
Вказує оболонці на необхідність завершити роботу (сеанс даного користувача) і перейти у режим вводу реєстраційної інформації для нового сеансу. Використовується символ <Ctrl+D> |
Для роботи з керуючими символами використовують команду stty. Вивести на екран біжучі значення налаштувань термінала можна командою stty -a
Налаштування середовища оболонки
Створення середовища є частиною початку сеансу роботи користувача у системі. В кожного з процесів Linux є своє власне середовище. Можна казати, що програма виконується у своєму власному середовищі. Середовище складається з деякої кількості змінних та їх значень. Змінні зберігають інформацію про тип оболонки, адресу робочого каталогу користувача, тип термінала та ін. Деякі з них встановлюються підчас реєстрації у системі і не можуть бути змінені. Деякі можна змінювати. Можна також додавати нові змінні до середовища.
Змінні середовища задаються так:
VARIABLE = VALUE
де VARIABLE – назва змінної, VALUE – її значення.
Деякі змінні приймають значення з визначеної множини значень, наприклад, змінна типу терміналу: TERM = vt100
У таблиці наведено деякі, найбільш важливі змінні середовища.
Змінна |
Пояснення |
HOME=/home/login_name |
Визначає робочий каталог користувача. login_name – login-ім’я користувача |
LOGNAME= login_name |
Змінна автоматично встановлюється рівним імені, під яким працює користувач |
PATH = path |
Задає список каталогів, які система переглядає в пошуках потрібного файлу |
PS1 = prompt |
Змінна визначає як буде виглядати запрошення у командному рядку. |
PWD=directory |
Встановлюється автоматично. Визначає біжучий каталог |
SHELL= shell |
Задає знаходження програми, що використовують в якості оболонки |
TERM=termtype |
Задає тип терміналу |
У змінній PATH окремі каталоги розділені двокрапками. Система переглядає їх у порядку запису. Наприклад, змінна PATH може мати таке значенння:
/usr/muck:/bin:/usr/bin:/usr/local/bin
/usr/muck = це каталог, створений користувачем. Всі стандартні програми Linux знаходяться у каталогах /bin та /usr/bin. Каталог /usr/local/bin часто використовується для команд доданих користувачами системи.
Змінити біжуче значення змінної PATH та додати до неї каталог можна, наприклад, так:
$ PATH=$PATH:newpath
Символ $ означає, що зчитується значення змінної.
Оболонка підтримує декілька спеціальних змінних. Їхні значення можна побачити, якщо скористатися командою env, що виводить список усіх змінних оточення. Наприклад, ця команда може згенерувати такий вивід:
HOME=/usr/wrev
SHELL=/bin/sh
MAIL=/usr/mail/wrev
LOGNAME=wrev
PATH=/bin:/usr/bin:.
TZ=PST8PDT
PS1=$
TERM=vt100
де MAIL – шлях до поштової скриньки користувача, TZ – часовий пояс
Розглянемо детальніше важливі змінні середовища
Змінна HOME.
Ця змінна визначає робочий каталог користувача. Цей каталог є біжучим одразу ж після реєстрації користувача у системі. Змінну HOME можна використовувати для написання командних скриптів, в яких використовують файли з робочого каталогу. Наприклад, замість того, щоб написати команду
grep $number /usr/wrev/sales/data.01,
можна написати
grep $number $HOME/sales/data.01
Це краще, тому що
цю команду легше прочитати,
якщо робочий каталог буде перенесено, аюо ж ім”я користувача змінено, то команда буде працювати
команда буде працювати і для інших користувачів.
Змінна PATH.
У цій змінній визначені каталоги, які переглядає оболонка підчас пошуку потрібної команди. Для зручності можна зібрати усі командні скрипти в одному каталозі та прописати шлях до цього каталогу у змінну PATH. Це можна зробити таким чином.
Створіть каталог: mkdir $HOME/bin
Перенесіть всі командні скрипти у цей каталог, використовуючи команду mv
Додайте підкаталог у змінну PATH командою path=$path:$HOME/bin. Для того, щоб це додавання відбувалося кожного разу підчас реєстрації у системі, додайте цю команду у свій файл .profile