SHELL-СКРИПТТЕРДІ БАҒДАРЛАМАЛАУ



Л.Н. ГУМИЛЕВ АТЫНДАҒЫ ЕУРАЗИЯ ҰЛТТЫҚ УНИВЕРСИТЕТІ
АҚПАРАТТЫҚ ТЕХНОЛОГИЯЛАР ФАКУЛЬТЕТІ
ИНФОРМАТИКА ЖӘНЕ АҚПАРАТТЫҚ ҚАУІПСІЗДІК ЖҮЙЕЛЕРІ КАФЕДРАСЫ

ЖҮЙЕЛІК БАҒДАРЛАМАЛЫ ҚАМТАМА ПӘНІ
БОЙЫНША КУРСТЫҚ ЖҰМЫС
ТАҚЫРЫП: "SHELL-СКРИПТТЕРДІ БАҒДАРЛАМАЛАУ "

Орындаған: 5В100200 - Ақпараттық
қауіпсіздік жүйелері мамандығының
студенттері: Құмарғалиев Э.
Сагиналиев М.
Ғылыми жетекші: аға оқытушы, PhD доктор
Бурибаева А.К.

Астана
2017
Л.Н. ГУМИЛЕВ АТЫНДАҒЫ ЕУРАЗИЯ
ҰЛТТЫҚ УНИВЕРСИТЕТІ

Кафедра: Информатика ақпараттық қауіпсіздік жүйелері
Пән: Жүйелік бағдарламалы қамтама

БЕКІТЕМІН
Кафедра меңгерушісі
Сагиндыков К.М ___________
_________________2017 ж.

Білім алушының курстық жұмысына
ТАПСЫРМА

Курстық жұмыстың тақырыбы - Shell-скрипттерді бағдарламалау
Курстық жұмыстың мақсаты - Shell-скрипттерді қолдана отырып, максималды түрде артықшылықтарын іс жүзінде дәлелдеу

Курстық жұмыстың көлемі 24 бет

Курстық жұмыстың орындалу барысын жетекшіге баяндау уақыты
а) жиналған деректер бойынша және курстық жұмыстың орындалу бойынша баяндама желтоқсан 2017 ж.
б) курстық жұмыстың жазылу барысы бойынша баяндама
желтоқсан 2017 ж.
Курстық жұмысты тапсыру мерзімі ____ _____________2017 жыл.
Курстық жұмыстың жетекшісі PhD, аға оқытушы Бурибаева А.К.
____ _____________2017 жыл.

МАЗМҰНЫ

Кіріспе 4
Теориялық бөлім 6
Shell процедуралары 6
Командалар құрылымы 6
Командаларды топтау 7
Тәжірибелік бөлім 11
Тапсырманы анықтау 11
Тапсырманың алгоритмі 11
Алгоритм бағдарламалық іске асырылуы 13
Қорытынды 16
Пайдаланылған әдебиеттер тізімі 17
Қосымша 18

КІРІСПЕ

