#10 – Linux terminali va bash. Veb-dasturlash kursi

image
#10 – Linux terminali va bash. Veb-dasturlash kursi 53

Dennis Ritchi xotirasiga bag’ishlanadi

image 1
#10 – Linux terminali va bash. Veb-dasturlash kursi 54

Bu terminal. Terminal OT (Operatsion Tizim) da o’ranatilgan dasturlarga murojaat qilish uchun maxsus dastur. Uni kimdir terminal desa, kimdir console deydi. Windows da command line, ruschasiga комманданая строка, buyruqlar qatori nomli dastur bor bu vazifa uchun.

Terminal bu oddiygina oynalik dastur. U o’zida hech narsa saqlamaydi. Uning ishlashi uchun boshqa dastur kerak. Eng mashxuri bash. Yana bitta dastur bu shell. Ko’pchilik bash ni qulayroq deb bilishadi, shu jumladan men ham. Lekin hammaning didi har hil.

Linux OT’ida terminal boshidan o’ranatilgan bo’ladi. U bash yoki, shell da ishlashi tizim moslamalariga bog’liq.

Mac OT’ida ham terminal o’rnatilgan va odatda u yerda bash dasturi ishlatiladi.

Windows’ning command line dasturi juda kambag’al. Lekin, ushbu OT’ga ham terminal va bash o’rnatsa bo’ladi. PHP haqidagi darsimizda, xampp’ni o’rnatgan bo’lsangiz, ushbu xampp dasturida shell’ni chaqiruvchi tugmacha mavjud.

Windows’ning 11 chi versiyasida Linux buyruqlarini qo’llash imkoniyatlari paydo bo’ladi deb va’da berishgan edi. Windows 11 chiqdi, lekin u yerda qanchalik Linux buyruqlarini qo’llash amalga oshirilganidan habarim yo’q. Bilganlar bo’lsa izoh qoldiring.

image 3
#10 – Linux terminali va bash. Veb-dasturlash kursi 55

Ushbu matn “Taklif” deyiladi. Chunki u bizga yangi buyruq kiritishni taklif qilmoqda

image 4
#10 – Linux terminali va bash. Veb-dasturlash kursi 56

Taklifning chap tomonida foydalanuvchi logini turadi. Odatda bu nomni OT o’rnatayotganda ko’rsatasiz.

image 5
#10 – Linux terminali va bash. Veb-dasturlash kursi 57

Logindan so’ng kuchukcha belgisi va kompyuter nomi joylashgan. Bu nomni ham OT o’rnatayotganda ko’rsatasiz.

image 6
#10 – Linux terminali va bash. Veb-dasturlash kursi 58

Ikki nuqtadan so’ng esa hozir qaysi papkada turganimiz chop etilgan. Tilda belgisi “foydalanuvchining uy papkasi” degan ma’noni beradi. Gap shundaki OT’larda barcha foydalanuvchilarning shaxsiy papkalari mavjud. Ushbu papkani uy papkasi deymiz.

Foydalanuvchilarning uy papkalari Windows OT’ida C:Users papkasida joylashsa, *nix tizimlarida /home papkasida joylashgan bo’ladi. *nix tizimlari haqida dars davomida kengroq tushuncha beraman.

image 7
#10 – Linux terminali va bash. Veb-dasturlash kursi 59

