Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix_лаб_методичка_укр.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
585 Кб
Скачать
☆

Лабораторна робота №4 Тема: «Програмування на мові bash. Файли ініціалізації»

Мета

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

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

1. Вивчити:

  • організацію умовного виконання командного рядка, угруповання команд у командному рядку;

  • використання змінних shell;

  • організацію командних файлів;

  • арифметичні обчислення в shell;

  • використання псевдонимів.

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

командами UNIX: let, echo, read, env, set, sh, alias.

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

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

Зміст звіту

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

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

  3. Висновки.

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

Bash – командний процесор, який інтерпретує введені команди. Bash має свою внутрішню мову програмування.

Скрипт – це програма на мові shell.

Змінні

В командній мові bash всі змінні текстові. Ім’я змінної повинно починатися з букви і може полягати з латинських літер, цифр, знака підкреслювання.

Оператор присвоєння в bash має такий вигляд:

Ім’я змінної=значення.

NAME=Ivan

Якщо потрібно привласнити значення, що містить пробєл, потрібно використовувати лапки:

NAME="Ivan Ivanov"

Звернення до значення змінної виконується за допомогою знаку долара перед ім'ям змінної:

echo "$NAME"

Арифметичні операції виконуються при використанні ключового слова let

let sum=1+1

echo $sum

$(( expression ))

вираз обчислюватиметься відповідно до правил мови програмування С, і результат буде підставлений. Наприклад,

foo=$(( ((5 + 3*2) - 4) / 2 ))

Команда read приймає рядок зі стандартного вводу і присвоює його змінній.

read login

echo $login

$ {<var>} <текст> відділення змінних від тексту

let a=3+5

echo ${a}text

Для маніпулювання рядками приміняються спеціальні підстановки

1. $ {<var>: звідки: скільки} – выделить подстроку

txt=”abcd”

s=${txt:0,3}

echo $s

2. ${змінна:=значення} Значення присвоюється змінній, якщо вона не визначена або являється пустим рядком.

var1=”abc”

${var1:=”cde”}

${var2:=”fgh”}

echo $var1

echo $var2

3. ${змінна:+значення} Якщо змінна ініціалізована (визначена),замість неї використовується вказане в конструкції значення. (*)

var1=${a:+”text”}

echo $var1

4. ${змінна:-значення} Якщо змінна визначена і не являеться пустим рядком, підставляється її значення, інакше підставляється значення, вказане в конструкції. (*)

var1=${a:-”text”}

echo $var1

