Смекни!
smekni.com

Складання сценаріїв в операційній системі LINUX (стр. 1 из 2)

РЕФЕРАТ

натему:

”Складання сценаріїв в операційній системі LINUX. ”

Складання сценаріїв

Зміст теми: Знайомство із текстовою операційною оболонкою bash, вивчення мови програмування оболонки bash та практичне складання найпростіших сценаріїв за допомогою редактора vi (vim).

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

1 Загальні відомості про текстові оболонки в Linux

Досить часто в процесі роботи з комп’ютером потрібно часто повторювати одні і ті ж команди Linux. Операційна система дозволяє записати необхідну послідовність команд в спеціальний файл, який називається сценарієм оболонки. Далі цeй сценарій можна виконувати подібно виконанню звичайної команди Linux, набравши ім’я файла. Такий принцип організації файлів існує в MS DOS – це так звані командні файли.

Створювати сценарії надають спеціальні програми – оболонки, які виступають посередником між користувачем та операційною системою. Існують як текстові, так і графічні оболонки. Найбільш відомі в Linux текстові оболонки – bash, csh, tcsh, ksh, pdksh.

Наприклад, необхідно виконати таку послідовність команд:

mkdir dir1

cp file1. txt /home/user/dir1

cd dir1

Для того, щоб оформити вказані команди у вигляді сценарію, необхідно спочатку вказати назву оболонки, в рамках якої вони будуть виконані. Якщо у сценарії використовуються лише команди операційної системи, як у нашому випадку, вибір оболонки не є суттєвим. Тому виберемо найбільш поширену оболонку, яка практично завжди є в більшості дистрибутивів Linux – оболонку bash. Таким чином, першим рядком сценарію має бути такий запис:

#! /bin/bash

Цей рядок є по суті ознакою того, що даний файл відноситься до сценаріїв. А далі вже записуються команди, які мають бути виконані.

Після створення файла сценарію (наприклад, під іменем run) необхідно перевірити, чи надано право виконати цей сценарій даному користувачеві. Як правило, для того, щоб перетворити будь-який власний файл у виконуваний файл, рядовий користувач повинен надати собі таке право за допомогою команди chmod:

chmod u+x run

Далі сценарій можна запустити на виконання із командного рядка:

. /run

або

bash run

Для того, щоб зробити сценарій більш універсальним (в нашому випадку – щоб сценарій був придатний для різних імен каталогів та файлів), використовуються позиційні параметри. За допомогою позиційних параметрів операційна система може передавати оболонці конкретні параметри (імена файлів, каталогів, змінних і т.д.) під час виклику сценарію у командному рядку або з іншого сценарію. Такі позиційні параметри мають спеціальні імена. Перший параметр зберігається у змінній з іменем 1(один) і отримати його значення в сценарії можна за допомогою виразу $1. Другий параметр зберігається у змінній з іменем 2(два) і т.д. Кількість одночасно використовуваних позиційних параметрів обмежена – не більше 9. Однак дозволяється за допомогою оператора

shift n

пересувати кожний позиційний параметр на n позицій вліво і відкидати n попередніх значень справа.

В нашому прикладі сценарій з використанням двох позиційних параметрів матиме вигляд:

#! /bin/bash

mkdir%1

cp%2 /home/user/%1

cd%1

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

. /run dir1 file1. txt

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

Розглянемо основні змінні та оператори мови програмування оболонки bash.

2 Змінні в сценаріях для bash

Мова програмування оболонки підтримує три основних типи змінних:

- змінні середовища;

- вбудовані змінні;

- змінні користувача.

Змінні середовища надаються системою, їх не потрібно визначати, але до них можна звертатись. Значення деяких із них, наприклад PATH, можна змінювати в програмі оболонки. Основні змінні середовища наведені в таблиці 3.1.

Вбудовані змінні також надаються системою, але їх не можна змінювати. До цих змінних відносяться, зокрема, такі:

$# - ряд позиційних параметрів, які передаються сценарію оболонки;

$0 - ім’я сценарію;

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

Таблиця 3.1. – Змінні середовища

