Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зертханалық жұмыс ПЕРЕВОД.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
109.06 Кб
Скачать

2. Unix тілінің командалық тілі. Shell интерпритаторы

2.1. Жалпы ережелер

SHELL интерпретаторы бүкіл операциялық жүйені тасымалдайды және пайдаланушы мен операциялық жүйе арасындағы интерфейс функцияларды орындайды. Ол жауап хабарларды ұстап қалады және пайдаланушыдан командаларды түсіндіреді, жасайды және шығарады.

Стандартты UNIX командалар мен орындалатын файлдар орындау бойынша іске қосқанға дейінгі сонымен қатар, интерпритатор жақын жоғары деңгейлі бағдарламалау тілдерінде өз мүмкіндіктеріне сәйкес өз тілін қамтиды. Бұл тіл бағдарламаларын жасауға мүмкіндік береді (shell-файлы, скрипты), тіл есептілігін және UNIX командаларды қамтуы мүмкін. Бұл файлдар түсіндірілген режимінде жасалады және орындалуы тиіс емес, бірақ олар (командалық chmod бар жиынтығы) орындау құқығы болуы тиіс.

Пәрмендік (шақыру) кейін пернетақта пәрмендерін енгізу арқылы қапталған пайдаланушы өзара іс-қимылды білдіреді, әдетте '$' символымен.

Кірген таңбалар тізбек интерпретаторы, не ішкі команда аты, немесе орындалатын файл аты ретінде көруге болады.

Процедура (скрипт) Shell іске қосылғанда дәлел берілуі мүмкін. Алғашқы тоғыз аргументтердің әрбіреуіне $1 –ден $9-ға дейінгі позиционды параметрлер қойылады ($0 – процедураның өзінің атауы), және бұл атауларымен текс ішінен процедураға сілтейді.

Егер кейбір операторлар Shell қарап бастамас бұрын, командалар белгілі бір таңбалар пайдалануға назар аударуы керек.

\      осы белгiге кейін тікелей келесі арнайы жолдың жойылуын белгілеу.

‘’      бір тырнақшалар: мәтіндік жақтауды үшін пайдаланылатын: бір команда дәлел ретінде беріледі.

“”      қос тырнақшаға алмастыру үшін айнымалылардың аттары бар мәтін жолағына ($ атауы) немесе доғал екпін белгісі сипаттағы (`команда`) қоса стандартты командалар үшін пайдаланылады.

``      олар қорытынды жасауға команданы орындауға пайдаланылатын доғал екпін белгісінің сипаты,.

Сонымен қатар, барлық дерлік снарядтар файлдармен жұмыс ыңғайлы болу үшін таңбаларды интерпретациялау '?' және '*', арнайы таңбалар ретінде оларды пайдалану (т.н. метасимволдар):

? – кез-келген бір символ;

* – кез-келген символдардың өзіндік шексіз саны.

Мысалға :      *.c –"c" кеңейтілулерімен берілген файл;

pr???.* – аттарынан басталады "pr" файлдарды анықтайды, бес таңбадан тұруы және кез келген кеңейтімді бар.

Жалғыз стандартты шығару дәлелдер шығыс оған өткен аласыз коммуналдық echo пайдалану, мысал ретінде қарастырайық. Ағымдағы каталогтың мазмұнын осылай көрсетуге болады:

echo “Ағымдағы каталог: \

`pwd` \

`ls`”

Ал егер команда енгізсе

echo *.?

онда бір символдың ішіндегі кеңейтілуімен барлық файлдар шығарылады.

shell тілінің ауыспалылығы

shell тілі ауыспалылармен жұмыс істеуге мүмкіндік береді (без предварительного объявления). Ауыспалылар әріптерден тұрады және құрамы әріптер мен сандардан тұрады. Ауыспалыларға жүктелу '$' белгісінен басталады.

Мысал. Пайдаланушының каталогының басына өту үшін:

cd $HOME

Меншіктеу операторы. Ешқандай кеңістіксіз тек '=' операторын пайдаланып айнымалы мәндерді меншіктеу.

Мысал:                        s=Hello

echo $s

Өрнек бағалау EXPR және арифметикалық және логикалық операторлар арқылы жүзеге асырылады:

Арифметикалық

логикалық

+

Қосынды

=

тең

-

Азайтынды

!-

Тең емес

\*

Көбейту

\<

кем

/

Бөлу

\<=

Кем немесе тең

%

Бөліндінің қалдығы

\>

артық

 

 

\>=

Артық немесе тең

Салыстыру операциясының нәтижесі - 1 (true) немесе 0 (false) шығады. Барлық операторлар және айнымалы атауларын бос орындармен (пробел) бөлінуі тиіс.

Мысал.

a=5 b=12

a=’expr $a + 4’

d=’expr $b - $a’

echo $a $b $d

Шығарылады:

9 12 3

Шартты өрнектер. if операторы арқылы тармақталған есептеуіш процесстің жүзеге асырылуы:

      If команда_тізімі 1

      then команда_тізімі2

      [else команда_тізімі3]

      fi

Команда_тізімі – бұл бір немесе бірнеше команда (қоснүкте үшін қолданылатын тізімдегі бос орын - ‘:’). Команда_тізімі 1 if операторына тізімдегі соңғы команданың қайта қайту кодын береді. Егер ол 0-ге тең болса, онда команда_тізімі2-ден командалар орындалады, мұндай жағдайда нөлдік қайтару коды эквивалентті “ақиқат” болып келеді. Кері жағдайда команда_тізімі3-дегі командалар орындалады, егер де ол бар болған жағдайда.

Тексері шарты test командасы көмегімен жүзеге асырылады . Бұл командалардың аргументі файл аттары, сандық және сандық емес бағандар болып табылады. Ол келесі режімдерде қолданылады:

Файлдарды тексеру:            test кілттік атау_файлы

Кілттер: -r      файл бар және оқуға болады;

            -w      файл бар және жазуға болады;

            -x      файл бар және орындауға болады;

            -f      файл бар және ‘-‘ типі бар, демек, ол жай файл;

            -s      файл бар және ‘-‘ типі бар және бос емес;

            -d      файл бар және ‘d‘ типі бар, демек, бұл каталог.

Сандарды салыстыру:            test сан1 кілттік сан 2

Кілттер:      -eq      тең;

            -ne      тең емес;

            -lt     кем;

            -le      кем немесе тең;

            -gt      артық

            -ge      артық немесе тең.

Жолдарды салыстыру:

test [-n] жол                  жол бос емес;

test -z жол                 жол бос;

test жол 1 = жол 2            жолдар өзара тең;

test жол 1 != жол 2      жолдар өзара тең емес.

Циклдарды құрастыру. shell тілінде үш типті циклдар бар: whileuntil және for.

 While циклы:

while список_команд1{;|перевод строки}

do список_команд2{;|перевод строки}

done

Шарт бойынша команда_тізімі1-ден соңғы орындалған команданың коды қайтып оралады,сонымен 0 “ақиқат” болып түсіндіріледі.

цикл until:

until команда_тізімі1{;|жолды аудару}

do команда_тізімі2{;|жолды аудару}

done

Проверка условия выполняется перед выполнением цикла. Учитывается код возврата последней выполненной команды из списка_команд1, при этом цикл выполняется до тех пор, пока код возврата не примет значение “истина”.

for циклы:

for ауыспалы [in тізімнің_құндылығы]{;| жолды аудару }

do тізімнің_құндылығы {;| жолды аудару }

done

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