Қолданушы операциялық жүйемен тікелей жұмыс істемейді. Қолданушымен өзара әрекеттесуді арнайы бағдарлама жүзеге асырады. Unix жүйелерінде мұндай программалардың екі түрі бар - қабықша немесе мәтіндік режимде жұмыс жасау үшін арналған (командалық жол интерфейсі) shell және қолданушымен графикалық режимде өзара әрекеттесуді ұйымдастыратын GUI (Graphical User Interface) қолданушы графикалық интерфейсі. Көптеген бағдарламалар GUI арқылы іске қосуға бейімделмеген, сондықтан олар командалық жол арқылы іске асырылады.
Алғашқы Unix жүйелерінде shell (ағылш. қабықша) сөзінен қысқартылып алынған - sh атты бағдарламалар болды. Кейіннен GNU жобасының (Р. Столманның еркін ОЖ құрастыру бойынша жобасы) шеңберінде bash қабықшасы әзірленген болатын. Bash - ағылшын тілінде bourne agan shell дегенді білдіреді. Қазіргі заманда bash - Unix жүйелерінде ең көп таралған командалар интерпретаторы болып саналады.
Командалық қабықша тілін бағдарламалаушыға не үшін білу қажет? Командалық қабықша тілі туралы білімдер жүйені ұқыпты басқарудың басты шарты болып келеді. Тіптен өз сценарияларыңызды жазуды ойлап жүрмесеңіз де, Linux өзінің қосылуы барысында "etcrc.d" файлында орналасқан сценарий реттерін іске асырады. Бұл сценарийлер операциялық жүйенің негізг конфигурацияларын баптайды және де әртүрлі қызметтерді іске қосады. Сондықтан осы скриптерді түсіну және оларға өзгеріс енгізу жүйенің қалыпты жұмысы үшін өте маңызды.
Сценарий тілдері жаттауға және меңгеруге жеңіл болып келеді. Бұл тілде қиын операторлар мен құрылымдардың саны көп емес. Бұл тіл командалық жолда енгізілетін командаларға өте ұқсас болып келеді. Қысқа скрипттер кері өңдеуді қажет етпейді, ал үлкен скрипттерді қайта өңдеу көп уақыт алмайды.
Shell келесі мақсаттарды шешу үшін таптырмайтын құрал болып табылады:
Терминалдағы интерактивті жұмыс:
Компиляцияны орындау, тапсырманы make арқылы іске қосу;
Текстік файлдарды салыстыру;
Мәліметтердің жылдам ad-hoc анализі;
Бір жолдық жаппай әрекеттер (көптеген файлдардың атын мерзімі бойынша өзгерту)
Жүйеде болып жатқан іс-әрекеттердің диагностикасы (семафорлар, логтар, дискрипторлар, дисктегі бос орын және т.б.)
Скрипттеу:
Орналастыру скрипттері;
Интерактивті shell функцияларын өзгерту;
Бір жолдық жаппай файлдарды қайта кодтау скриптері;
Makefile-дар
Shell жалғыз және негізгі командалық тіл болып табылмайды (бірақ, ол POSIX шеңберінде стандартталған). Мысалы, cshell, kshell және bashell сияқты тілдер де дүние жүзі бойынша кең түрде қолданылады. Сонымен қатар, кез келген қолданушы өзінің командалық тілін ойлап таба алады. Және де бір операциялық жүйе ішінде бірнеше командалық тілмен жұмыс істей алады.
Осы курстық жұмыстың негізгі мақсаты - shell-скрипттердің қазіргі жүйелер үшін маңыздылығын анықтау және осы shell-скрипттерді тәжірбие жүзінде жүйе ішіндегі пайдасын кішігірім бағдарлама жазу арқылы тексеру.
Осы жұмыс тақырыбы бойынша негізгі оқулықтарына келетін болсақ, онда көптеген кітаптар арасынан Мендел Купердің Advanced Bash-Scripting Guide және де Bash Reference Manual жұмыстарын атап кетуге болады. Біріншісі Андрей Кисилев аудармасында орысша кездессе де, екі кітапты қазақша басылымда табу мүмкін болып келмейді. Bash Reference Manual кітабында shell-скриптингтің барлық жақтары ауқымды қарастырылса да, Unix жүйелерімен таныс емес адамға бұл кітапты меңгеру қиынға соғуы мүмкін. Соған қарамастан кітапта негізгі shell-скриптердің айнымалылары, процестермен жұмыс және қабықшаның жұмыс ортасы туралы мәлімет өте жақсы қарастырылған. Advanced Bash-Scripting Guide кітабы орысша аудармада кездессе де, онда shell-скриптингтің барлық қыр-сырлары толықтай қамтылмаған. Бірақ кітап Unix жүйелерімен жаңа танысып жатқан адамдар үшін және shell-скрипттер туралы хабары аз адамдарға таптырмас оқу құралы болып табылады.
Біз өзіміздің курстық жұмысымызда теориялық және эмпирикалық зерттеу әдістерін пайдаландық. Теориялық зерттеу әдісін пайдалана отырып, біз желіде және кітаптардағы бар материалдарды жинастырып, оларды бір жүйеге келтірдік. Осының арқасында біз shell-скриптер туралы негізгі барлық мәліметті жинастырдық. Эмпирикалық зерттеу әдістерін пайдалана отырып, біз кітаптарда келтірілген кодтардың жұмысын бақыладық. Shell-скрипттерде пайдаланылған негізгі bash скрипттер тілін біз осыдан бұрын өткен әр түрлі бағдарламалау тілдерімен салыстырдық.

ТЕОРИЯЛЫҚ БӨЛІМ

Shell процедуралары.

Қабықша өздігінен ешқандай қолданбалы тапсырмаларды орындамайды. Бірақ ол барлық қосымшалардың орындалуын қамтамасыз етеді: шақырылушы бағдарламаларды іздеп табу және олардың іске қосылуын мен енгізу-шығаруды ұйымдастыру сияқты операцияларды орындайды. Бұдан басқа, қабықша ортаның айнымалыларымен орындалатын жұмысқа жауап береді және түрлендірулер мен аргументтерді ауыстыруды жүзеге асырады. Қабықшаның қолданушы қолында өзін тиімді құрал ететін басты қасиеті - ол бағдарламалаудың қарапайым тілін қамтиды. Шартты операторлар, одан басқа меншіктеу мен цикл операторлар жұмысының жүзеге асырылуына толығымен қабықша жауап береді. Ол барлық утилиталар мен бағдарламаларды (операциялық жүйеде бар және жүйеге бөлек қондырылатын) оларға аргументтерді жіберуді және нәтижелерді басқа бағдарламаларға немесе қолданушыға жіберуді қамтамасыз ететін, өзі қолдайтын бағдарламалау тілінің негізгі операциялары ретінде қолданады. Нәтижесінде, өте күшті бағдарламалау тілі шығады.
Shell тілінің процедурасы - бұл командалық файл болып табылады. Командаларды жүзеге үшін, мәтіндік файлды орындалатын (chmod командасының көмегімен) етіп жасау қажет.
Жүзеге асыру келесі команданы командалық жолда жазу арқылы орындалады:
sh орындалатын_файлдың_атауы
Ерікті алгоритмдерді құрастыру үшін [ if then else ] және [ case] шарттарды тексеру операторлары қолданылады. Циклдердің жұмысын ұйымдастыру сәйкесінше for, while, until операторлары арқылы жүзеге асырылады.