Змінна середовища Значення
EDITOR Редактор, який викликається за замовчуванням
HOME Домашній каталог користувача
LOGNAME Імя, під яким користувач зареєстру-вався в системі
MAIL Шлях до поштової скриньки (файла e_mail) користувача
PATH Список каталогів, що перегляда-ються системою при пошуку команди
PS1 Початкове запрошення оболонки ($ - для рядового користувача, # - для суперкористувача)
SHELL Місцезнаходження оболонки
TERM Тип термінала користувача

Змінні користувача визначаються самим користувачем під час написання сценарію оболонки. В своєму власному сценарії користувач може довільно використовувати та змінювати їх. На відміну від звичайних універсальних мов програмування, в командних інтерпретаторах не визначається тип змінної (як, наприклад, в мові Сі – int). Система самостійно “здогадується” про тип змінної за тим значенням, яке їй присвоюється. Це легко зробити, оскільки в сценарії можна оперувати тільки цілими числами або текстовими рядками. В такому випадку одна і та ж змінна в один момент часу може слугувати для збереження цілого числа, а через деякий час – для збереження рядка. Однак це не рекомендується робити.

Для присвоєння змінній користувача цілого значення або одного текстового слова досить записати оператор присвоєння в загальноприйнятій формі, наприклад

n=5

mas=0

str1=process

Характерною особливістю сценаріїв є те, що для доступу до значення змінної, перед її іменем ставиться знак долара ($). Наприклад, для того, щоб змінній m присвоїти значення змінної n необхідно записати

m=$n

Якщо текстовий рядок складається з кількох слів, тобто містить пропуски, тоді використовуються лапки, наприклад

str2=’long text string’

Для присвоєння текстових рядків використовуються також і подвійні лапки. В цьому випадку забезпечується підстановка значень змінних всередині рядків. Наприклад, якщо записати

str2=”long text string”

str3=”Value of str2 is $str2”

тоді значенням змінної str3 буде

Value of str2 is long text string

3 Програмування арифметичних виразів

Для програмування арифметичних виразів можна застосувати такі знаки операцій:

+ сума,

- різниця,

* множення,

/ ділення,

% ділення з остачею.

Арифметичні вирази можна записати двома способами:

а) з використанням оператора let;

б) з використанням оператора expr.

Перший спосіб найбільш простий і зрозумілий, наприклад:

let y=$a*$b-$c

Оператор expr розглядає свої аргументи як арифметичний або логічний вираз. В такому випадку потрібно враховувати деякі додаткові особливості такого запису, наприклад, символи арифметичних операцій відділяти від операндів пропуском, символ операції множення а також і весь вираз брати в лапки:

y=’expr $a ‘*’ $b ‘+’ $c’

4 Оператори введення і виведення

Для введення змінних з клавіатури використовується оператор read. Наприклад, для введення змінних var, var2, var3 в сценарії необхідно записати:

read var1 var2 var3

Для виведення повідомлень на екран дисплея використовується оператор echo. Наприклад,

echo This is message

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

echo “result is $y”

Користуючись операторами введення та виведення можна написати найпростіший сценарій для обчислення арифметичних виразів:

#! /bin/bash

a=3

b=5

echo “Введіть значення змінної x”

read x

let y=($a+$b) *$x

echo “result is $y”

5 Порівняння виразів

Розглянемо порівняння чисел, рядків а також логічні і файлові операції порівняння.

5.1 Порівняння чисел

Для порівняння двох чисел можуть використовуватись такі операції:

a –eq b визначення рівності чисел a і b;

a –ne b визначення нерівності чисел a і b;

a –gt b визначення того, чи число a більше числа b;

a –ge b визначення того, чи число a більше або дорівнює числу b;

a –lt b визначення того, чи число a менше числа b;

a –le b визначення того, чи число a менше або дорівнює числу b.

5.2 Порівняння рядків

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

str1 = str2 визначення рівності рядків str1 і str2;

str1! = str2 визначення нерівності рядків str1 і str2;

-n перевірка ненульової довжини рядка;

-z перевірка нульової довжини рядка.

5.3 Логічне порівняння

Логічні операції використовуються для порівняння виразів логічних операцій NOT, AND і OR:

! логічна операція NOT над логічним виразом;

-a логічна операція AND над двома логічними виразами;

-o логічна операція OR над двома логічними виразами.

5.4 Файлові операції порівняння

Такі операції можуть використовуватись для перевірки файлів:

-d перевірка того, чи є файл каталогом;

-f перевірка того, чи є файл звичайним файлом;

-r перевірка того, чи є право доступу для читання файла;

-w перевірка того, чи є право доступу для запису у файл;

-x перевірка того, чи є право доступу для виконання файла;

-s перевірка того, чи є файл з ненульовою довжиною.

6 Умовні оператори

Умовний оператор if дозволяє в залежності від виконання заданої умови <виразу> виконувати <оператори 1> або <оператори 2>. Формат цього оператора такий:

if <вираз>

then <оператори 1>

else <оператори 2>

fi

Умовні оператори можуть бути вкладеними, наприклад:

if <вираз 1>

then <оператори 1>

else if <вираз 2>

then <оператори 2>

else <оператори 3 >

fi

fi

Ключове слово fi означає закінчення одного умовного оператора, тому їх кількість у вкладеному умовному операторі повинна дорівнювати кількості ключових слів if. Існує також форма скороченого запису вкладеного умовного оператора, коли достатньо лише одного ключового слова fi: