Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 5.doc
Скачиваний:
4
Добавлен:
13.08.2024
Размер:
135.17 Кб
Скачать
  1. Лабораторна робота №5

Тема: ОС Linux. Робота з інтерпретаторами команд

Мета роботи: навчитися основам роботи з інтерпретаторами команд Linux. Вміти створювати командні скрипти

    1. Теоретичні відомості:

Одразу ж після реєстрації у системі 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 запускає відразу ж після реєстрації користувача у системі, прописується у файлі паролів.

      1. Налаштування робочого середовища

На початку сеанса роботи користувача 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. Це можна зробити таким чином.

  1. Створіть каталог: mkdir $HOME/bin

  2. Перенесіть всі командні скрипти у цей каталог, використовуючи команду mv

  3. Додайте підкаталог у змінну PATH командою path=$path:$HOME/bin. Для того, щоб це додавання відбувалося кожного разу підчас реєстрації у системі, додайте цю команду у свій файл .profile