
- •1. Екскурс до історичного розвитку os Unix
- •1.1 Виникнення os Unix
- •Сучасний стан os Unix
- •2. Unix на платформі Intel
- •3.1 Спільні принципи інсталяції
- •4. Введення в архітектуру ядра os Linux.
- •5. Основні поняття
- •5.1 Початок роботи
- •5.2 Вхід до системи
- •5.3 Ввод команд
- •5.4 Ввод командного рядка
- •5.5 Команди редагуванняя командного рядка
- •5.6 Керування процесом
- •5.7 Отримання списку процесів, що виконуються ps
- •5.8 Знищення процесу Del, Kill
- •5.9 Призупинка вводу на екран Ctrl-s
- •5.10 Використання калькуляторів
- •6. Початкове завантаження os Unix
- •Особливості завантаження os Unix
- •Інсталяція ядра
- •Допоміжні засоби для визначення os Unix
- •9. Файлова система Unix
- •9.1 Будова файлової системи Unix
- •9.2 Робота з файлами
- •9.3 Генерація імен файлів за допомогою метасимволів
- •10. Робота з каталогами
- •10.1 Права доступа до файлів та каталогів Для визначення прав доступу, зв’язаних з конкретним файлом або каталогом використовується команда ls –l:
- •Інші дев’ять символів додають три набори по три символи: перший – для індивідуального користувача;
- •10.2 Побудова командного рядка
- •10.3 Переадресація вводу та виводу
- •11. Конвeйори
- •12. Використання друкуючих пристроїв
- •13. Зв’язок з системою unix
- •14. Команда calendar
- •15. Спілкування з користувачем ззовні системи Unix
- •16. Процесори інтерпритаторa b-shell
- •16.1 Зарезервовані змінні
- •17. Керуючі структури у мові b-shell
- •17.1 Завдання директив інтерпретатору shell. Групування
- •17.2 Умовне виконання
- •17.3 Змінні інтерпретатора b-shell
- •2.1 Процедури інтерпритатора shell
- •17.3.2 Вкладені цикли
- •17.4 Керування перериваннями
- •17.5 Преревірка файлів, числових значень та ланцюжків символів
- •17.6 Зарезервовані змінні
17.3 Змінні інтерпретатора b-shell
2.1 Процедури інтерпритатора shell
Shell – файл має одну або кілька команд shell, які потрібно виконувати одна за другою, коли ім’я файлу використовується як ім’я команди. Присутність такого файла дозволяє створювати свої власні команди.
Наприклад:
Нехай є алгоритм, який підраховує кількість символів у файлі з поточного каталога:
$ ed counter
? counter
a
ls : wc -c [текст команди]
.
10
q
$_
$ sh counter [виклик команди]
20
$_
Використовувати цю команду одразу не можна. Потрібно за допомогою chmod змінити спосіб виконання файла:
$ chmod -c u+x counter [створення файлу, що виконується]
$_
після цього файл запускається з командного рядка без sh. Після цього файл команди переміщують у власний каталог bin та додають $ HOME/bin до PATH. Це дозволяє виконувати команду де завгодно (або /usr/john/newcomd/counter/ або $ HOME/bin/counter).
ДОПОМІЖНІ КОМАНДИ ECHO.
$ echo This isa massage
This is a massage
$_
2) $ echo -n This is a massage
This is a massage
$_
3)$ cat getkey
echo -n ‘Please press any key, then <or> to continue:’
read inkey
$_
$ chmod -c u+ x getkey
$_
$ getkey
Please press any key, then <or> to continue:
Перед передачею аргументів команді, що викликана shell завжди присвоює їх значення позиційним параметрам. Наприклад: нехай файл bounce, що має echo $1 $2 $3 $4 $5 $6
Якщо викликати файл з шістьма аргументами
$ bounce one two three four five six
one two three four five six
$_
17.3.2 Вкладені цикли
$ cat loop
out =1
in=3
while out = expr $out -1 зовнішній цикл
do echo out loop $ out внутрішній цикл
until in = expr $ in -1
do echo in loop $in
done
done якщо вивести на екран файл loop
$ loop
out loop 0
in loop 2
in loop 1
$_
Цикл while та until можливо передавати за допомогою команди break. Щоб вийти за межі більш одного циклу, необхідно визначити потрібну кількість рівнів циклу.
$ cat multiloop $multiloop
while true LOOP1
do echo LOOP1 LOOP2
until false ц.1 LOOP3
do echo LOOP2 LOOP2
while true ц.2 LOOP3
do echo LOOP3 LOOP2
break ц.3 LOOP3
done LOOP2
done LOOP3
done ……….
При відсутності break внутрішній цикл (3) повинен виконуватись нескінченно. Break приводить до повернення у середній цикл (2), тому цикл (2) та (3) чергуються.
Синтаксис процедур мови shell потребує щоб кожній команді циклу while, for або until відповідав оператор done, який завершує цикл. Циклічна програма, приведена вище, буде виконувати почерзі цикл (2) та цикл (3). Якщо замінити команду break, то це змусить програму повертатись до зовнішнього циклу 1 та по черзі виводити LOOP1, LOOP2, LOOP3.
17.3.3 Підстановка результатів виконання команд. Shell встановлює результати виконання команди, що викликана як значення змінної. Для цього беруть у знаки наголосу “ ’ ”:
$ fnames=’1s’
$_
Припустимо, що у поточному каталозі маємо file_1, file_2, file_3, file_4 тоді:
$ echo $fnames
file_1 file_2 file_3 file_4
$_
Підстановку результатів можна використовувати тільки з командами, які мають стандартний вивід
$ val=’1pr file1’
$_ не рекомендується
Вихідна інформація 1pr file1 нажсилається на друк, а змінній va1 присвоюється пусте значення.
$ current = ‘pwd’
$ cd/user/denis/plan/goal
$ :::::
$ cd $current
Змінна current використовується для зберігання складного імені поточного каталогу, поки в ньому виконується деяка задача. Останній оператор дозволяє повернутись до первичного каталогу.
Але
if test “$y”= “$x”
then echo ‘they are the same’
else echo ‘they are different’
fi
Буде визначена невірність х та у.
Якщо test ’$y’=’$x’, то будуть порівняні змінні х та у, а $ втратить зміст.
У shell примітивні not, and та or можуть бути об’єднані для отримання більш гнучких керуючих конструкцій.
! – одномісна операція not, інвертує значення виразу;
-о – двомісна операція or, дає значення true, якщо обидва операнди мають значення true;
а – двомісна операція and, дає значення true, якщо обидва операнди мають значення true
Наприклад:
if test ! true ? if test false
якщо
if test “$2” -- true то $2 не існує
if test ! “$2”
2) if test –f $1 -a -r $1 -o -w $1
then echo “file $1 is accessible”
elif test –d $1
then echo “$1 is a directory”
else echo “file $1 is not accessible”
fi
Повідомлення file $1 is accessible виводиться тільки у тому випадку, якщо файл аргумента ($1) є звичайним файлом, для якого можливі і читання і запис. Вираз test –d $1 ,elt true, якщо файл аргумента є каталогом.