- •Міністерство освіти і науки, молоді та спорту України
- •Жуковецька с.Л.
- •Операційна система unix Посібник до виконання лабораторних та самостійних робіт
- •Анотація
- •Порядок виконання роботи
- •Методичні вказівки
- •1 Реєстрація в системі
- •Методичні вказівки Хто такі власники файлів?
- •Зміна прав доступу до файлу
- •Числова нотація команди chmod
- •Символьна нотація команди chmod
- •Лабораторна робота №2 Тема: «Керування повноваженнями на файли та каталоги»
- •Порядок виконання роботи
- •Створення маски – umask
- •Лабораторна робота №3 Тема: «Архівація та пошук файлів. Використання зовнішніх носіїв»
- •Порядок виконання роботи
- •Методичні вказівки
- •Лабораторна робота №4 Тема: «Програмування на мові bash. Файли ініціалізації»
- •Порядок виконання роботи
- •Методичні вказівки
- •Порядок виконання роботи
- •Методичні вказівки
- •Лабораторна робота №6 Тема: «Програмування в bash. Основні прийоми написання команд»
- •Порядок виконання роботи
- •Методичні вказівки
- •Лабораторна робота №7 Тема: «Програмування в bash. Використання фільтрів»
- •Порядок виконання роботи
- •Методичні вказівки
- •Лабораторна робота №8 Тема: «Мережеві засоби unix»
- •Порядок виконання роботи
- •Методичні вказівки
- •Жуковецька с.Л.
- •Сіренко о.І.
- •Операційна система unix
- •Посібник до виконання лабораторних
- •Та самостійних робіт
- •65082, Одеса, вул. Дворянська, 1/3
Лабораторна робота №4 Тема: «Програмування на мові bash. Файли ініціалізації»
Мета
Оволодіння практичними навичками професійної роботи з командною оболонкою shell – використання змінних і створення командних файлів, використання файлів ініціалізації.
Завдання для самостійної підготовки
1. Вивчити:
організацію умовного виконання командного рядка, угруповання команд у командному рядку;
використання змінних shell;
організацію командних файлів;
арифметичні обчислення в shell;
використання псевдонимів.
2. Детально ознайомитись з довідкової системи man з такими
командами UNIX: let, echo, read, env, set, sh, alias.
Порядок виконання роботи
По номеру варіанта вибрати завдання і відповідно до методичних вказівок, за матеріалами рекомендованої літератури і конспекту лекцій виконати завдання і оформити звіт по роботі.
Зміст звіту
Початкові дані і постановка задачі.
Текст програми.
Висновки.
Методичні вказівки
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, яка задає паузу. Така пауза дозволяє прочитати виведені повідомлення .
Завдання
Створити директорію myscripts, в якій зберігатимуться виконувані файли.
У myscripts створити скрипт, що видає наступне повідомлення: (використовувати різні кольори). “У моєму домашньому каталозі <n> підкаталогів: <підкаталоги> “
Запустити цей скрипт на виконання за допомогою команд інтерпретації.
Створити скрипт, що прочитує з екрану деяке слово і що виводить кількість символів в цьому слові.
Зробити цей скрипт виконуваною командою. Запустити її на виконання.
Створити свій profile, що виконує наступні функції:
виводить рядок вітання з вказівкою поточної дати;
дозволяє виконати програми, що зберігаються в my_scripts як звичайні команди;
дозволяє діставати доступ до файлів і підкаталогів myscripts без завдання додаткової дороги;
встановлює кількість історії введених команд = 25;
виводить рядок запрошення, що включає ім'я користувача, ім'я комп'ютера і поточний каталог, використовувати різні кольори.
Створити свій bashrс, в якому задаються наступні команди:
команда резервного копіювання файлів, створених власником за поточний день, окрім порожніх;
команда видалення всіх порожніх файлів з каталога.
Написати свій .bash_logout, що виводить прощальний рядок.
Перевірити роботу файлів ініціалізації.
Контрольні запитання
Яке призначення командного інтерпретатора ?
В чому різниця локальних і глобальних змінних ?
Як в змінну записати результат виконання команди ?
Які стандартні змінні ви знаєте ? Їх призначення ?
Як можна запустити скрипт на виконання ?
Лабораторна робота №5
Тема: «Керування завданнями»
Мета
Оволодіння практичними навичками роботи з процесами — створення і знищення, керування процесами і їхній аналіз
Завдання для самостійної підготовки
1. Вивчити:
поняття процесу і його характеристики;
вивід на екран списку процесів і його аналіз;
фонові й активні процеси;
пріоритет процесів і його зміна;
відправлення сигналів процесам, організація перехоплення сигналів;
виконання завдань у системі в заданий час і з заданою періодичністю.
2. Ознайомитись з такими командами UNIX: ps, kill, fg, bg, jobs, crontab, at. Зверніть увагу на використання параметру командного рядка "&" .