Taklifning ohirida dollar ($), yoki panjara (#) belgisi turadi. Dollar belgisi – buyruqlar oddiy foydalanuvchi tomonidan bajarilayotganligini, panjara belgisi esa, buyruqlar super foydalanuvchi tomonidan bajarilayotganini ko’rsatadi. Oddiy foydalanuvchida faqat o’zining uy papkasi ichida o’zgartirishlar huquqi bo’lsa, super foydalanuvchi – tizimning istalgan joyida o’zgartirish kiritishi mumkin. *nix tizimlarida super foydalanuvchi odatda root loginiga ega bo’ladi

*NIX TIZIMLARI

1969-yilda “Bell Labs” ishchilari Ken Tompson va Denis Ritchi (ularni Dasturlash tillari darsidan – C tili asoschilari sifatida bilasiz), UNIX (yuniks) OT’ini yaratishadi. U assembler tilida yozilgan. Keyingi versiyasi B tilida yoziladi va B tili asosida C tili yaratiladi. Uchinchi versiyasining yadrosi esa C tilida yoziladi.

UNIX OT’izmi ochiq kodlik bo’lib, istagan odam uning kodiga o’zgartirish kiritib, o’zining OT’ini yaratishi mumkin edi.

Lekin “Bell Labs” kompaniyasi “AT&T” kompaniyasiga tegishli edi. “AT&T” esa OT’lardan yaxshigina pul ishlash mumkinligini tushunib, UNIX’ning yangi versiyalarini litsenziyalay boshlaydi. Bu esa UNIX’ning eski, bepul versiyalari ustida qurilgan yangi OT’larni jadal rivojlanishiga olib keladi. Misol uchun Berkeley Universiteti UNIX asosida BSD OT’ini chiqaradi. Uning asosida esa ko’plab yangi OT’lar paydo bo’ladi, jumladan: NetBSD. FreeBSD, OpenBSD, SunOS va hokazo.

Apple maxsulotlarida ishlatiluvchi MacOS va iOS ham FreeBSD asosida qurilgan.

“AT&T” Berkeley Universitetini sudga beradi va sud BSD OT’idan barcha AT&T’da yozilgan kodlar olib tashlanmaguncha, uni tarqatishni ta’qiqlab qo’yadi.

1983-yilda Richard Stolman – GNU loyihasini yurg’izadi. Loyiha nomi – “GNU is Not Unix” so’zlaridan olingan abbreviatura hisoblanadi va “GNU – Unix Emas” ma’nosini beradi. Bu loyihadan maqsad: UNIX kodlaridan foydalanmasdan, mutlaqo bepul UNIX’simon OT yararish edi. GNU loyohasida ko’plab dasturlar yaratiladi, lekin ularning yadrosi – ya’ni OT’ning o’zi bo’lmaydi.

1991-yilda Linus Torvalds yangi UNIX’simon OT’ni taqdim etadi. Uning do’stlari hazil tariqasida Linus va UNIX so’zlarini qo’shib, bu tizimni Linux deb atay boshlashadi. Bu nom hozirgacha saqlanib qolgan.

Linux ham “ochiq kodlik” bo’lganligi uchun, Linux OT’i va GNU dasturlaridan foydalanib istagan odam Linux distributivini yaratishi mumkin edi. Shuning uchun ham dunyoda minglab Linux distributivlari mavjud. Distributiv aslida alohida OT, lekin ular shunchalik ko’p va bir-birga o’xshashki – ularni Linux distributivi deyishadi. Debian, Ubuntu, Fedora, Kali kabi mashxur distributivlarning o’zi 300 dan ortiq.

2008-yilda Linux’ga asoslangan Android OT’i yaratildi.

2020-yilning statistikasiga qaraganda Linux 100% super kompyuterlarda ishlatiladi. 80% serverlarda esa UNIX’simon OT’lar o’rnatilgan, Bu ham asosan Linux OT’i.

Ko’rib turganingizdek Denis Ritchi “farzandi” bo’lgan UNIX OT minglab boshqa OT yaratilishiga sababchi bo’ldi. Shu jumladan: Linux, Android, MacOS, iOS, FreeBSD va hokazo. Ularning ishlash prinsiplari bir-biriga juda o’xshash. Shuning uchun ham ularni UNIX oilasi, yoki UNIX’simon OT’lar, ko’pincha esa *nix tizimlari deb aytishadi.

UNIX OT’ini yozish uchun o’ylab topilgan C tili, hozirgi kunda C++, PHP, Java, C#, Python, JavaScript kabi ko’plab tillar paydo bo’lishiga sababchi bo’lgan.

Stiv Jobsning vafoti dunyoni larzaga solgani bo’lsada, undan bir hafta o’tib vafot etgan Denis Ritchi o’limi – ommaviy axborot vositalari e’tiborini torgani yo’q. Bu esa adolatdan emas deb hisoblayman.

BUYRUQLAR

image 8
#10 – Linux terminali va bash. Veb-dasturlash kursi 60

Tizimda o’rnatilgan dasturlarni chaqirib ko’raylik. Shulardan biri: pwd

image 9
#10 – Linux terminali va bash. Veb-dasturlash kursi 61

Uni terib, enter tugmasini bosamiz. Ekranga /home/kadirov jumlasi chiqdi. Bu qaysi papkada turganimiz haqida ma’lumot. pwd – Print Working Directory degani. Qaysi papkada ishlayotganimni ekranga chiqar degan ma’noni beradi. Biz nima ish qilsak ham aynan shu papkaga nisbatan bajariladi. Misol uchun yangi papka yaratsam, u /home/kadirov papkasi ichida yaratiladi.

image 10
#10 – Linux terminali va bash. Veb-dasturlash kursi 62

mkdir dasturi Make Directory so’zidan qisqartma bo’lib, u yangi papka yaratish uchun xizmat qiladi. Ushbu dastur nomidan so’ng yangi papka nomini yozamiz. Dastur bizga hech qanday xabar chiqarmasdan nihoyasiga yetdi. Bu yaxshi, chunki terminalda xabar yo’qliginig o’zi — hushxabar. Agar biror xato bo’lganida — biz bu haqda xabarni ko’rgan bo’lar edik.

image 11
#10 – Linux terminali va bash. Veb-dasturlash kursi 63

Misol uchun ushbu buyruqni qayta teramiz. Qayta termaslik uchun klaviaturadagi yuqori strelkasini bosish ham mumkin. Yuqori va pastgi strelkalar orqali oldinroq yuborilgan buyruqlarni ko’rish mumkin.

Enter’ni bosganimizda “test papkasini yarata olmayman, u allaqachon mavjud” mazmunidagi xabarni ko’rishimiz mumkin. Ya’ni aksariyat dasturlar muvaffaqiyatli yakunlanishsa – hech qanday xabar chiqarmaydilar. Faqat xato bo’lganida biror xabar ko’rishimiz mumkin.

image 13
#10 – Linux terminali va bash. Veb-dasturlash kursi 64

Oynani tozalash uchun CTRL + L “issiq tugma”lari, yoki clear buyrug’idan foydalanish mumkin. Clear ham dastur, lekin terminalda dasturlarni chaqirishimizni “buyruq berish” deb ataymiz. Shuning uchun ham “mkdir buyrug’i” deganda mkdir dasturini chaqirish nazarda tutiladi.

image 14
#10 – Linux terminali va bash. Veb-dasturlash kursi 65

Keyingi dastur ls. Ushbu buyruq biz turgan papka ichida joylashgan fayl va papkalarni ekranga chiqaradi. E`tibor bering, biz oldinroq yaratgan test papkasi ham ko’rinmoqda.

image 15
#10 – Linux terminali va bash. Veb-dasturlash kursi 66

Barcha dasturlarni o’zimizga moslash mumkin. Umumiy dasturlash teoriyasidan Parametr nima ekanligi esingizda bo’lsa kerak? Funksiya chaqirayotganda uning parametrlari orqali o’zimizga moslar edik. Dastularni chaqirayotganda ham ularga parametrlar berish mumkin. Ingliz tilida, dastur parametrlarini ko’proq options deyishadi.

Dastruchilar, yaratayotgan dasturida qanday parametrlar bo’lishini o’zlari hal qilishadi. Lekin urf bo’lgan qonunlar ham bor va dasturchilar bu urflarni qo’llashga harakat qilishadi.

Misol uchun parametr nomi bir nechta belgidan iborat bo’lsa, bu parametr oldidan ikki chiziq qo’yiladi. Misol uchun –help parametri. Ko’pchilik dasturlarda –help parametri bor, u “Yordam” ma’nosini beradi. Bu parametr orqali dastur nima ish bajarishini, mavjud parametrlar va boshqa ma’lumotni bilish mumkin

image 16
#10 – Linux terminali va bash. Veb-dasturlash kursi 67

Probel orqali bir nechta parametrlar ishlatish mumkin. Misol uchun –quote-name parametri fayl va papka nomlarini qo’shtirnoqqa oladi. –size parametri esa fayl va papkalarning hajmini ham chop etadi

image 17
#10 – Linux terminali va bash. Veb-dasturlash kursi 68

Agar parametr bitta belgidan iborat bo’lsa, uning oldidan bitta chiziqcha qo’yamiz. Misol uchun ls dasturining l parametri, papka va fayllarni ro’yxat ko’rinishida chop etadi.

image 18
#10 – Linux terminali va bash. Veb-dasturlash kursi 69

ls dasturi yashirincha fayl va papkalarni ham ko’rsatishi uchun -a parametridan foydalanish mumkin. *nix tizimlarida nuqtadan boshlangan fayllar yashiringan fayllar deyiladi. Yoki, ularni tizim fayllari ham deyish mumkin.

image 19
#10 – Linux terminali va bash. Veb-dasturlash kursi 70

Parametr bitta belgidan iborat bo’lsa, uni bir chiziq orqali ko’rsatish mumkin dedik. Bitta belgidan iborat parametrlarning yana bir qulay tomoni: bitta chiziqdan so’ng bir nechta parametr ko’rsatish mumkin. Bu yerda yarincha fayl va papkalar, ro’yxat shaklida ekranga chiqadi.

image 20
#10 – Linux terminali va bash. Veb-dasturlash kursi 71

Vertikal slesh orqali dasturlarning chop etayotgan matnini ekranga emas, boshqa dasturga yo’naltirishimiz mumkin. Misol uchun grep dasturiga. Ushbu dastur unga yuborilgan qatorlarni biror qolip bo’yicha solishtiradi va mos kelganini ekranga chiqaradi.

Bu yerda biz o’zimiz turgan papkadagi barcha fayl va papkalar ro’yxatini “Do” so’ziga filtrladik. Ekranga Documents va Downloads papkalari chiqdi.

image 22
#10 – Linux terminali va bash. Veb-dasturlash kursi 72

Agar biz “tes” so’zi bor qatorlarni olmoqchi bo’lsak, ekranga Templates va biz oldinroq yaratgan test papkalari chiqadi

image 23
#10 – Linux terminali va bash. Veb-dasturlash kursi 73

echo dasturi orqali biror matnni ekranga chiqarish mumkin.

image 24
#10 – Linux terminali va bash. Veb-dasturlash kursi 74

Yoki, katta belgisi (>) orqali ushbu matnni faylga yozishimiz mumkin. Agar ushbu fayl bo’lmasa, u yaratiladi. Buning uchun katta belgisidan so’ng faylga yo’l ko’rsatishimiz kerak. Yo’l korsatishni HTML dasridan eslasangiz kerak? Bu relative, ya’ni nisbiy yo’l. Yo’l hozirgi turgan papkamizga nisbatan ko’rsatiladi. Horizgi turgan papkamiz ichida test papkasi bor, uning ichida akmal.txt fayli bor demoqdamiz.

image 25
#10 – Linux terminali va bash. Veb-dasturlash kursi 75

cat dasturi esa, biror faylning matnini ekranga chiqaradi. Buning uchun dastur nomidan so’ng, faylimizga yo’l ko’rsatishimiz kerak.

image 26
#10 – Linux terminali va bash. Veb-dasturlash kursi 76

Terminalda yo’l ko’rsatish juda qulay. Men “te” harflarini tergach klaviaturadagi “tab” tugmasini bosaman. U odatda “Caps Lock” tugmasining yuqorisida joylashgan.

image 27
#10 – Linux terminali va bash. Veb-dasturlash kursi 77

Shunda terminalning o’zi “test/” deb yozadi. Chunki hozir turgan papkamda “te” harflari bilan boshlanuvchi boshqa papka, yoki fayl yo’q.

image 28
#10 – Linux terminali va bash. Veb-dasturlash kursi 78

So’ng, yana bir marotaba tabni bosaman, shunda “akmal.txt” so’zi avtomatik ravishda qo’yiladi. Chunki test papkasida boshqa fayl yo’q. Demak ushbu faylda nima borligini bilish uchun “cat te” deb yozdim va ikki marotaba “tab” tugmasini bosdim. Bu vaqtni juda tejaydi.

image 29
#10 – Linux terminali va bash. Veb-dasturlash kursi 79

Shu sababdan ham Linux OT foydalanuvchilari ko’proq terminaldan foydalanishadi. Chunki Linux tashqi ko’rinishi qanchalik chiroyli bo’lmasin, avval fayl menendjerini ochib, keyin test papkasini ochib, so’ng akmal.txt faylini ochguncha bir necha soniya ko’proq vaqt ketishi mumkin. Soniyalarning qadrini mensimaslik mumkin, lekin har bir amaldan bir necha soniya tejab, ancha tez ishlashni o’rganish mumkin. “tab”dan boshqa ham tez ishlash uchun yordam beradigan imkoniyatlar ko’p. Darslarimda ular haqida ham ko’proq ma’lumot berishga harakat qilaman.

Windows’da esa buning iloji yo’q, chunki ushbu OT’da tashqi ko’rinishsiz ishlab bo’lmaydi.

MacOS ham *nix OT’i ekanligini aytgandim. Shuning uhcun bu OT’da ham vaqtingizni tejovchi terminal mavjud.

image 30
#10 – Linux terminali va bash. Veb-dasturlash kursi 80

cd dasturining nomi Change Directory so’zlaridan olingan. U biz ishlab turgan papkani o’zgartiradi. Endi barcha buyruqlarimiz test papkasiga nisbatan beriladi

image 31
#10 – Linux terminali va bash. Veb-dasturlash kursi 81

Bu narsadan terminalning ikki nuqtadan so’ng yozilgan yo’li ham ma’lumot berib turibdi.

image 32
#10 – Linux terminali va bash. Veb-dasturlash kursi 82

Endi ls dasturi faqat akmal.txt falini ko’rsatmoqda

image 33
#10 – Linux terminali va bash. Veb-dasturlash kursi 83

ls dasturiga ham yo’l ko’rsatishimiz mumkin. Shunda u biz turgan papka emas, yo’l ko’rsatgan papkamiz ichidagi fayl va papkalarni ko’rsatadi. Bu yerda biz test papkasidan chiqmoqdamiz, ya’ni yana home papkasini ko’rsat dedik.

image 34
#10 – Linux terminali va bash. Veb-dasturlash kursi 84

HTML darsida nisbiy yo’l ko’rgan edik. Undan tashqari absolute, yani mutlaq yo’l ham bor. U qaysi papkada turganizdan qat’iy nazar bir hil bo’ladi. Yo’l tizimning ildizidan boshlab to’liq ko’rsatilishi shart. Windows’da bu yo’l masalan “С:” deb boshlansa, *nix tizimlarida disklar ham papka shaklida ulanadi. Shuning uchun mutlaq yo’llar “/” dan boshlanishadi.

image 35
#10 – Linux terminali va bash. Veb-dasturlash kursi 85

Mana mening uy papkamga mutlaq yo’l. Mutlaq yo’lni boshqacha qilib, to’liq yo’l ham deyishadi

image 36
#10 – Linux terminali va bash. Veb-dasturlash kursi 86

mv dasturi move so’zidan olingan va u biror fayl, yoki papkani bir joydan, ikkinchi joyga ko’chiradi. Biz ushbu papkadagi akmal.txt faylini, papka “tashqarisiga”, ya’ni uy papkamizga ko’chirdik.

image 40
#10 – Linux terminali va bash. Veb-dasturlash kursi 87

ls dasturi orqali uni ko’rishimiz mumkin.

image 38
#10 – Linux terminali va bash. Veb-dasturlash kursi 88

Endi, ushbu faylni qaytarib test papkasiga ko’chirdik. Faqat bu safar uning nomini kadirov.txt ga o’zgartirdik.

image 41
#10 – Linux terminali va bash. Veb-dasturlash kursi 89

ls orqali ushbu fayl nomi o’zgarganiga amin bo’lishimiz mumkin.

image 42
#10 – Linux terminali va bash. Veb-dasturlash kursi 90

mv dadsturini fayl, yoki papka nomlarini o’zgartirish uchun ham ishlatish mumkin.

image 43
#10 – Linux terminali va bash. Veb-dasturlash kursi 91

ls orqali buni tekshirdik

image 44
#10 – Linux terminali va bash. Veb-dasturlash kursi 92

cp dasturi esa copy so’zidan olingan va uni fayl va papkalardan nusxa ko’chirish uchun ishlatishadi

image 45
#10 – Linux terminali va bash. Veb-dasturlash kursi 93

yana ls’ga murojaat qilamiz

image 46
#10 – Linux terminali va bash. Veb-dasturlash kursi 94

rm esa remove so’zidan olingan va u fayl va papkalarni o’chirish uchun hizmat qiladi.

image 47
#10 – Linux terminali va bash. Veb-dasturlash kursi 95

Fayl o’chirilganiga amin bo’lamiz

image 48
#10 – Linux terminali va bash. Veb-dasturlash kursi 96

cd dasturiga yo’l ko’rsatmasak, u bizni uy papkamizga olib o’tadi.

image 49
#10 – Linux terminali va bash. Veb-dasturlash kursi 97

Agar katta matnga ega faylimiz bo’lsa

image 50
#10 – Linux terminali va bash. Veb-dasturlash kursi 98

Lekin biz uning faqat ohirgi qatorlarini ko’rmoqchi bo’lsak tail (ingilizchasiga dum degani) dasturidan foydalanish mumkin

image 51
#10 – Linux terminali va bash. Veb-dasturlash kursi 99

Agar tail dasturiga -f parametrini bersak, unda matnlar ekranga chiqqach dastur o’z ishini to’xtatmaydi. U terminalda “osilib” turaveradi.

image 52
#10 – Linux terminali va bash. Veb-dasturlash kursi 100

Boshqa dastur orqali faylga o’zgartirish kiritsak, tail dasturi o’zgarishni birdan ekranga chiqaradi. Bu dasturlarning LOG fayllarini analiz qilish uchun juda qulay. Dasturlar odatda har bir muhim qadamlarni maxsus fayllarga yozib borishadi. Bu fayllarni log’lar deymiz.

Shu o’rinda echo dan so’ng ikkita sterkla qo’yib (>>) fayl matnini to’liq almashtirish o’rniga, yangi matnni faylning ohiriga joylash mumkin.

“Osilib” turgan dasturlardan chiqish uchun CTRL + C issiq tugmalarini bosish kerak. Bu “Cancel”, ya’ni bekor qilish ma’nosini beradi.

Bir xil “osilib” turuvchi dasturlarda yozish imkoni bor, u yerda exit (chiqish) deb yozib, yana bashga qaytish mumkin. Klaviaturada chiqish ma’nosini beruvchi yana bir issiq tugmalar – CTRL + D. Hullas biror dasturga kirib qolsangiz va undan chiqa olmasangiz, manashu 3 variantdan birini bajarib ko’ring. Uch variant ham yordam bermasa, terminal oynasini yopish mumkin. Shunda, teminalda ishlab turgan barcha dasturlar – ishlashni to’xtatishadi.

image 53
#10 – Linux terminali va bash. Veb-dasturlash kursi 101

Endi test papkamizni o’chirmoqchi bo’lsak, dastur papkani o’chira olmasligi haqida xabar olamiz. Chunki papka bo’sh emas. Avval ichidagi fayllarni, undan keyingina papkaning o’zini o’chirishimiz mumkin.

image 54
#10 – Linux terminali va bash. Veb-dasturlash kursi 102

Lekin papkamizda yuzlab fayllar bo’lishi mumkin. Har birini alohida o’chirib o’tirmaslik uchun, -r parametrini ko’rsatishimiz mumkin. Shunda dasturning o’zi barcha fayl va papkani o’chiradi. Bazida u ogohlantirishlar chiqarishi va fayl, yoki papakalarni o’chirmasligi mumkin. “Ogohlantirib o’tirmasdan o’chirayver” demoqchi bo’lsak -f parametrini qo’shishimiz mumkin

image 55
#10 – Linux terminali va bash. Veb-dasturlash kursi 103

Shuning uchun ham hech qachon, eshitayapsizmi, hech qachon bunaqa kod yozmang. Ayniqsa super foydalanuvchi nomidan. …yo’q-yo’q, hayolingizga ham keltirmang

53+