Командалар құрылымы.

Shell командалары әдетте келесі үлгіде беріледі:
команда атауы кілттер аргумент(тер)

Мысалы:
ls -ls usrbin
ls - орналасқан директорияның құрылымын мазмұнын көрсететін команда атауы;
-ls - кілттер ( "-" - кілт белгісі, l - ауқымды формат, s - блоктармен есептелген файл көлемі).
usrbin - команда орындалатын директория атауы

Бұл команда экранға ауқымды форматтағы блоктармен есептелген usrbin директориясының мазмұнын шығарып береді.

Өкінішке орай, мұндай құрылым барлық командалар үшін орындалмайды. Барлық жағдай үшін кілт алдына "минус" қою қажетті емес, сонымен қатар кілттер әр жағдай үшін бір сөз болуы шарт емес. Аргументтерді сипаттаудың да өз ерекшеліктері бар. Қалыпты емес командалар қатарына келесі тізімдегі командаларды жатқызуға болады:
cc - C тілінің компиляторын шақыруға арналған команда;
find - файлдарды іздеуге арналған команда;
dd - байт бойынша бөлу арқылы көшіруге арналған команда;
tar - файлдарды сығуға арналған команда.

Әдетте, бірінші сөзді shell команда ретінде қарастырады. Сондықтан, командалық жолда енгізілген "cat cat" ішінен бірінші сөз shell-мен команда ретінде танылады.

Командаларды топтау.

Командаларды топтау құралдары:
" ; " - командалардың ретті орындалуын қадағалайтын құрал;
" & " - алдыңғы команданың асинхронды орындалуын қадағалайтын құрал;
" && " - алдыңғы команданың өткен команданың қалыпты аяқталуы кезінде ғана орындалуы, әйтпесе команданы елемеу;
" " - алдыңғы команданың өткен команданың қалыпты емес аяқталуы кезінде ғана орындалуы, әйтпесе команданы елемеу;

Мысалы find командасының орындалуын қарастырайық. Ол фондық режимде түбірден бастап " " және " conf " атты файлға дейін іздеуді орындап, содан соң қалыпты режимде " pwd " командасын орындайды. Экранда бұл бөлік мынандай күйде болады.

Кей кезде белгілі бір есептеулер саналуы үшін барлық фондық процесстер жабылуы қажет. Мұндай жағдайлар үшін арнайы "wait" командасын пайдалануға болады.

Сонымен қатар командаларды топтау үшін " { } " фигуралық жақшаларын және " ( ) " жай жақшаларын пайдалануға болады. Мысал үшін әртүрлі топтау әдістерін бір команда мысалында қарастырайық. Егер енгізілген команда:

"k1 && k2 ; k3"
Мұнда "k2" тек "k1"-дің қалыпты аяқталуынан кейін ғана орындалады.

"k1 && { k2 ; k3 }"
Мұнда екі команда ("k2" және "k3") тек қана "k1"-дің қалыпты аяқталуында ғана орындалады.

"{k1 ; k2} &"
Мұнда фондық режимде рет-ретімен "k1" және "k2" командалары орындалады.

Bash скриптердің құрылымы. "touch" командасын қолдану арқылы бос файлды құрастырамыз. Файлдың бірінші жолында біз қандай қабықшаны қолданатынымызды көрсетіп өтуіміз керек. Бізді bash қабықшасы қызықтырады, сондықтан бірінші жолдың ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Оқыту орталықтарының автоматтандырылған жүйесін құруға қолданылатын ақпараттық программалық жабдықтар
PHP тілі
PHP- мен бірге жұмыс істейтін сервердің классикалық құралы- APACHE +PHP+MySQL
PHP тілі. PHP-мен бірге жұмыс істейтін құралдар
Автоматттандырылған жүйенің программалық өнімдері
Action Script бағдарламалау тілінің теориялық негіздері
АЖ таңдау бойынша сұрыптау
Ядро және процестер
Виртуалды машинада Linux операциялық жүйесін орнату
Программалауда массивтерді сұрыптау
Пәндер