IV. AMALIY MASHG'ULOT MATERIALLARI 
104

IV. AMALIY MASHG'ULOT MATERIALLARI
104
Tavsiya qilinadigan adabiyotlar
1.
A Practical Guide to Fedora and Red Hat Enterprise Linux, fifth edition,
Mark G. Sobell, U.S. Corporate and Government Sales.
2.
A-Practical-Guide-to-Linux-Commands-Editors-and-Shell-Programming-
2nd-Edition.
3.
A Practical Guide to Linux Commands, Editors, and Shell Programming,
second edition.
4.
http://opensource.com
5.
http://distrowatch.com
6.
http://fedora.com
7.
http://ubuntu.com
8.
http://debian.com
9.
http://www.wikipedia.org
10.
http://www.intuit.ru
IV. AMALIY MASHG'ULOT MATERIALLARI
105
4 – amaliy mashg'ulot. Shell interpretatorida ishlash.
Ishdan maqsad:
shell interpretatoridagi asosiy komandalar bilan tanishish,
va buyruqlar qobig‘ida skriptlar yozish to‘g‘risida bilim va ko‘nikmalar hosil
qilish.
Shell skript – bu operatsion tizim buyruq qobig‘i (shell) uchun
interpretatsiya qiluvchi dasturdir. Bu dastur matn ko‘rinishida mavjud va
bajarilishdan oldin alohida kompilyatsiya qilishni talab etmaydi. Kelishuvga ko‘ra
skriptni birinchi qatori aniq interpretatorning bajarilishi shart bo‘lgan yoriqnomasi
hisoblanadi. Umuman aytganda, Unix operatsion tizimida skriptlar aynan
buyruqlar qobig‘ida yozilishi shart emas, balki interpretator qo‘llab-quvvatlovchi
barcha tilde yozish mumkin (masalan, Perl yoki Python).
Skriptlar albatta
#! /bin/sh
bilan boshlanishi kerak. Quyida sodda misol
keltirilgan. Shell-skript Hello World:
#! /bin/sh
echo ―Hello World‖
Agarda bu matnni joriy direktoriyaga hello.sh fayl qilib saqlasak, uni 2 usul
bilan ishlatish mumkin:
$ sh hello.sh
– bu holatda sh (aynan shellni) buyrug‘ini ishga tushurib, uni
argument sifatida script fayl nomini beramiz.
$chmod +x hello.sh; ./hello.sh
– bu holatda 2 buyruq bajariladi:
avvalambor skript faylga bajarilishga ruxsat beriladi, keyin faylning o‘zi va
buyruqlar bajarilayotgan buyruqlar qobig‘i ishga tushuriladi, so‘ng fayl boshi
tahlillanadi. Agar bu kompilyatsiyalangan dastur bo‘lsa, birinchi baytlarida
kompilyatsiyalangan fayl formatini identifikatsiyalaovchi sehrli raqamni o‘zida
saqlaydi – bu holda shell boshqaruvni mos formatga to‘g‘ri keluvchi dastur
yuklovchisiga beradi. Agarda bu skript bo‘lib o‘zida shebang-qatorni(#! simvollari
bilan boshlanuvchi) saqlasa, unda uning tarkibi quyidagi qatorda ko‘rsatilgan yo‘l
dasturga beriladi (bu holda: /bin/sh). Aks holda dastur buyruq qobig‘i skript
hisoblanib, o‘zi tomonidan bajariladi.
Izoh 1: $ - konsolni operatsion tizimga taklifi. Bu buyruqni konsolda
bajarish lozimligini anglatadi ($ belgisi bo‘lmaganda).
Izoh 2: Linux muhitida dastur qobig‘i – bash (Bourne Again Shell).
IV. AMALIY MASHG'ULOT MATERIALLARI
106
Kommentariylar # simvoli bilan boshlanadi. O‘zgaruvchilar qiymati
quyidagicha beriladi:
Var1=value
Var1 – o‘zgaruvchi, value - o‘zgaruvchi qiymati. Keyinchalik bu
o‘zgaruvchini $ belgisi bilan ishlatish zarur ($var1). O‘zgaruvchini olishning
boshqa yo‘llari ham mavjud:
${var1}text - $var1 o‘zgaruvchini matndan(text) ajratib oladi;
${var1:=var2} – agarda $var1 o‘zgaruvchi aniqlanmagan bo‘lsa, unda $var2
qiymat o‘zlashtiriladi;
${var1:=-var2} – agarda $var1 aniqlanmagan bo‘lsa, unda $var2 qiymat
chiqariladi($var1 o‘zlashtirilmay qoladi).
Sodda skriptga misol:
#! /bin/sh
#script 1
Var1=text1
Var2=text2
echo ${var1}klm # text1klm chiqaradi
echo ${var1:=$var2}
# text1 chiqaradi
echo ${var4:=$var2}
# text2 chiqaradi
echo $ {var4:-$var1}
# text2 chiqaradi
sh da foydalaniluvchi ba‘zi o‘zgaruvchilar:
$$ - joriy shell pid I;
$! – fon rejimidagi oxirgi jarayon pidi;
$? – oxirgi jarayon qaytarish kodi;
$x – x-bu yerda raqam: parameter, skriptga berilgan($0 – oxirgi ishga
tushurilgan skript).
Shell-skript Bourne Shell va uning variantlari uchun buyruqlar operatsion
tizim konsoli buyruqlari bilan bir xil.
man
buyrug‘i har qanday buyruq uchun
yo‘riqnoma olish imkonini beradi.
$ man sh
buyrug‘i Shell sintaksisining o‘zini
o‘rganishga imkon beradi. Shell ning muhim operatorlariga chiqishni qayta
yo‘naltirish(>) va kirishni qayta yo‘naltirish(<), yana bir dastur qayta chiqish
yo‘naltirishini boshqa kirishga yo‘naltiruvchi
pipe
konveyer(|) kiradi.
IV. AMALIY MASHG'ULOT MATERIALLARI
107
Shellda nuqta – bu joriy direktoriya uchun psevdonim hisoblanadi. Boshqa
psevdonimlarga misol qilib .. – bir sath yuqori direktoriya va ~ - uy direktoriyasini
keltirish mumkin. Buyruqlar va dasturlar har biri o‘ziga xos ravishda
interpretatsiyalanuvchi satrli argumentlarni qabul qiladi. Umuman bu argumentlar
3 xil bo‘lishi mumkin:
- sodda qiymat (sonlar, satrlar), masalan,
$ echo ―Hello World‖
da
―Hello World‖ - bu oddiy satr.
- yo‘llar, masalan
$ cat hello.txt hello.txt
– bu joriy direktoriya fayliga yo‘l.
to‘liq yo‘l quyidagi ko‘rinishida bo‘lishi mumkin:
/home/user/hello.txt
Kalit-argumentlar: - yoki -- dan boshlanib, masalan,
$ wc –l file.txt
buyrug‘i file.txt
dagi qatorlar sonini hisoblaydi.
--help
kaliti ko‘pchilik buyruqlar to‘g‘risida
qisqacha ma‘lumot olishga imkon beradi.
Sodda script yozish uchun quyidagi ketma-ketlik bajarishimiz lozim:
1.
Linux buyruqlar qatorida bo‘sh fayl (uni masalan firstscript deb nomlaymiz)
yaratamiz va uni redaktor orqali ochamiz (vi,emacs,gedit va b.)
2.
Redaktordan hosil qilingan faylni saqlagan holda chiqamiz
3.
Skriptimizni bajrilishi uchun quyidagi komandani bajaramiz:
chmod +x firstscript
4.
Quyidagi komanda orqali hosil qilingan skriptni ishga tushuramiz:
./firstscript
Skriptda parametrlar quyidagicha beriladi:
/home/shurup/script1 value1 value2 value3
value1, value2, value3
– script parametrlari
Bourne Shellda shartlar ham yaratish mumkin:
if [shart]
then bajarilishdagi harakat
else bajarilimagandagi harakat
fi
Foydalanilishga misol:
#! /bin/sh
IV. AMALIY MASHG'ULOT MATERIALLARI
108
#script 3
if [$1 == $2]
then echo ―$1 teng $2‖
else echo ―$1 teng emas $2‖
fi
$chmod +x hello.sh;
./hello.sh
sh da sikl quyidagicha yaratiladi:
while buyruq1
do
harakat1
done
harakat1 buyruq1 oxirigacha bajarilguncha bajariladi.
Misol:
#! /bin/sh
#script 4
while :
do
echo test
done
O‘zgaruvchining qiymatiga qarab bajariluvchi harakat o‘zgaruvchi sodda
dasturga misol:
#!/bin/sh
#script 6
echo "1)startx 2)reboot 3)shutdown 4)halt"
#raqamni tanlash uchun taklif
read main
#tanlovni o‘qib olish
case $main in
#tanlovga ko‘ra harakatni amalga oshiramiz
1) startx;;
2) reboot;;
3) shutdown now;;
4) halt;;
*) echo "error
#1: raqam noto‘g‘ri tanlangan"
IV. AMALIY MASHG'ULOT MATERIALLARI
109
echo "Qayta urinib ko‘ring";;
#agarda boshqa raqamlar yoki simvollar kiritilganda xatolik xabari
esac
|