5. ${#змінна} кількість символів в значенні змінної

a=”abc”

echo ${#a}

При підстановці команд потрібно використовувати зворотні одинарні лапки (вони розташовані під символом тільди на клавіатурі). Підставляти можна не тільки одну команду, а цілі списки команд:

USERS=`who | wd –l`

UP=`date; uptime`

I=`whoami`

Для змінних встановлений рівень видимості. Змінні можуть бути глобальними і локальними.

Локальні - ті, які видно на поточному рівні роботи процесора.

Глобальні видно на всіх нижніх рівнях, тобто в під процессорах

Команди для управління змінними

env – перегляд глобальних змінних

set – змінні певного рівня

unset – розіменування змінних

export – зробити змінну глобальною

Стандартні глобальні змінні системи, що встановлюються при запуску системи , видні у всіх підпроцесорах.

HOME домашня директорія LOGNAME логін

SHELL командний процесор HOSTNAME ім’я комп’ютера

PATH шляхи для пошуку команд HISTSIZE число команд history

MAIL шлях до файлу з листами PS1 запрошення командного рядка

CDPATH шляхи для пошуку каталогів НОМЕ шлях до домашнього

каталогу i т.п.

Приклади використання

history

$HISTSIZE=5

history

set PATH=$PATH:/home/student/scripts

set PATH=$PATH:$HOME/scripts

PS1=”`uname`:”

Підстановки

\$ $ для всіх, # - root

\d – поточна дата

\t – час

\s –діючий shell

\u – login

\w – поточний каталог

\h – ім’я хоста

Використання різних кольорів

PS1=”\033[0;32m \u@\h: \033[0m”

0;30 black 0; 33 brown

0;34 blue 0; 35 purple

0;32 green 0; 37 light gray

0;36 eyan 1; 30 dark gray

0; 31 red 1; 37 white

echo –e “\033[0;34m <text>”

Формування псевдонімів

Для простих частовикористовуємих команд необов’язково створювати скрипт - достатньо зробити "псевдонім" (alias).

Для визначення псевдонимів використовується оператор alias. Наприклад:

alias ll=’ls –l’

Отримали нову команду ll. Перевіряєм її роботу:

ll

Аналогічно визначенню змінних, навколо символа "=" не повинно бути пробелів, а якщо в "значенні" псевдоніму є пробели або спецсимволи, то йго слід "екранувати".

Подивитися список псевдонімів можна командою alias без параметрів.

Створення скриптів

Команди, які вводяться в командному рядку можна помістити у файл. Команди виконуватимуться по черзі, одна за одною.

Етапи створення:

1. У каталозі (наприклад, /home/student/my_scripts) створити звичайний текстовий файл (назвемо його ech). Це можна зробити за допомогою команди touch ech або будь-якого текстового редактора (vim, gedit, і XW)

2. Помістити в створений файл команди. Це можна зробити пере направленням виводу (>) або в текстовому редакторі. Виберемо mc → F4 Вводимо echo Hello

3. Запустити файл в виконання з допомогою спеціальних команд:

. ech

sh ech

4. Можна зробити створений файл виконуваним.

chmod u+ x ech

Якщо файл знаходиться в каталозі, прописаному в змінній PATH, або ви додали шлях до нього в змінну PATH, то запустити скрипт можна без використання додаткових команд

ech

Файлы ініціалізації

Файлы ініціалізації – це сценарії shell, які визиваються автоматично.

При реєстрації користувача в bash визивається $HOME/.bash_profile

В кожному shell є файл ініціалізації самого shell $HOME/.bashrc

При виході з системи $HOME/.bash_logout

Існують конфігурації файли командної оболонки, загальні для всіх користувачів

/etc/bashrc

/etc/profile

Файли ініціалізації є текстові файли і маючи відповідні права можна їх правити..

$HOME/.bash_profile зазвичай містить команди, що формують інтерфейс. Наприклад, вітання, рядок запрошення, колірні настройки, значення глобальних змінних і т.д.

$HOME/.bashrc - команди, що розширюють або настроюють командний інтерпретатор. Наприклад, виклик необхідних програм, оголошення псевдонімів і т.д.

Для того, щоб перевірити роботу цих файлів необхідно ввійти в систему (команда login).

$HOME/.bash_logout містить команди, які виконують при виході з системи. Наприклад, очистка екрану, рядок повідомлення і команда

sleep, яка задає паузу. Така пауза дозволяє прочитати виведені повідомлення .

Завдання

  1. Створити директорію myscripts, в якій зберігатимуться виконувані файли.

  2. У myscripts створити скрипт, що видає наступне повідомлення: (використовувати різні кольори). “У моєму домашньому каталозі <n> підкаталогів: <підкаталоги> “

  3. Запустити цей скрипт на виконання за допомогою команд інтерпретації.

  4. Створити скрипт, що прочитує з екрану деяке слово і що виводить кількість символів в цьому слові.

  5. Зробити цей скрипт виконуваною командою. Запустити її на виконання.

  6. Створити свій profile, що виконує наступні функції:

  • виводить рядок вітання з вказівкою поточної дати;

  • дозволяє виконати програми, що зберігаються в my_scripts як звичайні команди;

  • дозволяє діставати доступ до файлів і підкаталогів myscripts без завдання додаткової дороги;

  • встановлює кількість історії введених команд = 25;

  • виводить рядок запрошення, що включає ім'я користувача, ім'я комп'ютера і поточний каталог, використовувати різні кольори.

  1. Створити свій bashrс, в якому задаються наступні команди:

  • команда резервного копіювання файлів, створених власником за поточний день, окрім порожніх;

  • команда видалення всіх порожніх файлів з каталога.

  1. Написати свій .bash_logout, що виводить прощальний рядок.

  2. Перевірити роботу файлів ініціалізації.

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

  1. Яке призначення командного інтерпретатора ?

  2. В чому різниця локальних і глобальних змінних ?

  3. Як в змінну записати результат виконання команди ?

  4. Які стандартні змінні ви знаєте ? Їх призначення ?

  5. Як можна запустити скрипт на виконання ?

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

Тема: «Керування завданнями»

Мета

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

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

1. Вивчити:

  • поняття процесу і його характеристики;

  • вивід на екран списку процесів і його аналіз;

  • фонові й активні процеси;

  • пріоритет процесів і його зміна;

  • відправлення сигналів процесам, організація перехоплення сигналів;

  • виконання завдань у системі в заданий час і з заданою періодичністю.

2. Ознайомитись з такими командами UNIX: ps, kill, fg, bg, jobs, crontab, at. Зверніть увагу на використання параметру командного рядка "&" .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]