<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>SNRG py | Nematjon Shahobiddinov</title><generator>teletype.in</generator><description><![CDATA[&quot;Har bir lahza — bu yangi imkoniyatdir.
Agar bugun vaqtni to'g'ri ishlatsangiz, ertaga sizga foyda keltiradi.&quot;
]]></description><image><url>https://img1.teletype.in/files/46/1a/461a3018-47f5-4823-ac8c-e51dd6b592a3.png</url><title>SNRG py | Nematjon Shahobiddinov</title><link>https://teletype.in/@snrg_py</link></image><link>https://teletype.in/@snrg_py?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/snrg_py?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/snrg_py?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 23 Sep 2026 01:41:29 GMT</pubDate><lastBuildDate>Wed, 23 Sep 2026 01:41:29 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@snrg_py/fXgaPjV1m8z</guid><link>https://teletype.in/@snrg_py/fXgaPjV1m8z?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/fXgaPjV1m8z?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>studentlar uchun</title><pubDate>Fri, 04 Sep 2026 06:54:14 GMT</pubDate><description><![CDATA[https://drive.google.com/file/d/1kIhjglA_PP0xHnrssl75eiaUtUY_s4bG/view?usp=drive_link]]></description><content:encoded><![CDATA[
  <p id="bYfi"><a href="https://drive.google.com/drive/folders/10QfOfauw0IxoPPZhrdhS0-Jp4Lu7WXi2?usp=sharing" target="_blank">https://drive.google.com/drive/folders/10QfOfauw0IxoPPZhrdhS0-Jp4Lu7WXi2?usp=sharing</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@snrg_py/jPQQLZFoK6l</guid><link>https://teletype.in/@snrg_py/jPQQLZFoK6l?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/jPQQLZFoK6l?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>Modul - Args / Kwargs</title><pubDate>Thu, 20 Aug 2026 09:30:38 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/05/38/053890fd-999a-4311-87c7-5c0992aa33ab.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/25/32/2532e27e-b7b8-4383-ba14-305a09719742.png"></img>Modullar + Lambda, map() va filter()]]></description><content:encoded><![CDATA[
  <p id="MzvK"><strong>Modullar + Lambda, map() va filter()</strong></p>
  <hr />
  <h2 id="QSDR">1-dars: Modullar</h2>
  <h3 id="YF1V">1. Modul nima?</h3>
  <p id="an7S">Modul — bu loyihangiz ichidagi alohida .py fayl. U ichiga funksiyalar va o‘zgaruvchilarni joylab, asosiy dasturdan “yashirish” imkonini beradi.</p>
  <p id="fKu3"><strong>Afzalliklari:</strong></p>
  <ul id="iFdT">
    <li id="jlr8">Asosiy dastur qisqa va tushunarli bo‘ladi</li>
    <li id="5vVT">Kodni boshqa loyihalarda qayta ishlatish mumkin</li>
    <li id="01Py">Boshqa dasturchilar bilan ulashish oson</li>
    <li id="4HcB">Katta dasturlar odatda ko‘plab modullardan iborat bo‘ladi</li>
  </ul>
  <hr />
  <h3 id="0QZH">2. Modul yaratish</h3>
  <p id="wtjb">Asosiy dastur faylini odatda main.py deb nomlash tavsiya etiladi. Funksiyalarni alohida faylga ko‘chiramiz.</p>
  <p id="o56J"><strong>Misol:</strong> talaba_mod.py nomli modul yaratamiz:</p>
  <p id="1vZQ">Python</p>
  <pre id="3ifL" data-lang="python">def talaba_info(ism, familiya, yosh, kurs, guruh, stipendya=None):
    &quot;&quot;&quot;Talaba ma&#x27;lumotlarini lug&#x27;at ko&#x27;rinishida qaytaruvchi funksiya&quot;&quot;&quot;
    talaba = {
        &#x27;ism&#x27;: ism,
        &#x27;familiya&#x27;: familiya,
        &#x27;yosh&#x27;: yosh,
        &#x27;kurs&#x27;: kurs,
        &#x27;guruh&#x27;: guruh,
        &#x27;stipendya&#x27;: stipendya
    }
    return talaba

def talaba_kirit():
    &quot;&quot;&quot;Foydalanuvchidan bir nechta talaba ma&#x27;lumotlarini qabul qiluvchi funksiya&quot;&quot;&quot;
    talabalar = []
    while True:
        print(&quot;\nQuyidagi ma&#x27;lumotlarni kiriting:&quot;)
        ism = input(&quot;Ismi: &quot;)
        familiya = input(&quot;Familiyasi: &quot;)
        yosh = input(&quot;Yoshi: &quot;)
        kurs = input(&quot;Kursi: &quot;)
        guruh = input(&quot;Guruhi: &quot;)
        stipendya = input(&quot;Stipendyasi (bo&#x27;sh qoldirish mumkin): &quot;)
        
        talabalar.append(talaba_info(ism, familiya, yosh, kurs, guruh, stipendya))
        
        javob = input(&quot;Yana talaba qo&#x27;shasizmi? (ha/yo&#x27;q): &quot;)
        if javob.lower() == &quot;yo&#x27;q&quot;:
            break
    return talabalar

def info_print(talaba):
    &quot;&quot;&quot;Talaba ma&#x27;lumotlarini chiroyli chiqaruvchi funksiya&quot;&quot;&quot;
    print(f&quot;{talaba[&#x27;ism&#x27;].title()} {talaba[&#x27;familiya&#x27;].title()}, &quot;
          f&quot;{talaba[&#x27;yosh&#x27;]} yosh, {talaba[&#x27;kurs&#x27;]}-kurs, &quot;
          f&quot;{talaba[&#x27;guruh&#x27;]}-guruh, stipendya: {talaba[&#x27;stipendya&#x27;]}&quot;)</pre>
  <hr />
  <h3 id="7wAE">3. Modulni chaqirish usullari</h3>
  <p id="yq3c"><strong>1. Oddiy import</strong></p>
  <p id="Ghih">Python</p>
  <pre id="AALO">import talaba_mod

talaba1 = talaba_mod.talaba_info(&quot;Ali&quot;, &quot;Valiyev&quot;, 20, 2, &quot;AI-21&quot;, 800000)
talaba_mod.info_print(talaba1)</pre>
  <p id="YULr"><strong>2. Qisqa nom berish (as)</strong></p>
  <p id="FOYy">Python</p>
  <pre id="ydWN">import talaba_mod as tm

talaba1 = tm.talaba_info(&quot;Ali&quot;, &quot;Valiyev&quot;, 20, 2, &quot;AI-21&quot;, 800000)
tm.info_print(talaba1)</pre>
  <p id="fuei"><strong>3. Kerakli funksiyalarni olish</strong></p>
  <p id="3TYZ">Python</p>
  <pre id="bXz7">from talaba_mod import talaba_info, info_print

talaba1 = talaba_info(&quot;Ali&quot;, &quot;Valiyev&quot;, 20, 2, &quot;AI-21&quot;, 800000)
info_print(talaba1)</pre>
  <p id="V99Q"><strong>4. Funksiyalarga ham qisqa nom berish</strong></p>
  <p id="feRI">Python</p>
  <pre id="nOqW">from talaba_mod import talaba_info as tinfo, info_print as iprint

talaba1 = tinfo(&quot;Ali&quot;, &quot;Valiyev&quot;, 20, 2, &quot;AI-21&quot;, 800000)
iprint(talaba1)</pre>
  <p id="Za7t"><strong>5. Barcha funksiyalarni olish (tavsiya etilmaydi)</strong></p>
  <p id="x9ep">Python</p>
  <pre id="nbNb">from talaba_mod import *</pre>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <blockquote id="xUkB" data-align="center"><strong>DIQQAT! <br />Katta modullarda nomlar to‘qnashuvi bo‘lishi mumkin.<br />Bu usuldan kamroq foydalaning.</strong></blockquote>
  </section>
  <hr />
  <h3 id="46Bs">4. Pythonning o‘zida bor modullar</h3>
  <h4 id="vC1Q">math moduli</h4>
  <p id="KXLZ">Python</p>
  <pre id="dhSn">import math

print(math.sqrt(400))       # 20.0
print(math.pow(5, 3))       # 125.0
print(math.pi)              # 3.141592653589793
print(math.log2(8))         # 3.0
print(math.log10(100))      # 2.0</pre>
  <p id="3u2O">Foydali funksiyalar: ceil(), floor(), fabs(), sin(), cos(), tan(), degrees(), radians()</p>
  <h4 id="8KkB">random moduli</h4>
  <p id="JuwA">Python</p>
  <pre id="fkMJ">import random as r

print(r.randint(1, 100))                # 1–100 oralig‘ida tasodifiy son

ismlar = [&#x27;Ali&#x27;, &#x27;Vali&#x27;, &#x27;Hasan&#x27;, &#x27;Husan&#x27;]
print(r.choice(ismlar))                 # ro‘yxatdan tasodifiy element

sonlar = list(range(11))
r.shuffle(sonlar)                       # ro‘yxatni aralashtirish
print(sonlar)</pre>
  <hr />
  <h2 id="mqq3">2-mavzu: Lambda, map() va filter()</h2>
  <h3 id="LvpC">1. Lambda (nomsiz) funksiya</h3>
  <p id="Gt4U">Lambda — vaqtinchalik, nomsiz funksiya. Faqat <strong>bitta ifoda</strong> bo‘lishi mumkin.</p>
  <p id="m1MS"><strong>Sintaksis:</strong></p>
  <p id="ndxG">Python</p>
  <pre id="cITz">lambda argumentlar: ifoda</pre>
  <p id="WVRW"><strong>Oddiy misollar:</strong></p>
  <p id="IYWC">Python</p>
  <pre id="6iJy"># Ikki sonni ko‘paytirish
kopaytir = lambda x, y: x * y
print(kopaytir(6, 7))           # 42

# Sonning kvadrati
kvadrat = lambda x: x ** 2
print(kvadrat(9))               # 81

# Matnni katta harfga o‘tkazish
katta = lambda matn: matn.upper()
print(katta(&quot;python&quot;))          # PYTHON</pre>
  <p id="ilbH"><strong>Lambda qaytaruvchi funksiya:</strong></p>
  <p id="AvZ7">Python</p>
  <pre id="D9GR">def daraja(n):
    return lambda x: x ** n

kvadrat = daraja(2)
kub = daraja(3)

print(f&quot;4 ning kvadrati: {kvadrat(4)}&quot;)   # 16
print(f&quot;4 ning kubi: {kub(4)}&quot;)           # 64</pre>
  <hr />
  <h3 id="Osol">2. map() funksiyasi</h3>
  <p id="u5Ny">map() — ro‘yxat (yoki boshqa iterable) elementlariga berilgan funksiyani qo‘llaydi.</p>
  <p id="naLg">Python</p>
  <pre id="ohIi">sonlar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Har bir sonni 3 ga ko‘paytirish
uch_baravar = list(map(lambda x: x * 3, sonlar))
print(uch_baravar)
# [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

# Har bir sonning kvadrati
kvadratlar = list(map(lambda x: x ** 2, sonlar))
print(kvadratlar)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]</pre>
  <p id="a6S9"><strong>Matnlar bilan:</strong></p>
  <p id="4Q5i">Python</p>
  <pre id="WUZi">ismlar = [&#x27;ali&#x27;, &#x27;vali&#x27;, &#x27;hasan&#x27;, &#x27;husan&#x27;, &#x27;olim&#x27;]
print(list(map(lambda ism: ism.title(), ismlar)))
# [&#x27;Ali&#x27;, &#x27;Vali&#x27;, &#x27;Hasan&#x27;, &#x27;Husan&#x27;, &#x27;Olim&#x27;]</pre>
  <p id="DuxS"><strong>Ikki ro‘yxatni qo‘shish:</strong></p>
  <p id="yjIi">Python</p>
  <pre id="n8IS">a = [10, 20, 30]
b = [5, 15, 25]
yigindi = list(map(lambda x, y: x + y, a, b))
print(yigindi)   # [15, 35, 55]</pre>
  <hr />
  <h3 id="wTV2">3. filter() funksiyasi</h3>
  <p id="6fA3">filter() — ro‘yxatdan shartga mos elementlarni ajratib oladi. Funksiya True yoki False qaytarishi kerak.</p>
  <p id="t4Ux">Python</p>
  <pre id="LsQC">sonlar = [12, 7, 25, 18, 9, 30, 4, 21, 16, 11]

# Faqat juft sonlar
juftlar = list(filter(lambda x: x % 2 == 0, sonlar))
print(juftlar)   # [12, 18, 30, 4, 16]

# 15 dan katta sonlar
katta_sonlar = list(filter(lambda x: x &gt; 15, sonlar))
print(katta_sonlar)  # [25, 18, 30, 21, 16]</pre>
  <p id="9mDf"><strong>Matnlar bilan:</strong></p>
  <p id="UCIF">Python</p>
  <pre id="55c9">mevalar = [&#x27;olma&#x27;, &#x27;anor&#x27;, &#x27;anjir&#x27;, &#x27;shaftoli&#x27;, &quot;o&#x27;rik&quot;, &#x27;tarvuz&#x27;, &#x27;qovun&#x27;, &#x27;banan&#x27;]

# &#x27;a&#x27; harfi bilan boshlanadiganlar
a_bilan = list(filter(lambda meva: meva.startswith(&#x27;a&#x27;), mevalar))
print(a_bilan)

# Uzunligi 5 yoki undan kam bo‘lganlar
qisqa = list(filter(lambda meva: len(meva) &lt;= 5, mevalar))
print(qisqa)</pre>
  <p id="je9Q"><strong>Kitoblar misoli:</strong></p>
  <p id="HV8r">Python</p>
  <pre id="n9uJ">kitoblar = [
    &quot;Python asoslari&quot;,
    &quot;JavaScript to&#x27;liq kurs&quot;,
    &quot;Ma&#x27;lumotlar bazasi&quot;,
    &quot;Sun&#x27;iy intellekt&quot;,
    &quot;Veb dasturlash&quot;,
    &quot;Algoritmlar&quot;
]

# &quot;Python&quot; so‘zi bor kitoblar
python_kitoblar = list(filter(lambda k: &quot;Python&quot; in k, kitoblar))
print(python_kitoblar)

# 15 harfdan uzun nomli kitoblar
uzun_nomlar = list(filter(lambda k: len(k) &gt; 15, kitoblar))
print(uzun_nomlar)</pre>
  <hr />
  <h3 id="hTsY">Qisqa xulosa</h3>
  <figure id="NXhn" class="m_column">
    <img src="https://img3.teletype.in/files/25/32/2532e27e-b7b8-4383-ba14-305a09719742.png" width="932" />
  </figure>
  <p id="4qcT">Amaliy topshiriqlar</p>
  <ol id="BFbs">
    <li id="0PZB">talaba_mod.py modulidan foydalanib, 3 ta talaba ma’lumotini kiriting va chiqaring.</li>
    <li id="lmZ8">Ro‘yxatdagi sonlardan faqat 3 ga bo‘linadiganlarini filter + lambda yordamida ajrating.</li>
    <li id="A2Qa">Ismlar ro‘yxatidan faqat 4 harfli ismlarni ajrating.</li>
    <li id="fICC">Kitoblar ro‘yxatidan nomi “dasturlash” so‘zini o‘z ichiga olganlarini toping.</li>
    <li id="HQb7">math va random modullaridan foydalanib, 5 ta tasodifiy son oling va ularning kvadrat ildizlarini hisoblang.</li>
  </ol>
  <p id="Z8qU"></p>
  <p id="lTe2"></p>
  <p id="nSEk">uy vazifasi:</p>
  <h2 id="ILzR">Uy vazifasi</h2>
  <p id="jWHi"></p>
  <p id="CqAC"><strong># Random moduli yordamida o‘yinlar ro‘yxati</strong></p>
  <p id="1CSg">Quyida random modulidan foydalanib qilish mumkin bo‘lgan oddiy va qiziqarli o‘yinlar ro‘yxati keltirilgan. Har biriga qisqa kod misoli qo‘shilgan.</p>
  <hr />
  <h3 id="ocO5">1. Son topish o‘yini (Guess the Number)</h3>
  <p id="dJGK">Kompyuter 1 dan 100 gacha son o‘ylaydi, siz topasiz.</p>
  <p id="0v7S">Python</p>
  <pre id="sJ3r">import random

sirli_son = random.randint(1, 100)
urinish = 0

print(&quot;1 dan 100 gacha son o‘yladim. Toping!&quot;)

while True:
    taxmin = int(input(&quot;Sonni kiriting: &quot;))
    urinish += 1
    
    if taxmin &lt; sirli_son:
        print(&quot;Kattaroq son kiriting!&quot;)
    elif taxmin &gt; sirli_son:
        print(&quot;Kichikroq son kiriting!&quot;)
    else:
        print(f&quot;Tabriklayman! {urinish} ta urinishda topdingiz.&quot;)
        break</pre>
  <hr />
  <h3 id="67Tt">2. Tosh-qog‘oz-qaychi (Rock-Paper-Scissors)</h3>
  <p id="vIPH">Python</p>
  <pre id="gDDB">import random

variantlar = [&quot;tosh&quot;, &quot;qog&#x27;oz&quot;, &quot;qaychi&quot;]

while True:
    foydalanuvchi = input(&quot;tosh / qog&#x27;oz / qaychi (chiqish uchun &#x27;exit&#x27;): &quot;).lower()
    
    if foydalanuvchi == &quot;exit&quot;:
        print(&quot;O‘yin tugadi!&quot;)
        break
    
    if foydalanuvchi not in variantlar:
        print(&quot;Noto‘g‘ri tanlov!&quot;)
        continue
    
    kompyuter = random.choice(variantlar)
    print(f&quot;Kompyuter tanladi: {kompyuter}&quot;)
    
    if foydalanuvchi == kompyuter:
        print(&quot;Durrang!&quot;)
    elif (foydalanuvchi == &quot;tosh&quot; and kompyuter == &quot;qaychi&quot;) or \
         (foydalanuvchi == &quot;qog&#x27;oz&quot; and kompyuter == &quot;tosh&quot;) or \
         (foydalanuvchi == &quot;qaychi&quot; and kompyuter == &quot;qog&#x27;oz&quot;):
        print(&quot;Siz yutdingiz!&quot;)
    else:
        print(&quot;Kompyuter yutdi!&quot;)</pre>
  <hr />
  <h3 id="2nzj">3. Zar o‘yini (Dice Roll)</h3>
  <p id="QLcX">Python</p>
  <pre id="Bm3a">import random

while True:
    input(&quot;Zar tashlash uchun Enter bosing...&quot;)
    zar = random.randint(1, 6)
    print(f&quot;Tushgan son: {zar}&quot;)
    
    yana = input(&quot;Yana o‘ynaysizmi? (ha/yo&#x27;q): &quot;).lower()
    if yana != &quot;ha&quot;:
        break</pre>
  <hr />
  <h3 id="P6L2">4. Random ism tanlash (Ismlar o‘yini)</h3>
  <p id="VLsi">Python</p>
  <pre id="G72Q">import random

ismlar = [&quot;Ali&quot;, &quot;Vali&quot;, &quot;Hasan&quot;, &quot;Husan&quot;, &quot;Guli&quot;, &quot;Madina&quot;, &quot;Jasur&quot;, &quot;Dilnoza&quot;]

print(&quot;Bugun navbatchi:&quot;)
print(random.choice(ismlar))</pre>
  <hr />
  <h3 id="61Rq">5. Kartalar o‘yini (Oddiy)</h3>
  <p id="RnRc">Python</p>
  <pre id="Q422">import random

suitlar = [&quot;♥&quot;, &quot;♦&quot;, &quot;♣&quot;, &quot;♠&quot;]
qiymatlar = [&quot;A&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;, &quot;6&quot;, &quot;7&quot;, &quot;8&quot;, &quot;9&quot;, &quot;10&quot;, &quot;J&quot;, &quot;Q&quot;, &quot;K&quot;]

karta = f&quot;{random.choice(qiymatlar)}{random.choice(suitlar)}&quot;
print(&quot;Sizga tushgan karta:&quot;, karta)</pre>
  <hr />
  <h3 id="YItf">6. So‘z topish o‘yini (Hangman ga o‘xshash oddiy variant)</h3>
  <p id="qkpt">Python</p>
  <pre id="JxCa">import random

sozlar = [&quot;python&quot;, &quot;dastur&quot;, &quot;kompyuter&quot;, &quot;algoritm&quot;, &quot;funksiya&quot;, &quot;modul&quot;]
sirli_soz = random.choice(sozlar)
topilgan = [&quot;_&quot;] * len(sirli_soz)
urinishlar = 7

print(&quot;So‘zni toping!&quot;)
print(&quot; &quot;.join(topilgan))

while urinishlar &gt; 0 and &quot;_&quot; in topilgan:
    harf = input(&quot;Harf kiriting: &quot;).lower()
    
    if harf in sirli_soz:
        for i in range(len(sirli_soz)):
            if sirli_soz[i] == harf:
                topilgan[i] = harf
        print(&quot;To‘g‘ri!&quot;)
    else:
        urinishlar -= 1
        print(f&quot;Noto‘g‘ri! Qolgan urinish: {urinishlar}&quot;)
    
    print(&quot; &quot;.join(topilgan))

if &quot;_&quot; not in topilgan:
    print(&quot;Tabriklayman! So‘zni topdingiz:&quot;, sirli_soz)
else:
    print(&quot;Yutqazdingiz. So‘z:&quot;, sirli_soz)</pre>
  <hr />
  <h3 id="jlPl">7. Random raqamlar bilan lotereya</h3>
  <p id="UIXB">Python</p>
  <pre id="z0Zd">import random

print(&quot;6 ta omadli raqam:&quot;)
raqamlar = random.sample(range(1, 50), 6)
raqamlar.sort()
print(raqamlar)</pre>
  <hr />
  <h3 id="P0P8">8. Tosh-qog‘oz-qaychi (Kompyuter o‘zi o‘ynaydi)</h3>
  <p id="cx8w">Python</p>
  <pre id="6RF4">import random
import time

variantlar = [&quot;tosh&quot;, &quot;qog&#x27;oz&quot;, &quot;qaychi&quot;]

print(&quot;Kompyuter o‘zi o‘ynamoqda...&quot;)
time.sleep(1)

birinchi = random.choice(variantlar)
ikkinchi = random.choice(variantlar)

print(f&quot;1-o‘yinchi: {birinchi}&quot;)
print(f&quot;2-o‘yinchi: {ikkinchi}&quot;)

if birinchi == ikkinchi:
    print(&quot;Durrang!&quot;)
elif (birinchi == &quot;tosh&quot; and ikkinchi == &quot;qaychi&quot;) or \
     (birinchi == &quot;qog&#x27;oz&quot; and ikkinchi == &quot;tosh&quot;) or \
     (birinchi == &quot;qaychi&quot; and ikkinchi == &quot;qog&#x27;oz&quot;):
    print(&quot;1-o‘yinchi yutdi!&quot;)
else:
    print(&quot;2-o‘yinchi yutdi!&quot;)</pre>
  <hr />
  <h3 id="pMVg">Qisqa xulosa</h3>
  <figure id="tljr" class="m_column">
    <img src="https://img3.teletype.in/files/6f/5e/6f5ec5c3-6e40-444a-a4f8-3722cbae3e97.png" width="629" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@snrg_py/57lzwWUgGkb</guid><link>https://teletype.in/@snrg_py/57lzwWUgGkb?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/57lzwWUgGkb?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>*args vs **kwargs</title><pubDate>Tue, 18 Aug 2026 09:17:25 GMT</pubDate><description><![CDATA[Python’da *args va **kwargs Darslik matni]]></description><content:encoded><![CDATA[
  <hr />
  <h3 id="UP8R">1. Kirish</h3>
  <p id="c759">Python’da funksiya yozayotganda ba’zan nechta argument kelishini oldindan bilmaymiz. Masalan:</p>
  <ul id="Qr6m">
    <li id="4kxK">Foydalanuvchi 3 ta son kiritishi mumkin, yoki 10 ta.</li>
    <li id="fwY2">Ba’zi ma’lumotlar ism bilan, ba’zilari esa kalit so‘z bilan kelishi mumkin.</li>
  </ul>
  <p id="VMLS">Bunday holatlar uchun Python maxsus imkoniyat beradi:</p>
  <ul id="ii29">
    <li id="Yasj">*args — istalgancha <strong>isimsiz</strong> (positional) argumentlarni qabul qiladi</li>
    <li id="bcoI">**kwargs — istalgancha <strong>kalit-so‘zli</strong> (named) argumentlarni qabul qiladi</li>
  </ul>
  <p id="JDeP">Bu ikki imkoniyat dasturlashni juda moslashuvchan qiladi.</p>
  <hr />
  <h3 id="KkvY">2. *args nima?</h3>
  <p id="JofQ">*args — funksiyaga uzatilgan barcha <strong>isimsiz</strong> argumentlarni <strong>tuple</strong> ko‘rinishida yig‘ib oladi.</p>
  <p id="DrhT"><strong>Asosiy xususiyatlari:</strong></p>
  <ul id="cX2v">
    <li id="XYi5">* belgisi majburiy</li>
    <li id="XlG5">args nomi shart emas (istalgan nom qo‘yish mumkin: *sonlar, *qiymatlar...)</li>
    <li id="FOf6">Ichida ma’lumotlar <strong>tuple</strong> sifatida saqlanadi</li>
    <li id="7MW4">Bo‘sh qoldirilsa, bo‘sh tuple (()) bo‘ladi</li>
  </ul>
  <p id="u5yy"><strong>Oddiy misol:</strong></p>
  <p id="LqQB">Python</p>
  <pre id="TCLY">def salomlash(*ismlar):
    print(&quot;Qabul qilingan argumentlar:&quot;, ismlar)
    for ism in ismlar:
        print(f&quot;Salom, {ism}!&quot;)

salomlash(&quot;Ali&quot;, &quot;Vali&quot;, &quot;Guli&quot;)</pre>
  <p id="0rTO"><strong>Natija:</strong></p>
  <p id="Co6U">text</p>
  <pre id="Bpyu">Qabul qilingan argumentlar: (&#x27;Ali&#x27;, &#x27;Vali&#x27;, &#x27;Guli&#x27;)
Salom, Ali!
Salom, Vali!
Salom, Guli!</pre>
  <p id="XfQf"><strong>Yana bir misol — yig‘indi:</strong></p>
  <p id="I82q">Python</p>
  <pre id="7YRR">def yigindi(*sonlar):
    return sum(sonlar)

print(yigindi(1, 2, 3, 4))      # 10
print(yigindi(100, 200))        # 300
print(yigindi())                # 0</pre>
  <hr />
  <h3 id="7VpR">3. **kwargs nima?</h3>
  <p id="nQnM">**kwargs — funksiyaga uzatilgan barcha <strong>kalit-so‘zli</strong> argumentlarni <strong>lug‘at (dict)</strong> ko‘rinishida yig‘ib oladi.</p>
  <p id="g01w"><strong>Asosiy xususiyatlari:</strong></p>
  <ul id="Wbh0">
    <li id="HgZC">** belgisi majburiy</li>
    <li id="HCbF">kwargs nomi shart emas (**malumotlar, **parametrlar ham bo‘lishi mumkin)</li>
    <li id="0SLy">Ichida ma’lumotlar <strong>dict</strong> sifatida saqlanadi</li>
    <li id="DJkO">Bo‘sh qoldirilsa, bo‘sh dict ({}) bo‘ladi</li>
  </ul>
  <p id="SzXh"><strong>Oddiy misol:</strong></p>
  <p id="8Q3E">Python</p>
  <pre id="6bRJ">def malumot_chiqar(**kwargs):
    print(&quot;Qabul qilingan lug‘at:&quot;, kwargs)
    for kalit, qiymat in kwargs.items():
        print(f&quot;{kalit} → {qiymat}&quot;)

malumot_chiqar(ism=&quot;Ali&quot;, yosh=25, shahar=&quot;Toshkent&quot;)</pre>
  <p id="H1D5"><strong>Natija:</strong></p>
  <p id="cO6E">text</p>
  <pre id="BWCw">Qabul qilingan lug‘at: {&#x27;ism&#x27;: &#x27;Ali&#x27;, &#x27;yosh&#x27;: 25, &#x27;shahar&#x27;: &#x27;Toshkent&#x27;}
ism → Ali
yosh → 25
shahar → Toshkent</pre>
  <hr />
  <h3 id="U8GE">4. *args va **kwargsni birga ishlatish</h3>
  <p id="Iirl">Ikkalasini bir funksiyada ishlatish mumkin. <strong>Tartib juda muhim:</strong></p>
  <p id="QYMi">Python</p>
  <pre id="oYUF">def funksiya(oddiy1, oddiy2, *args, **kwargs):
    ...</pre>
  <p id="9Bxe"><strong>To‘g‘ri tartib:</strong></p>
  <ol id="f88p">
    <li id="yyjY">Oddiy (majburiy) parametrlar</li>
    <li id="Qb6J">*args</li>
    <li id="W9Fc">**kwargs</li>
  </ol>
  <p id="E0E9"><strong>Misol:</strong></p>
  <p id="juWz">Python</p>
  <pre id="SyMN">def shaxs(ism, yosh, *args, **kwargs):
    print(f&quot;Ism: {ism}&quot;)
    print(f&quot;Yosh: {yosh}&quot;)
    print(f&quot;Args: {args}&quot;)
    print(f&quot;Kwargs: {kwargs}&quot;)

shaxs(&quot;Ali&quot;, 22, &quot;Toshkent&quot;, &quot;O‘qituvchi&quot;, hobby=&quot;futbol&quot;, til=&quot;o‘zbek&quot;)</pre>
  <p id="luxQ"><strong>Natija:</strong></p>
  <p id="sMmN">text</p>
  <pre id="j72j">Ism: Ali
Yosh: 22
Args: (&#x27;Toshkent&#x27;, &#x27;O‘qituvchi&#x27;)
Kwargs: {&#x27;hobby&#x27;: &#x27;futbol&#x27;, &#x27;til&#x27;: &#x27;o‘zbek&#x27;}</pre>
  <hr />
  <h3 id="D8zZ">5. Amaliy masalalar va yechimlari</h3>
  <h4 id="uMyA">1-masala</h4>
  <p id="yWCv">Istalgancha son qabul qilib, ularning yig‘indisini qaytaradigan funksiya yozing.</p>
  <p id="sKc2">Python</p>
  <pre id="AoRs">def yigindi(*sonlar):
    return sum(sonlar)

print(yigindi(1, 2, 3))           # 6
print(yigindi(10, 20, 30, 40))     # 100
print(yigindi())                   # 0</pre>
  <h4 id="cEfT">2-masala</h4>
  <p id="UFE8">Istalgancha son qabul qilib, o‘rtacha qiymatini qaytaring. Sonlar bo‘lmasa — 0 qaytaring.</p>
  <p id="4ARX">Python</p>
  <pre id="SJsS">def ortacha(*sonlar):
    if len(sonlar) == 0:
        return 0
    return sum(sonlar) / len(sonlar)

print(ortacha(10, 20, 30))         # 20.0
print(ortacha(5, 15))              # 10.0
print(ortacha())                   # 0</pre>
  <h4 id="hnS7">3-masala</h4>
  <p id="CY4x">Istalgancha kalit-so‘zli argumentni kalit: qiymat ko‘rinishida chiqaring.</p>
  <p id="FCLD">Python</p>
  <pre id="z5OO">def malumot_chiqar(**kwargs):
    for kalit, qiymat in kwargs.items():
        print(f&quot;{kalit}: {qiymat}&quot;)

malumot_chiqar(ism=&quot;Ali&quot;, yosh=25, shahar=&quot;Toshkent&quot;)</pre>
  <h4 id="J2cO">4-masala</h4>
  <p id="xsKo">Istalgancha kalit-so‘zli argumentni lug‘at ko‘rinishida qaytaring.</p>
  <p id="0lhC">Python</p>
  <pre id="Ras3">def lugat_yarat(**kwargs):
    return kwargs

print(lugat_yarat(a=1, b=2, c=3))
# {&#x27;a&#x27;: 1, &#x27;b&#x27;: 2, &#x27;c&#x27;: 3}</pre>
  <h4 id="jP84">5-masala</h4>
  <p id="Obmy">2 ta majburiy parametr (ism, yosh), keyin *args va **kwargs qabul qiladigan funksiya yozing va barcha ma’lumotlarni chiqaring.</p>
  <p id="Ng3u">Python</p>
  <pre id="dNLP">def shaxs(ism, yosh, *args, **kwargs):
    print(f&quot;Ism: {ism}&quot;)
    print(f&quot;Yosh: {yosh}&quot;)
    if args:
        print(&quot;Args:&quot;, args)
    if kwargs:
        print(&quot;Kwargs:&quot;)
        for k, v in kwargs.items():
            print(f&quot;  {k}: {v}&quot;)

shaxs(&quot;Ali&quot;, 22, &quot;Toshkent&quot;, &quot;O‘qituvchi&quot;, hobby=&quot;futbol&quot;, til=&quot;o‘zbek&quot;)</pre>
  <h4 id="713Z">6-masala</h4>
  <p id="ByjU">Istalgancha son ichidan eng kattasini toping. Sonlar bo‘lmasa — None qaytaring.</p>
  <p id="tITS">Python</p>
  <pre id="IKZn">def maksimal(*sonlar):
    if not sonlar:
        return None
    return max(sonlar)

print(maksimal(5, 12, 3, 9))       # 12
print(maksimal())                  # None</pre>
  <h4 id="mAFN">7-masala</h4>
  <p id="Xww7">Faqat qiymati son (int yoki float) bo‘lgan kalit-so‘zli argumentlarni yangi lug‘atga yig‘ib qaytaring.</p>
  <p id="5C77">Python</p>
  <pre id="JjCi">def faqat_sonlar(**kwargs):
    natija = {}
    for kalit, qiymat in kwargs.items():
        if isinstance(qiymat, (int, float)):
            natija[kalit] = qiymat
    return natija

print(faqat_sonlar(ism=&quot;Ali&quot;, yosh=25, bal=4.5, shahar=&quot;Samarqand&quot;))
# {&#x27;yosh&#x27;: 25, &#x27;bal&#x27;: 4.5}</pre>
  <h4 id="cnwP">8-masala</h4>
  <p id="vvex">*args dagi sonlar yig‘indisini va **kwargs dagi barcha qiymatlarni chiqaring.</p>
  <p id="vlLH">Python</p>
  <pre id="QkjO">def birlashtir(*args, **kwargs):
    print(&quot;Args yig‘indisi:&quot;, sum(args) if args else 0)
    print(&quot;Kwargs qiymatlari:&quot;)
    for qiymat in kwargs.values():
        print(&quot; -&quot;, qiymat)

birlashtir(10, 20, 30, ism=&quot;Vali&quot;, yosh=30, kasb=&quot;Muhandis&quot;)</pre>
  <hr />
  <pre id="nREZ" data-lang="markdown">
**&#x60;*args&#x60; va &#x60;**kwargs&#x60;** — Python’da funksiyaga o‘zgaruvchan 
miqdordagi argumentlarni uzatish uchun ishlatiladigan maxsus parametrlar.

### 1. &#x60;*args&#x60; (yulduzcha args)

- Funksiyaga **isimsiz** (positional) argumentlarni istalgancha 
uzatish imkonini beradi.
- Ichida ular **tuple** ko‘rinishida saqlanadi.

**Oddiy misol:**

&#x60;&#x60;&#x60;python
def salom(*args):
    print(args)          # tuple ko‘rinishida chiqadi
    for ism in args:
        print(f&quot;Salom, {ism}!&quot;)

salom(&quot;Ali&quot;, &quot;Vali&quot;, &quot;Guli&quot;)
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
(&#x27;Ali&#x27;, &#x27;Vali&#x27;, &#x27;Guli&#x27;)
Salom, Ali!
Salom, Vali!
Salom, Guli!
&#x60;&#x60;&#x60;

Yana bir misol (yig‘indi hisoblash):

&#x60;&#x60;&#x60;python
def yigindi(*sonlar):
    return sum(sonlar)

print(yigindi(1, 2, 3))        # 6
print(yigindi(10, 20, 30, 40)) # 100
&#x60;&#x60;&#x60;

### 2. &#x60;**kwargs&#x60; (ikki yulduzcha kwargs)

- Funksiyaga **kalit so‘zli** (named) argumentlarni istalgancha 
uzatish imkonini beradi.
- Ichida ular **lug‘at (dict)** ko‘rinishida saqlanadi.

**Oddiy misol:**

&#x60;&#x60;&#x60;python
def malumot(**kwargs):
    print(kwargs)               # dict ko‘rinishida
    for kalit, qiymat in kwargs.items():
        print(f&quot;{kalit}: {qiymat}&quot;)

malumot(ism=&quot;Ali&quot;, yosh=25, shahar=&quot;Toshkent&quot;)
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
{&#x27;ism&#x27;: &#x27;Ali&#x27;, &#x27;yosh&#x27;: 25, &#x27;shahar&#x27;: &#x27;Toshkent&#x27;}
ism: Ali
yosh: 25
shahar: Toshkent
&#x60;&#x60;&#x60;

### 3. Ikkalasini birga ishlatish

&#x60;&#x60;&#x60;python
def misol(a, b, *args, **kwargs):
    print(&quot;a =&quot;, a)
    print(&quot;b =&quot;, b)
    print(&quot;args =&quot;, args)
    print(&quot;kwargs =&quot;, kwargs)

misol(10, 20, 30, 40, 50, ism=&quot;Ali&quot;, yosh=25)
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
a = 10
b = 20
args = (30, 40, 50)
kwargs = {&#x27;ism&#x27;: &#x27;Ali&#x27;, &#x27;yosh&#x27;: 25}
&#x60;&#x60;&#x60;

### Qisqa eslatma

| Belgi       | Nima qabul qiladi          | Ichida qanday saqlanadi |
|-------------|----------------------------|--------------------------|
| &#x60;*args&#x60;     | Isimsiz argumentlar        | &#x60;tuple&#x60;                  |
| &#x60;**kwargs&#x60;  | Kalit so‘zli argumentlar   | &#x60;dict&#x60;                   |

**Muhim qoida:**  
Funksiya parametrlarida tartib shunday bo‘lishi kerak:  
&#x60;oddiy parametrlar&#x60; → &#x60;*args&#x60; → &#x60;**kwargs&#x60;

Masalan:
&#x60;&#x60;&#x60;python
def funksiya(x, y, *args, **kwargs):   # to‘g‘ri
&#x60;&#x60;&#x60;
</pre>
  <hr />
  <h2 id="aEGu" data-align="center">Masalalar</h2>
  <hr />
  <pre id="5LQj" data-lang="markdown">**&#x60;*args&#x60; va &#x60;**kwargs&#x60; bo‘yicha masalalar va javoblari**

Quyida 8 ta masala berilgan. Har birining yechimi va natijasi bilan.

---

### 1-masala (Oddiy &#x60;*args&#x60;)
Funksiya yozing. U istalgancha son qabul qilsin va ularning 
yig‘indisini qaytarsin.

**Yechim:**
&#x60;&#x60;&#x60;python
def yigindi(*sonlar):
    return sum(sonlar)

print(yigindi(1, 2, 3))
print(yigindi(10, 20, 30, 40, 50))
print(yigindi())
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
6
150
0
&#x60;&#x60;&#x60;

---

### 2-masala (&#x60;*args&#x60; bilan o‘rtacha)
Funksiya yozing. U istalgancha son qabul qilsin va ularning 
o‘rtacha qiymatini qaytarsin. Agar hech qanday son berilmasa, 
&#x60;0&#x60; qaytarsin.

**Yechim:**
&#x60;&#x60;&#x60;python
def ortacha(*sonlar):
    if len(sonlar) == 0:
        return 0
    return sum(sonlar) / len(sonlar)

print(ortacha(10, 20, 30))
print(ortacha(5, 15))
print(ortacha())
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
20.0
10.0
0
&#x60;&#x60;&#x60;

---

### 3-masala (&#x60;**kwargs&#x60; bilan ma’lumot chiqarish)
Funksiya yozing. U istalgancha kalit-so‘zli argument qabul qilsin va
 har birini &#x60;kalit: qiymat&#x60; ko‘rinishida chiqarsin.

**Yechim:**
&#x60;&#x60;&#x60;python
def malumot_chiqar(**kwargs):
    for kalit, qiymat in kwargs.items():
        print(f&quot;{kalit}: {qiymat}&quot;)

malumot_chiqar(ism=&quot;Ali&quot;, yosh=25, shahar=&quot;Toshkent&quot;)
print(&quot;---&quot;)
malumot_chiqar(nom=&quot;Python&quot;, daraja=&quot;Boshlang‘ich&quot;)
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
ism: Ali
yosh: 25
shahar: Toshkent
---
nom: Python
daraja: Boshlang‘ich
&#x60;&#x60;&#x60;

---

### 4-masala (&#x60;**kwargs&#x60; bilan lug‘at qaytarish)
Funksiya yozing. U istalgancha kalit-so‘zli argument qabul qilsin
 va ularni lug‘at (dict) ko‘rinishida qaytarsin.

**Yechim:**
&#x60;&#x60;&#x60;python
def lugat_yarat(**kwargs):
    return kwargs

print(lugat_yarat(a=1, b=2, c=3))
print(lugat_yarat(ism=&quot;Guli&quot;, kasb=&quot;Dasturchi&quot;))
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
{&#x27;a&#x27;: 1, &#x27;b&#x27;: 2, &#x27;c&#x27;: 3}
{&#x27;ism&#x27;: &#x27;Guli&#x27;, &#x27;kasb&#x27;: &#x27;Dasturchi&#x27;}
&#x60;&#x60;&#x60;

---

### 5-masala (&#x60;*args&#x60; va &#x60;**kwargs&#x60; birga)
Funksiya yozing. U:
- 2 ta majburiy parametr (&#x60;ism&#x60;, &#x60;yosh&#x60;) qabul qilsin
- keyin istalgancha isimsiz argument (&#x60;*args&#x60;)
- keyin istalgancha kalit-so‘zli argument (&#x60;**kwargs&#x60;)

Funksiya barcha ma’lumotlarni chiroyli chiqarsin.

**Yechim:**
&#x60;&#x60;&#x60;python
def shaxs(ism, yosh, *args, **kwargs):
    print(f&quot;Ism: {ism}&quot;)
    print(f&quot;Yosh: {yosh}&quot;)
    
    if args:
        print(&quot;Qo‘shimcha ma’lumotlar (args):&quot;, args)
    
    if kwargs:
        print(&quot;Qo‘shimcha ma’lumotlar (kwargs):&quot;)
        for k, v in kwargs.items():
            print(f&quot;  {k}: {v}&quot;)

shaxs(&quot;Ali&quot;, 22, &quot;Toshkent&quot;, &quot;O‘qituvchi&quot;, hobby=&quot;futbol&quot;, til=&quot;o‘zbek&quot;)
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
Ism: Ali
Yosh: 22
Qo‘shimcha ma’lumotlar (args): (&#x27;Toshkent&#x27;, &#x27;O‘qituvchi&#x27;)
Qo‘shimcha ma’lumotlar (kwargs):
  hobby: futbol
  til: o‘zbek
&#x60;&#x60;&#x60;

---

### 6-masala (Maksimal topish)
Funksiya yozing. U istalgancha son qabul qilsin va 
eng kattasini qaytarsin. Agar hech narsa berilmasa, &#x60;None&#x60; qaytarsin.

**Yechim:**
&#x60;&#x60;&#x60;python
def maksimal(*sonlar):
    if not sonlar:
        return None
    return max(sonlar)

print(maksimal(5, 12, 3, 9))
print(maksimal(100))
print(maksimal())
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
12
100
None
&#x60;&#x60;&#x60;

---

### 7-masala (&#x60;**kwargs&#x60; bilan filtr)
Funksiya yozing. U istalgancha kalit-so‘zli argument qabul 
qilsin va faqat **qiymati son** bo‘lganlarini yangi lug‘atga 
yig‘ib qaytarsin.

**Yechim:**
&#x60;&#x60;&#x60;python
def faqat_sonlar(**kwargs):
    natija = {}
    for kalit, qiymat in kwargs.items():
        if isinstance(qiymat, (int, float)):
            natija[kalit] = qiymat
    return natija

print(faqat_sonlar(ism=&quot;Ali&quot;, yosh=25, bal=4.5, shahar=&quot;Samarqand&quot;, ball=90))
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
{&#x27;yosh&#x27;: 25, &#x27;bal&#x27;: 4.5, &#x27;ball&#x27;: 90}
&#x60;&#x60;&#x60;

---

### 8-masala (Barcha narsani birlashtirish)
Funksiya yozing. U istalgancha isimsiz va kalit-so‘zli
 argument qabul qilsin.  
- &#x60;*args&#x60; dagi barcha sonlarni qo‘shib chiqarsin  
- &#x60;**kwargs&#x60; dagi barcha qiymatlarni chiqarsin

**Yechim:**
&#x60;&#x60;&#x60;python
def birlashtir(*args, **kwargs):
    print(&quot;Args yig‘indisi:&quot;, sum(args) if args else 0)
    print(&quot;Kwargs qiymatlari:&quot;)
    for qiymat in kwargs.values():
        print(&quot; -&quot;, qiymat)

birlashtir(10, 20, 30, ism=&quot;Vali&quot;, yosh=30, kasb=&quot;Muhandis&quot;)
&#x60;&#x60;&#x60;

**Natija:**
&#x60;&#x60;&#x60;
Args yig‘indisi: 60
Kwargs qiymatlari:
 - Vali
 - 30
 - Muhandis
&#x60;&#x60;&#x60;

---</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@snrg_py/srvcb3GADHY</guid><link>https://teletype.in/@snrg_py/srvcb3GADHY?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/srvcb3GADHY?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>echo bot</title><pubDate>Tue, 14 Jul 2026 06:56:15 GMT</pubDate><description><![CDATA[1-tg bot]]></description><content:encoded><![CDATA[
  <p id="3ZKx">1-tg bot</p>
  <hr />
  <pre id="W6UR" data-lang="markdown"># 1. Kerakli kutubxonalarni import qilish

&#x60;&#x60;&#x60;python
from aiogram import Bot, Dispatcher, types, F
from asyncio import run
&#x60;&#x60;&#x60;

## Bot

Telegram API bilan ishlaydi.

Misol:

&#x60;&#x60;&#x60;python
bot = Bot(token=TOKEN)
&#x60;&#x60;&#x60;

Bot orqali:

- xabar yuborish
- rasm yuborish
- fayl yuborish
- foydalanuvchini bloklash
- va boshqa amallar bajariladi.

---

## Dispatcher

Botning boshqaruv markazi.

Kelgan barcha xabarlarni kerakli funksiyaga yuboradi.

Misol:

&#x60;&#x60;&#x60;
User
 ↓
Dispatcher
 ↓
Handler
&#x60;&#x60;&#x60;

---

## types

Telegram obyektlari.

Masalan:

&#x60;&#x60;&#x60;python
types.Message
&#x60;&#x60;&#x60;

Bu oddiy xabar.

---

## F

Filter.

Masalan:

&#x60;&#x60;&#x60;python
F.text
F.photo
F.document
&#x60;&#x60;&#x60;

Aiogram 3 da juda ko&#x27;p ishlatiladi.

---

## run

Async funksiyani ishga tushiradi.

&#x60;&#x60;&#x60;python
run(start())
&#x60;&#x60;&#x60;

Dastur shu joydan boshlanadi.

---

# 2. Dispatcher yaratish

&#x60;&#x60;&#x60;python
dp = Dispatcher()
&#x60;&#x60;&#x60;

Bu yerda Dispatcher obyekti yaratilmoqda.

Keyinchalik barcha handlerlar unga qo&#x27;shiladi.

---

# 3. Echo funksiyasi

&#x60;&#x60;&#x60;python
async def echo(message: types.Message, bot: Bot):
&#x60;&#x60;&#x60;

Bu asinxron funksiya.

Parametrlar:

### message

Foydalanuvchi yuborgan xabar.

Masalan:

&#x60;&#x60;&#x60;
Salom
&#x60;&#x60;&#x60;

---

### bot

Bot obyekti.

Lekin sizning funksiyangizda ishlatilmayapti.

Uni olib tashlasa ham bo&#x27;ladi.

---

# 4. copy_to()

&#x60;&#x60;&#x60;python
await message.copy_to(
    chat_id=message.chat.id
)
&#x60;&#x60;&#x60;

Bu xabarni nusxalaydi.

Masalan

User yozadi:

&#x60;&#x60;&#x60;
Assalomu alaykum
&#x60;&#x60;&#x60;

Bot ham

&#x60;&#x60;&#x60;
Assalomu alaykum
&#x60;&#x60;&#x60;

deb yuboradi.

---

## chat_id

&#x60;&#x60;&#x60;python
message.chat.id
&#x60;&#x60;&#x60;

Xabar kelgan chatning ID raqami.

---

# 5. start() funksiyasi

&#x60;&#x60;&#x60;python
async def start():
&#x60;&#x60;&#x60;

Bu botni ishga tushirish funksiyasi.

---

## Startup event

&#x60;&#x60;&#x60;python
dp.startup.register(startup_answer)
&#x60;&#x60;&#x60;

Bot ishga tushganda

&#x60;&#x60;&#x60;python
startup_answer()
&#x60;&#x60;&#x60;

funksiyasi ishlaydi.

Ammo sizning kodingizda

&#x60;&#x60;&#x60;python
startup_answer
&#x60;&#x60;&#x60;

yo&#x27;q.

Shuning uchun

&#x60;&#x60;&#x60;
NameError
&#x60;&#x60;&#x60;

chiqadi.

---

## Message handler

&#x60;&#x60;&#x60;python
dp.message.register(echo)
&#x60;&#x60;&#x60;

Har qanday kelgan xabar

&#x60;&#x60;&#x60;
echo()
&#x60;&#x60;&#x60;

funksiyasiga yuboriladi.

---

## Shutdown event

&#x60;&#x60;&#x60;python
dp.shutdown.register(shutdown_answer)
&#x60;&#x60;&#x60;

Bot to&#x27;xtaganda ishlaydi.

Ammo

&#x60;&#x60;&#x60;python
shutdown_answer
&#x60;&#x60;&#x60;

ham mavjud emas.

---

# 6. TOKEN

&#x60;&#x60;&#x60;python
TOKEN = &quot;...&quot;
&#x60;&#x60;&#x60;

Bu BotFather bergan maxfiy kalit.

Uni GitHub yoki internetga joylash mumkin emas.

Eng yaxshi usul:

&#x60;&#x60;&#x60;python
from os import getenv

TOKEN = getenv(&quot;BOT_TOKEN&quot;)
&#x60;&#x60;&#x60;

yoki &#x60;.env&#x60; faylidan o&#x27;qish.

---

# 7. Bot yaratish

&#x60;&#x60;&#x60;python
bot = Bot(token=TOKEN)
&#x60;&#x60;&#x60;

Bu yerda Telegram bot obyekti yaratilmoqda.

---

# 8. Polling

&#x60;&#x60;&#x60;python
await dp.start_polling(bot)
&#x60;&#x60;&#x60;

Bot Telegram serveriga ulanadi.

Keyin doimiy ravishda

&#x60;&#x60;&#x60;
Yangi xabar keldimi?
&#x60;&#x60;&#x60;

deb tekshiradi.

Bu Polling deyiladi.

---

# 9. run()

&#x60;&#x60;&#x60;python
run(start())
&#x60;&#x60;&#x60;

Dastur shu yerdan boshlanadi.

&#x60;&#x60;&#x60;
Python
 ↓
run()
 ↓
start()
 ↓
start_polling()
 ↓
Bot ishlaydi
&#x60;&#x60;&#x60;

# Kodning ishlash ketma-ketligi

&#x60;&#x60;&#x60;
Python

↓

run()

↓

start()

↓

Dispatcher

↓

Telegram

↓

User xabar yuboradi

↓

echo()

↓

copy_to()

↓

Userga xabar qaytadi
&#x60;&#x60;&#x60;

# Kodingizdagi xatolar

### 1.

&#x60;&#x60;&#x60;python
dp.startup.register(startup_answer)
&#x60;&#x60;&#x60;

&#x60;startup_answer&#x60; funksiyasi yozilmagan.

Masalan:

&#x60;&#x60;&#x60;python
async def startup_answer(bot: Bot):
    print(&quot;Bot ishga tushdi&quot;)
&#x60;&#x60;&#x60;

---

### 2.

&#x60;&#x60;&#x60;python
dp.shutdown.register(shutdown_answer)
&#x60;&#x60;&#x60;

Bu funksiya ham yozilmagan.

Masalan:

&#x60;&#x60;&#x60;python
async def shutdown_answer(bot: Bot):
    print(&quot;Bot to&#x27;xtadi&quot;)
&#x60;&#x60;&#x60;

---

### 3.

&#x60;&#x60;&#x60;python
async def echo(message: types.Message, bot: Bot):
&#x60;&#x60;&#x60;

Bu yerda &#x60;bot&#x60; ishlatilmayapti.

Shuning uchun oddiyroq yozish mumkin:

&#x60;&#x60;&#x60;python
async def echo(message: types.Message):
    await message.copy_to(chat_id=message.chat.id)
&#x60;&#x60;&#x60;

---

### 4.

Bot tokenini kod ichida saqlash tavsiya etilmaydi.

&#x60;.env&#x60; fayl ishlatish xavfsizroq.</pre>
  <hr />
  <pre id="TkWD" data-lang="python">
from aiogram import Bot , Dispatcher, types, F
from asyncio import run

dp = Dispatcher()


async def echo(message: types.Message, bot: Bot):
    await message.copy_to( chat_id = message.chat.id)


async def start():
    #dp.startup.register(startup_answer)
    dp.message.register(echo)
    #dp.shutdown.register(shutdown_answer)
    TOKEN = &quot;8735603900:AAFtmzVkH9By8Ypn7y2XRoZtB6TfERp67aY&quot;
    bot = Bot(token = TOKEN)
    await dp.start_polling(bot)
            
run(start())</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@snrg_py/5-BYbSybMHo</guid><link>https://teletype.in/@snrg_py/5-BYbSybMHo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/5-BYbSybMHo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>mator xaralat 0-180 grads</title><pubDate>Tue, 23 Jun 2026 05:29:50 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e0/7c/e07ceb93-ac94-4182-91a4-0ec3775fae00.png"></media:content><description><![CDATA[<img src="https://docs.sunfounder.com/projects/summary-of-fun-projects/en/latest/_images/Servo_Control2.0_bb.png"></img>Wiring]]></description><content:encoded><![CDATA[
  <h2 id="encf">Ushbu Arduino loyihasi sizga servo motorni ikkita tugma yordamida boshqarish imkonini beradi: qizil tugma uni 0° ga va ko&#x27;k tugma 180° ga siljitadi, LEDlar esa teskari aloqa sifatida yonadi.</h2>
  <figure id="71lw" class="m_custom">
    <iframe src="https://www.youtube.com/embed/Qx3GEKwXfXE?autoplay=0&loop=0&mute=0"></iframe>
  </figure>
  <p id="jfVR"></p>
  <p id="P2gQ"><strong>Wiring</strong></p>
  <figure id="MYRS" class="m_retina">
    <img src="https://docs.sunfounder.com/projects/summary-of-fun-projects/en/latest/_images/Servo_Control2.0_bb.png" width="716.5" />
  </figure>
  <p id="4bqD"><strong>Common Connections:</strong></p>
  <ul id="P80W">
    <li id="AaOK"><strong>Digital Servo Motor</strong></li>
    <ul id="IoTt">
      <li id="wbi1">Connect to breadboard’s positive power bus.</li>
      <li id="MLTW">Connect to breadboard’s negative power bus.</li>
      <li id="y1ZP">Connect to <strong>3</strong> on the Arduino.</li>
    </ul>
    <li id="OiOh"><strong>Button1</strong></li>
    <ul id="DkZr">
      <li id="m1Ls"><strong>GND:</strong> Connect to a <strong>1kΩ resistor</strong>, then to negative power bus on the breadboard</li>
      <li id="kjhD"><strong>VCC:</strong> Connect to <strong>7</strong> on the Arduino.</li>
    </ul>
    <li id="1NdN"><strong>Button2</strong></li>
    <ul id="ffdP">
      <li id="p2H5"><strong>GND:</strong> Connect to a <strong>1kΩ resistor</strong>, then to negative power bus on the breadboard</li>
      <li id="1cpf"><strong>VCC:</strong> Connect to <strong>5</strong> on the Arduino.</li>
    </ul>
    <li id="EiMm"><strong>Blue LED</strong></li>
    <ul id="LCRO">
      <li id="v1sf">Connect the LED <strong>cathode</strong> to the to a <strong>1kΩ resistor</strong>, then to negative power bus on the breadboard, <strong>anode</strong> to <strong>6</strong> on the Arduino.</li>
    </ul>
    <li id="SJTf"><strong>Red LED</strong></li>
    <ul id="1BtI">
      <li id="BKqU">Connect the LED <strong>cathode</strong> to the to a <strong>1kΩ resistor</strong>, then to negative power bus on the breadboard, <strong>anode</strong> to <strong>4</strong> on the Arduino.</li>
    </ul>
  </ul>
  <p id="Vth9"><strong>Writing the Code</strong></p>
  <p id="g77s">Note</p>
  <ul id="8Vh7">
    <li id="54Y2">You can copy this code into <strong>Arduino IDE</strong>.</li>
    <li id="PrrF">Don’t forget to select the board(Arduino UNO R4 Minima/WIFI) and the correct port before clicking the <strong>Upload</strong> button.</li>
  </ul>
  <p id="dmso"></p>
  <pre id="dGzf" data-lang="cpp">#include &lt;Servo.h&gt;

// --- Pin definitions ---
const int servoPin = 3;   // Servo signal wire connected to pin 3
const int redLED   = 4;   // Red LED connected to pin 4 (with resistor)
const int redBtn   = 5;   // Red button connected to pin 5
const int blueLED  = 6;   // Blue LED connected to pin 6 (with resistor)
const int blueBtn  = 7;   // Blue button connected to pin 7

Servo myServo;             // Create a Servo object
int currentAngle = 90;     // Start servo at the middle position (90°)
const int stepSize = 5;    // Servo moves 3° for each button press

// Variables to remember the last button states
bool lastRedState  = HIGH; // HIGH means not pressed (because of INPUT_PULLUP)
bool lastBlueState = HIGH;

void setup() {
  myServo.attach(servoPin);       // Attach the servo to pin 3
  myServo.write(currentAngle);    // Move servo to initial position

  pinMode(redLED, OUTPUT);        // Set LED pins as outputs
  pinMode(blueLED, OUTPUT);

  pinMode(redBtn, INPUT_PULLUP);  // Use internal pull-up resistor
  pinMode(blueBtn, INPUT_PULLUP); // Button is active LOW
}

void loop() {
  // Read current button states
  bool redPressed  = (digitalRead(redBtn)  == LOW); // LOW means pressed
  bool bluePressed = (digitalRead(blueBtn) == LOW);

  // --- Red button logic ---
  if (redPressed &amp;&amp; lastRedState == HIGH) { // Detect new press (not held down)
    delay(50);                              // Small delay to debounce
    if (digitalRead(redBtn) == LOW) {       // Check again to confirm press
      digitalWrite(redLED, HIGH);           // Turn on red LED
      currentAngle = max(0, currentAngle - stepSize); // Move 3° toward 0°
      myServo.write(currentAngle);          // Update servo position
    }
  } else {
    digitalWrite(redLED, LOW);              // Turn off LED when not pressed
  }

  // --- Blue button logic ---
  if (bluePressed &amp;&amp; lastBlueState == HIGH) { // Detect new press
    delay(50);                                // Debounce
    if (digitalRead(blueBtn) == LOW) {        // Confirm press
      digitalWrite(blueLED, HIGH);            // Turn on blue LED
      currentAngle = min(180, currentAngle + stepSize); // Move 3° toward 180°
      myServo.write(currentAngle);            // Update servo position
    }
  } else {
    digitalWrite(blueLED, LOW);               // Turn off LED when not pressed
  }

  // Remember button states for next loop
  lastRedState  = redPressed;
  lastBlueState = bluePressed;
}</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@snrg_py/-O5x8X2TJ95</guid><link>https://teletype.in/@snrg_py/-O5x8X2TJ95?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/-O5x8X2TJ95?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>yengil oyin</title><pubDate>Wed, 17 Jun 2026 04:22:33 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/df/87/df87e5e6-08e8-480e-9fde-d1104656ba25.png"></media:content><description><![CDATA[<img src="https://docs.sunfounder.com/projects/summary-of-fun-projects/en/latest/_images/Light_Play_bb.png"></img>Ism]]></description><content:encoded><![CDATA[
  <h1 id="djiA">Yengil o&#x27;yin<a href="https://docs.sunfounder.com/projects/summary-of-fun-projects/en/latest/arduino/light_play.html#light-play" target="_blank"></a></h1>
  <p id="dhgd"></p>
  <p id="7mEO"></p>
  <section>
    <p id="S86B">Ism</p>
    <p id="kF6z">Arduino platasini o&#x27;z ichiga oladi</p>
    <p id="w5YZ">XARID HAVOLASI</p>
    <p id="iMRW">Ultimate Sensor Kit</p>
    <p id="hsDV">Arduino Uno R4 Minima</p>
    <p id="48BQ"><a href="https://www.sunfounder.com/collections/arduino-kits-bundles/products/sunfounder-ultimate-sensor-kit-with-original-arduino-uno-r4-minima?ref=jbzmncle" target="_blank">SOTIB OLING</a></p>
    <p id="e1uD">Elite Explorer to&#x27;plami</p>
    <p id="UPhg">Arduino Uno R4 WiFi</p>
    <p id="xVrp"><a href="https://www.sunfounder.com/collections/arduino-kits-bundles/products/sunfounder-elite-explorer-kit-with-official-arduino-uno-r4-wifi?ref=jbzmncle" target="_blank">SOTIB OLING</a></p>
    <p id="R0QB">3 ta 1 tada eng yaxshi boshlang&#x27;ich to&#x27;plam</p>
    <p id="2exP">Arduino Uno R4 Minima</p>
    <p id="3ZSC"><a href="https://www.sunfounder.com/collections/arduino-kits-bundles/products/sunfounder-3-in-1-ultimate-starter-kit-with-original-arduino-uno-r4-minima?ref=jbzmncle" target="_blank">SOTIB OLING</a></p>
    <p id="P7er">Universal Maker Sensor Kit</p>
    <p id="Sy0P">×</p>
  </section>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h2 id="Tall">Kursga kirish</h2>
    <p id="bSpZ"></p>
    <p id="pD8p">Ushbu darsda siz Arduino-dan tugmalar, LEDlar va rezistorlar bilan birgalikda yorug&#x27;lik shousini yaratish uchun qanday foydalanishni o&#x27;rganasiz.</p>
    <p id="8Nj9">Tugmani bosish turli xil yoritish rejimlari o&#x27;rtasida almashinadi.</p>
    <figure id="b3El" class="m_custom">
      <iframe src="https://www.youtube.com/embed/DyyozHdvh80?autoplay=0&loop=0&mute=0"></iframe>
    </figure>
    <p id="Ni6R">Eslatma</p>
    <p id="Qf65">Agar siz Arduino loyihasi bilan birinchi marta ishlayotgan bo&#x27;lsangiz, avval asosiy materiallarni yuklab olish va ko&#x27;rib chiqishingizni tavsiya qilamiz.</p>
    <ul id="gFx8">
      <li id="CX8N"><a href="https://docs.sunfounder.com/projects/summary-of-fun-projects/en/latest/nano_esp32/esp32_start/install_arduino_ide.html#install-arduino" target="_blank">1.1 Arduino IDE ni o&#x27;rnatish (Muhim)</a></li>
      <li id="6Ghu"><a href="https://docs.sunfounder.com/projects/summary-of-fun-projects/en/latest/nano_esp32/esp32_start/introduce_ide.html#introduce-arduino" target="_blank">1.2 Arduino IDE ni taqdim etish</a></li>
    </ul>
    <p id="KHhP"><strong>Kerakli komponentlar</strong></p>
    <p id="MFJ4">Ushbu loyihada bizga quyidagi komponentlar kerak bo&#x27;ladi:</p>
    <p id="r3QL"></p>
    <p id="0vn7">KOMPONENT KIRISH |  MIQDORI</p>
    <p id="WRCL">Arduino UNO R4 Minima  =1</p>
    <p id="VJBp">USB Type-C kabeli      =  1</p>
    <p id="Ip6a">Kabel kanal ( taxtasi) =1</p>
    <p id="0aG6">Simlar = Bir nechta</p>
    <p id="lpKA">1kΩ rezistor  = Bir nechta</p>
    <p id="PoZT">Tugma = 3</p>
    <p id="OjDI">LED        =  Bir nechta</p>
    <p id="97BD"><strong>Simlar</strong></p>
    <figure id="fAhe" class="m_original">
      <img src="https://docs.sunfounder.com/projects/summary-of-fun-projects/en/latest/_images/Light_Play_bb.png" width="1572" />
    </figure>
    <h3 id="zTC4"></h3>
    <h2 id="guEJ">Umumiy ulanishlar:</h2>
    <h3 id="l8FB">LED</h3>
    <h3 id="g0xA">LED katodini 1 kΩ rezistorga , so&#x27;ngra non platasidagi manfiy quvvat shinasiga va LED anodini Arduinodagi 2 dan 9 gacha bo&#x27;lgan oraliqlarga ulang.</h3>
    <h3 id="37Yi">Tugma</h3>
    <h3 id="VENP">Breadboardning salbiy quvvat avtobusiga ulang.</h3>
    <h3 id="22ys">Arduino&#x27;da 10 dan 12 gacha ulanish .</h3>
    <h3 id="cuLF">Kodni yozish</h3>
    <h3 id="COu5">Eslatma</h3>
    <h3 id="ikEC">Ushbu kodni Arduino IDE ga nusxalashingiz mumkin .</h3>
    <h3 id="NHlg">&quot;Yuklash &quot; tugmasini bosishdan oldin platani (Arduino UNO R4 Minima) va to&#x27;g&#x27;ri portni tanlashni unutmang .</h3>
  </section>
  <hr />
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <pre id="eYcf" data-lang="c">// LED pins (blue and red alternately connected to D2 ~ D9)
const int ledPins[8] = {2, 3, 4, 5, 6, 7, 8, 9};

// Button pins
const int redButton = 10;
const int blueButton = 11;
const int greenButton = 12;

// Variables to track previous button states
bool prevRedPressed = false;
bool prevBluePressed = false;
bool prevGreenPressed = false;

void setup() {
  // Set all LED pins as outputs and turn them off
  for (int i = 0; i &lt; 8; i++) {
    pinMode(ledPins[i], OUTPUT);
    digitalWrite(ledPins[i], LOW);
  }

  // Set buttons as input with internal pull-up resistors
  pinMode(redButton, INPUT_PULLUP);
  pinMode(blueButton, INPUT_PULLUP);
  pinMode(greenButton, INPUT_PULLUP);

  Serial.begin(9600); // Optional: debug output
}

void loop() {
  handleRedButton();    // Play red light sequence
  handleBlueButton();   // Play blue LED flowing animation
  handleGreenButton();  // Play full pattern sequence
}

// --- Red button: Runs a 6-step light show pattern ---
void handleRedButton() {
  bool isPressed = digitalRead(redButton) == LOW;
  if (isPressed &amp;&amp; !prevRedPressed) {
    Serial.println(&quot;Red button pressed → 6-step pattern&quot;);
    runRedSequence();
    delay(300); // Simple debounce
  }
  prevRedPressed = isPressed;
}

void runRedSequence() {
  // Step 1: All LEDs on
  setAll(HIGH);
  delay(1000);

  // Step 2: Only blue LEDs on (even indices)
  for (int i = 0; i &lt; 8; i++)
    digitalWrite(ledPins[i], i % 2 == 0 ? HIGH : LOW);
  delay(1000);

  // Step 3: Only red LEDs on (odd indices)
  for (int i = 0; i &lt; 8; i++)
    digitalWrite(ledPins[i], i % 2 == 1 ? HIGH : LOW);
  delay(1000);

  // Step 4: All LEDs on
  setAll(HIGH);
  delay(1000);

  // Step 5: Only blue LEDs on again
  for (int i = 0; i &lt; 8; i++)
    digitalWrite(ledPins[i], i % 2 == 0 ? HIGH : LOW);
  delay(1000);

  // Step 6: Turn all LEDs off
  setAll(LOW);
}

// --- Blue button: Flowing LED animation, back and forth x2 ---
void handleBlueButton() {
  bool isPressed = digitalRead(blueButton) == LOW;
  if (isPressed &amp;&amp; !prevBluePressed) {
    Serial.println(&quot;Blue button pressed → flowing animation&quot;);

    for (int round = 0; round &lt; 2; round++) {
      // Forward flow
      for (int i = 0; i &lt; 8; i++) {
        lightOneOnly(i);
        delay(100);
      }
      // Backward flow
      for (int i = 6; i &gt;= 0; i--) {
        lightOneOnly(i);
        delay(100);
      }

      clearAll();
      delay(100); // Small gap between rounds
    }

    delay(300);
  }
  prevBluePressed = isPressed;
}

// Lights only one LED at the specified index
void lightOneOnly(int index) {
  for (int i = 0; i &lt; 8; i++) {
    digitalWrite(ledPins[i], (i == index) ? HIGH : LOW);
  }
}

// --- Green button: Four full LED pattern cycles ---
void handleGreenButton() {
  bool isPressed = digitalRead(greenButton) == LOW;
  if (isPressed &amp;&amp; !prevGreenPressed) {
    Serial.println(&quot;Green button pressed → full sequence&quot;);

    // Pattern 1: Light up and off from left to right
    for (int i = 0; i &lt; 8; i++) {
      digitalWrite(ledPins[i], HIGH);
      delay(100);
    }
    for (int i = 0; i &lt; 8; i++) {
      digitalWrite(ledPins[i], LOW);
      delay(100);
    }

    // Pattern 2: Right to left on and off
    for (int i = 7; i &gt;= 0; i--) {
      digitalWrite(ledPins[i], HIGH);
      delay(100);
    }
    for (int i = 7; i &gt;= 0; i--) {
      digitalWrite(ledPins[i], LOW);
      delay(100);
    }

    // Pattern 3: Left to right on, right to left off
    for (int i = 0; i &lt; 8; i++) {
      digitalWrite(ledPins[i], HIGH);
      delay(100);
    }
    for (int i = 7; i &gt;= 0; i--) {
      digitalWrite(ledPins[i], LOW);
      delay(100);
    }

    // Pattern 4: Right to left on, left to right off
    for (int i = 7; i &gt;= 0; i--) {
      digitalWrite(ledPins[i], HIGH);
      delay(100);
    }
    for (int i = 0; i &lt; 8; i++) {
      digitalWrite(ledPins[i], LOW);
      delay(100);
    }

    clearAll(); // Make sure all LEDs are off
    delay(300);
  }
  prevGreenPressed = isPressed;
}

// Turns all LEDs on or off
void setAll(int state) {
  for (int i = 0; i &lt; 8; i++) {
    digitalWrite(ledPins[i], state);
  }
}

// Turns off all LEDs
void clearAll() {
  setAll(LOW);
}</pre>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@snrg_py/YWLcMD5H3Fb</guid><link>https://teletype.in/@snrg_py/YWLcMD5H3Fb?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/YWLcMD5H3Fb?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>#hotkeys</title><pubDate>Thu, 30 Apr 2026 09:05:12 GMT</pubDate><description><![CDATA[“““ CTRL A dan Z gacha ”””]]></description><content:encoded><![CDATA[
  <p id="9h6w">“““ CTRL A dan Z gacha ”””</p>
  <p id="fupp"><strong>• Ctrl+A = Barchasini belgilash;  <br /></strong>• Ctrl+B = Matnni qalin qilish; <br /> <strong>• Ctrl+C = Matnni nusxalash;  <br /></strong>• Ctrl+D = Duplikat qilish (PowerPoint da obektlarni ikkitalash); <br /> • Ctrl+E = Matnni markazga joylash; <br /> <strong>• Ctrl+F = Izlash;  </strong>• Ctrl+G = Guruhlash (PowerPoint da); <br /> • Ctrl+H = O’rniga qo’yish (Word); <br /> • Ctrl+I = Kursiv yozish; <br /> • Ctrl+J = Matnni sahifa eni bo’yicha yoyish (Word); <br /> • Ctrl+K = Giper havola yaratish (Word, Telegram); <br /> • Ctrl+L = Matnni chapga joylash; <br /> • Ctrl+M = Yangi slayd (PowerPoint); <br /> • Ctrl+N = Yangi sahifa (ko’p dasturlarda); <br /> • Ctrl+O = Ochish (ko’p dasturlarda); <br /> • Ctrl+P = Chop etish (ko’p dasturlarda); <br /> • Ctrl+Q = Chiqib ketish (ko’p dasturlarda); <br /> • Ctrl+R = Matnni o’ngga joylash; .<br /> • Ctrl+S = Saqlash (ko’p dasturlarda); <br /> • Ctrl+T = Yangi vkladka ochish (Brouzerda); <br /> • Ctrl+U = Matnni ostiga chizish; <br /> <strong>• Ctrl+V = Joylash (Вставить) (ko’p dasturlarda);</strong> <br /> • Ctrl+W = Barcha oynalarni yopish (ko’p dasturlarda); <br /> • Ctrl+X = Ko’chirib olish (Вырезать) (ko’p dasturlarda); <br /> • Ctrl+Y = Oxirgi amalni qaytarish (Ctrl+Z ni teskarisi);<br /> <strong>• Ctrl+Z = Oxirgi amalni bekor qilish (ko’p dasturlarda).</strong></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@snrg_py/AZkDNR756f8</guid><link>https://teletype.in/@snrg_py/AZkDNR756f8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/AZkDNR756f8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>linux kundalik PRO</title><pubDate>Sat, 18 Apr 2026 01:31:45 GMT</pubDate><description><![CDATA[<img src="https://img4.teletype.in/files/f8/39/f8392b2e-994e-4d56-8598-eea7d4adc3fb.jpeg"></img>Terminaldan foydalanish Ushbu hujjatdagi misollar sizning POSIX-mos keluvchi (masalan: bash, sh, zsh, ksh) shell (qobiq) ishlatayotganingizni nazarda tutadi.]]></description><content:encoded><![CDATA[
  <h3 id="L5jK"><strong><a href="https://goalkicker.com/LinuxBook/" target="_blank">&quot;Linux: Professionallar uchun qaydlar&quot; </a>— Mundarija</strong></h3>
  <h4 id="2O1h"><strong>1-bob: GNU/Linux bilan ishlashni boshlash (Getting started)</strong></h4>
  <ul id="gdZp">
    <li id="CpFJ"><strong>1.1-bo&#x27;lim:</strong> Foydali qisqa tugmalar (Shortcuts).</li>
    <li id="OlFX"><strong>1.2-bo&#x27;lim:</strong> Fayllarni boshqarish buyruqlari (File Management).</li>
    <li id="FklQ"><strong>1.3-bo&#x27;lim:</strong> &quot;Hello World&quot; (Birinchi qadamlar).</li>
    <li id="DCYR"><strong>1.4-bo&#x27;lim:</strong> Linuxning asosiy utilitalari.</li>
    <li id="wXjv"><strong>1.5-bo&#x27;lim:</strong> Fayllarni nomi va tarkibi bo&#x27;yicha qidirish.</li>
    <li id="Bmtz"><strong>1.6-bo&#x27;lim:</strong> Fayllar ustida amallar (Manipulation).</li>
    <li id="2gcE"><strong>1.7-bo&#x27;lim:</strong> Fayl va kataloglar haqida batafsil ma&#x27;lumot (Details).</li>
  </ul>
  <h4 id="VazM"><strong>2-bob: Linux distributivi nomi va versiyasini aniqlash</strong></h4>
  <ul id="u0HN">
    <li id="Ckf7"><strong>2.1-bo&#x27;lim:</strong> Debian-ga asoslangan tizimlarni aniqlash.</li>
    <li id="YM0w"><strong>2.2-bo&#x27;lim:</strong> Systemd-ga asoslangan tizimlarni aniqlash.</li>
    <li id="YVMl"><strong>2.3-bo&#x27;lim:</strong> RHEL / CentOS / Fedora-ni aniqlash.</li>
  </ul>
  <h4 id="aS6o"><strong>3-bob: Linux yadrosi (Kernel) haqida ma&#x27;lumot olish</strong></h4>
  <h4 id="0Smx"><strong>4-bob: Shell (Buyruqlar qobig&#x27;i)</strong></h4>
  <ul id="SZ1V">
    <li id="AmJP"><strong>4.1-bo&#x27;lim:</strong> Standart shell&#x27;ni o&#x27;zgartirish.</li>
    <li id="bhal"><strong>4.2-bo&#x27;lim:</strong> Qaysi shell ishlatilayotganini aniqlash.</li>
    <li id="2O8o"><strong>4.3-bo&#x27;lim:</strong> Alias (buyruqlarga taxalluslar) yaratish.</li>
  </ul>
  <h4 id="gnKW"><strong>5-bob: Disk bo&#x27;shlig&#x27;ini tekshirish (Disk Space)</strong></h4>
  <ul id="bgWK">
    <li id="y53P"><strong>5.1-bo&#x27;lim:</strong> Kataloglarning diskdan foydalanishini tahlil qilish.</li>
    <li id="gk3J"><strong>5.2-bo&#x27;lim:</strong> Diskdagi bo&#x27;sh joyni ko&#x27;rish.</li>
  </ul>
  <h4 id="PYTc"><strong>6-bob: Inodlar (Inodes)</strong></h4>
  <h4 id="iJFd"><strong>7-bob: Foydalanuvchilar va guruhlar (Users and Groups)</strong></h4>
  <ul id="XvQY">
    <li id="bgIw"><strong>7.1-bo&#x27;lim:</strong> Foydalanuvchi qo&#x27;shish.</li>
    <li id="Imtc"><strong>7.2-bo&#x27;lim:</strong> Foydalanuvchini guruhga qo&#x27;shish.</li>
  </ul>
  <h4 id="I00Q"><strong>8-bob: Paket menejerlari (Package Managers)</strong></h4>
  <ul id="Om0T">
    <li id="QbCi"><code>apt</code>, <code>yum</code>, <code>dnf</code> va <code>rpm</code> tizimlari orqali dasturlarni boshqarish.</li>
  </ul>
  <h4 id="X4iM"><strong>9-bob: Tizim xizmatlari (Services)</strong></h4>
  <ul id="EneB">
    <li id="Ibel"><code>systemd</code> va <code>service</code> buyruqlari yordamida jarayonlarni boshqarish.</li>
  </ul>
  <h4 id="DkPQ"><strong>10-bob: Modullar (Kernel Modules)</strong></h4>
  <h4 id="MN5v"><strong>11-bob: Atrof-muhit o&#x27;zgaruvchilari (Environment Variables)</strong></h4>
  <h4 id="1bYa"><strong>12-bob: Kirish/Chiqishni yo&#x27;naltirish (I/O Redirection)</strong></h4>
  <ul id="mbit">
    <li id="4veJ"><code>&gt;</code>, <code>&gt;&gt;</code>, <code>|</code> (payplar) va xatoliklarni yo&#x27;naltirish.</li>
  </ul>
  <h4 id="eBPO"><strong>13-bob: Fayllarni ko&#x27;rish va tahrirlash (View/Edit Files)</strong></h4>
  <ul id="B15h">
    <li id="i9WN"><code>cat</code>, <code>less</code>, <code>nano</code>, <code>vi/vim</code> tahrirlagichlari.</li>
  </ul>
  <h4 id="zGY5"><strong>14-bob: Xavfsiz ulanish (SSH)</strong></h4>
  <ul id="QAfT">
    <li id="lZN4">Masofaviy serverlarga ulanish va sozlash.</li>
  </ul>
  <h4 id="kdmI"><strong>15-bob: Fayllarni tarmoq orqali nusxalash (SCP, Rsync)</strong></h4>
  <h4 id="83VB"><strong>16-bob: Tarmoq konfiguratsiyasi (Networking)</strong></h4>
  <ul id="GFtR">
    <li id="jL1J">IP manzillar, DNS va portlar bilan ishlash.</li>
  </ul>
  <h4 id="KmdQ"><strong>17-bob: Jarayonlarni boshqarish (Process Management)</strong></h4>
  <ul id="MKgk">
    <li id="SJZy"><code>top</code>, <code>htop</code>, <code>kill</code> va jarayonlarni fonda ishga tushirish.</li>
  </ul>
  <h4 id="1m0M"><strong>18-bob: Cron Jobs (Vazifalarni rejalashtirish)</strong></h4>
  <ul id="7VzQ">
    <li id="ALH9">Avtomatik va vaqtga sozlangan vazifalar.</li>
  </ul>
  <h4 id="GBkz"><strong>19-bob: Arxivlash va siqish (Tar, Gzip, Zip)</strong></h4>
  <h4 id="j7c2"><strong>20-bob: Shell Scripting (Skript yozish)</strong></h4>
  <ul id="VA9q">
    <li id="FrBN">O&#x27;zgaruvchilar, sikllar (loops) va shartlar (if-else).</li>
  </ul>
  <h4 id="Oj8p"><strong>21-bob: Tizim loglari (Logs)</strong></h4>
  <ul id="xVCy">
    <li id="xc0x"><code>/var/log</code> va <code>journalctl</code> yordamida xatoliklarni qidirish.</li>
  </ul>
  <hr />
  <p id="VhYH"></p>
  <h3 id="gtpY">1-bob: GNU/Linux bilan ishlashni boshlash</h3>
  <h4 id="3fx4">1.1-bo&#x27;lim: Foydali qisqa tugmalar (Useful shortcuts)</h4>
  <p id="C2XW"><strong>Terminaldan foydalanish</strong> Ushbu hujjatdagi misollar sizning POSIX-mos keluvchi (masalan: <code>bash</code>, <code>sh</code>, <code>zsh</code>, <code>ksh</code>) <strong>shell</strong> (qobiq) ishlatayotganingizni nazarda tutadi.</p>
  <p id="8neT">GNU/Linux funksionalligining katta qismi terminal orqali amalga oshiriladi. Aksariyat Linux distributivlari foydalanuvchilarga ish stoli muhitidan turib shell bilan muloqot qilish imkonini beruvchi <strong>terminal emulyatorlarini</strong> o&#x27;z ichiga oladi. <strong>Shell</strong> — bu foydalanuvchi tomonidan kiritilgan buyruqlarni bajaruvchi buyruqlar satri interpretatoridir. <strong>Bash</strong> (Bourne Again SHell) ko&#x27;plab Linux distributivlarida standart shell hisoblanadi (shuningdek, macOS&#x27;da ham).</p>
  <p id="WUK0">Agar siz Bash&#x27;ni standart <code>emacs</code> tugmalar birikmasi bilan ishlatayotgan bo&#x27;lsangiz, quyidagi qisqa tugmalar ishlaydi:</p>
  <p id="XqQX"><strong>Terminalni ochish:</strong></p>
  <ul id="YtBi">
    <li id="2NRQ"><code>Ctrl + Alt + T</code> yoki <code>Super + T</code> (Super tugmasi odatda Windows logotipi tushirilgan tugma).</li>
  </ul>
  <p id="Ah4J"><strong>Kursorni harakatlantirish:</strong></p>
  <ul id="HW2F">
    <li id="JDrO"><code>Ctrl + A</code>: Siz yozayotgan qatorning boshiga o&#x27;tish.</li>
    <li id="CrsP"><code>Ctrl + E</code>: Siz yozayotgan qatorning oxiriga o&#x27;tish.</li>
    <li id="OgmC"><code>Ctrl + XX</code>: Qatorning boshi va kursorning joriy holati o&#x27;rtasida tezkor almashish.</li>
    <li id="IJZ8"><code>Alt + F</code>: Kursorni bir so&#x27;z oldinga surish.</li>
    <li id="dHO4"><code>Alt + B</code>: Kursorni bir so&#x27;z orqaga surish.</li>
    <li id="sxbD"><code>Ctrl + F</code>: Kursorni bir belgi oldinga surish.</li>
    <li id="lREm"><code>Ctrl + B</code>: Kursorni bir belgi orqaga surish.</li>
  </ul>
  <p id="mr6P"><strong>Matn bilan ishlash (Text manipulation):</strong></p>
  <ul id="5roZ">
    <li id="uq99"><code>Ctrl + U</code>: Kursordan qator boshigacha bo&#x27;lgan qismni kesib oladi va almashuv buferiga (clipboard) saqlaydi. Agar kursor qator oxirida bo&#x27;lsa, butun qatorni kesadi.</li>
    <li id="1MPP"><code>Ctrl + K</code>: Kursordan qator oxirigacha bo&#x27;lgan qismni kesib oladi.</li>
    <li id="Q0JY"><code>Ctrl + W</code>: Kursordan oldingi so&#x27;zni o&#x27;chiradi va buferga saqlaydi.</li>
    <li id="mRUH"><code>Ctrl + Y</code>: Oxirgi kesib olingan matnni kursordan keyin joylashtiradi (past).</li>
    <li id="eY4E"><code>Alt + T</code>: Kursordan oldingi oxirgi ikki so&#x27;zning o&#x27;rnini almashtiradi.</li>
    <li id="9MBj"><code>Alt + L</code>: Kursordan so&#x27;z oxirigacha bo&#x27;lgan harflarni kichik (lowercase) qiladi.</li>
    <li id="t56J"><code>Alt + U</code>: Kursordan so&#x27;z oxirigacha bo&#x27;lgan harflarni KATTA (uppercase) qiladi.</li>
    <li id="4iLj"><code>Alt + C</code>: Kursordan boshlab so&#x27;z oxirigacha bosh harfga aylantiradi.</li>
    <li id="NDS8"><code>Alt + D</code>: Kursordan so&#x27;z oxirigacha o&#x27;chiradi.</li>
    <li id="zrLg"><code>Alt + .</code>: Oldingi buyruqda ishlatilgan oxirgi so&#x27;zni chiqaradi.</li>
    <li id="7uy7"><code>Ctrl + T</code>: Kursordan oldingi oxirgi ikki belgining o&#x27;rnini almashtiradi.</li>
  </ul>
  <p id="dmiD"><strong>Tarixga (History) kirish:</strong></p>
  <ul id="gVpc">
    <li id="SDLV"><code>Ctrl + R</code>: Avval ishlatilgan buyruqlar orasidan qidirish.</li>
    <li id="hDf9"><code>Ctrl + G</code>: Buyruqni bajarmasdan qidiruv rejimidan chiqish.</li>
    <li id="pv38"><code>Ctrl + J</code>: Qidiruvda topilgan buyruqni ishga tushirmasdan tahrirlash uchun terminalga nusxalaydi.</li>
    <li id="FH0l"><code>Alt + R</code>: Agar tarixdan olingan buyruq tahrirlangan bo&#x27;lsa, o&#x27;zgarishlarni bekor qilib asliga qaytaradi.</li>
    <li id="345N"><code>Ctrl + P</code>: Oldingi bajarilgan buyruqni ko&#x27;rsatadi (Yuqoriga yo&#x27;nalish tugmasi kabi).</li>
    <li id="cirq"><code>Ctrl + N</code>: Keyingi bajarilgan buyruqni ko&#x27;rsatadi (Pastga yo&#x27;nalish tugmasi kabi).</li>
  </ul>
  <p id="QUDE"><strong>Terminalni boshqarish:</strong></p>
  <ul id="0Iec">
    <li id="MNf7"><code>Ctrl + L</code>: Ekranni tozalaydi (<code>clear</code> buyrug&#x27;i kabi).</li>
    <li id="FEcM"><code>Ctrl + S</code>: Ekrandagi ma&#x27;lumotlar chiqishini to&#x27;xtatadi. Bu juda uzun natija beruvchi buyruqlarni o&#x27;qishda foydali, lekin buyruqning o&#x27;zini to&#x27;xtatmaydi.</li>
    <li id="BGys"><code>Ctrl + Q</code>: <code>Ctrl + S</code> bilan to&#x27;xtatilgan chiqishni davom ettiradi.</li>
    <li id="ZU2o"><code>Ctrl + C</code>: Joriy ishlayotgan jarayonni yakunlaydi.</li>
    <li id="hlhh"><code>Ctrl + D</code>: Joriy shell sessiyasidan chiqadi (<code>exit</code> yoki <code>logout</code> kabi). Ba&#x27;zida &quot;Fayl oxiri&quot; (EOF) signali sifatida ishlaydi.</li>
    <li id="Z7az"><code>Ctrl + Z</code>: Oldingi plandagi (foreground) jarayonni vaqtincha to&#x27;xtatadi (pause). Shundan so&#x27;ng <code>bg</code> buyrug&#x27;i bilan uni fonda davom ettirish yoki <code>fg</code> bilan yana oldinga qaytarish mumkin. <code>jobs</code> buyrug&#x27;i barcha fon jarayonlarini ko&#x27;rsatadi.</li>
    <li id="GlH4"><code>Tab</code>: Fayl va katalog nomlarini avtomatik to&#x27;ldiradi.</li>
    <li id="lzR8"><code>Tab + Tab</code>: Agar bir nechta o&#x27;xshash nomlar bo&#x27;lsa, barcha variantlarni ko&#x27;rsatadi.</li>
  </ul>
  <p id="xqFf"><strong>Maxsus belgilar:</strong></p>
  <ul id="XS0B">
    <li id="3qtC"><code>Ctrl + H</code>: <code>Backspace</code> vazifasini bajaradi.</li>
    <li id="Y5Eo"><code>Ctrl + I</code>: <code>Tab</code> vazifasini bajaradi.</li>
    <li id="DZjO"><code>Ctrl + G</code>: Qo&#x27;ng&#x27;iroq (Bell) belgisi.</li>
    <li id="9ICh"><code>Esc</code>: <code>Alt</code> tugmasining o&#x27;rnini bosuvchi o&#x27;lik tugma (Deadkey).</li>
  </ul>
  <p id="FjC9"><strong>Terminalni yopish:</strong></p>
  <ul id="qKtF">
    <li id="flev"><code>Ctrl + Shift + W</code>: Terminal tabini yopish.</li>
    <li id="uPAt"><code>Ctrl + Shift + Q</code>: Butun terminal oynasini yopish.</li>
  </ul>
  <p id="COEC"><em>Eslatma: Xohishingizga ko&#x27;ra, <code>set -o vi</code> buyrug&#x27;i orqali <code>vi</code> tugmalar birikmasiga o&#x27;tishingiz mumkin. <code>emacs</code> rejimiga qaytish uchun <code>set -o emacs</code> yoziladi.</em></p>
  <p id="UPF5"></p>
  <p id="0l0F"></p>
  <h3 id="jRVm">1.2-bo&#x27;lim: Fayllarni boshqarish buyruqlari (File Management Commands)</h3>
  <p id="Q5AE">Linux tizimida joriy va yuqori (ota) kataloglar uchun maxsus belgilashlar mavjud. Bu yangi o&#x27;rganuvchilar uchun biroz tushunarsiz tuyulishi mumkin.</p>
  <p id="g2ss">Linux terminalida ishlaganingizda, siz doimo <strong>joriy ishchi katalogda</strong> (current working directory) bo&#x27;lasiz. Terminaldagi buyruqlar satri (prompt) sizga to&#x27;liq manzilni yoki faqat joriy papka nomini ko&#x27;rsatishi mumkin. Masalan:</p>
  <ul id="dZSv">
    <li id="ZSC4"><code>user@host ~/somedir $</code></li>
    <li id="BeN2"><code>user@host /home/user/somedir $</code>Bu yerda joriy ishchi katalog <code>/home/user/somedir</code> hisoblanadi.</li>
  </ul>
  <p id="dMeI"><strong>Muhim belgilar:</strong></p>
  <ul id="Kb59">
    <li id="h3Sz"><code>..</code> (ikki nuqta) — ota (yuqori) katalogni bildiradi.</li>
    <li id="iJwi"><code>.</code> (bir nuqta) — joriy katalogni bildiradi.</li>
  </ul>
  <hr />
  <h4 id="6Ak0">Kataloglar bo&#x27;ylab harakatlanish (Directory navigation)</h4>
  <p id="BrOl"><strong>Buyruq</strong></p>
  <p id="68j6"><strong>Vazifasi (Utility)</strong></p>
  <p id="lSKM"><code>pwd</code></p>
  <p id="x1Io">Joriy ishchi katalogning to&#x27;liq manzini olish.</p>
  <p id="kOzB"><code>cd -</code></p>
  <p id="0N6Z">Oxirgi marta ishlagan katalogga qaytish.</p>
  <p id="K9ni"><code>cd ~</code> yoki shunchaki <code>cd</code></p>
  <p id="M8fM">Joriy foydalanuvchining shaxsiy (home) katalogiga o&#x27;tish.</p>
  <p id="c9eG"><code>cd ..</code></p>
  <p id="TcOG">Joriy katalogning ota katalogiga (bir pog&#x27;ona yuqoriga) o&#x27;tish (<code>cd</code> va <code>..</code> orasida bo&#x27;sh joy bo&#x27;lishi shart).</p>
  <hr />
  <h4 id="HBw3">Katalog ichidagi fayllarni ko&#x27;rish (Listing files)</h4>
  <p id="kev6"><strong>Buyruq</strong></p>
  <p id="llcv"><strong>Vazifasi (Utility)</strong></p>
  <p id="oNlZ"><code>ls -l</code></p>
  <p id="Ra76">Fayl va kataloglarni uzun (jadval) formatda chiqarish. O&#x27;qishga qulayligi uchun <code>-l</code> opsiyasidan foydalanish tavsiya etiladi.</p>
  <p id="yWn2"><code>ls -ld dir-name</code></p>
  <p id="K2hz">Katalog ichidagi ma&#x27;lumotlarni emas, balki <code>dir-name</code> katalogining o&#x27;zi haqidagi ma&#x27;lumotlarni chiqaradi.</p>
  <p id="tKQ2"><code>ls -a</code></p>
  <p id="KitB">Barcha fayllarni, shu jumladan yashirin fayllarni ham ko&#x27;rsatadi (Linuxda nomi <code>.</code> bilan boshlanadigan fayllar yashirin hisoblanadi).</p>
  <p id="WP7X"><code>ls -F</code></p>
  <p id="C4Wi">Fayl nomining oxiriga uning turini bildiruvchi belgi qo&#x27;shadi (<code>*</code> — ishga tushiriladigan, <code>/</code> — katalog, <code>@</code> — simvolik havola).</p>
  <p id="11nU"><code>ls -lt</code></p>
  <p id="5xyX">Oxirgi o&#x27;zgartirilgan vaqti bo&#x27;yicha saralaydi (eng yangilari yuqorida).</p>
  <p id="oQRd"><code>ls -lh</code></p>
  <p id="Urpm">Fayl o&#x27;lchamlarini odam tushunadigan formatda (KB, MB, GB) ko&#x27;rsatadi.</p>
  <p id="5x36"><code>ls -lR</code></p>
  <p id="5mll">Barcha ichki kataloglarni rekursiv ravishda ko&#x27;rsatadi.</p>
  <p id="nkFX"><code>tree</code></p>
  <p id="MapQ">Fayl tizimining joriy katalogdan boshlab daraxtsimon ko&#x27;rinishini hosil qiladi.</p>
  <hr />
  <h4 id="jf7u">Fayl/katalog yaratish, nusxalash va o&#x27;chirish</h4>
  <p id="H2Dc"><strong>Buyruq</strong></p>
  <p id="65Ju"><strong>Vazifasi (Utility)</strong></p>
  <p id="bhDt"><code>cp -p source destination</code></p>
  <p id="Zqwa">Faylni nusxalaydi. <code>-p</code> opsiyasi faylning asl atributlarini (egasi, vaqti, huquqlari) saqlab qoladi.</p>
  <p id="uYVh"><code>cp -R source_dir destination_dir</code></p>
  <p id="WLaW">Berilgan katalogni rekursiv ravishda (ichidagi hamma narsasi bilan) nusxalaydi.</p>
  <p id="PZPF"><code>mv file1 file2</code></p>
  <p id="NCcs">Linuxda alohida nom o&#x27;zgartirish buyrug&#x27;i yo&#x27;q. Shuning uchun <code>mv</code> faylni ko&#x27;chiradi yoki nomini o&#x27;zgartiradi.</p>
  <p id="CVun"><code>rm -i filename</code></p>
  <p id="rj0m">Faylni o&#x27;chirishdan oldin har safar tasdiqlash so&#x27;raydi. <strong>Yangi foydalanuvchilar uchun har doim <code>rm -i</code> ishlatish tavsiya etiladi.</strong></p>
  <p id="PA46"><code>rm -R dir-name</code></p>
  <p id="RkVZ"><code>dir-name</code> katalogini rekursiv ravishda o&#x27;chiradi.</p>
  <p id="taHG"><code>rm -rf dir-name</code></p>
  <p id="Ckah">Katalogni rekursiv o&#x27;chiradi, mavjud bo&#x27;lmagan fayllarni e&#x27;tiborsiz qoldiradi va hech qachon tasdiqlash so&#x27;ramaydi. <strong>BU BUYRUQNI ISHLATISHDA JUDA EHTIYOT BO&#x27;LING!</strong></p>
  <p id="1MrI"><code>rmdir dir-name</code></p>
  <p id="l8OY">Agar katalog bo&#x27;sh bo&#x27;lsa, uni o&#x27;chiradi.</p>
  <p id="xw1q"><code>mkdir dir-name</code></p>
  <p id="Oq2S"><code>dir-name</code> nomli yangi katalog yaratadi.</p>
  <p id="Ya0b"><code>mkdir -p dir-name/dir-name</code></p>
  <p id="jYMR">Kataloglar ierarhiyasini yaratadi. Agar ota kataloglar mavjud bo&#x27;lmasa, ularni ham bir yo&#x27;la yaratib ketadi.</p>
  <p id="7EL5"><code>touch filename</code></p>
  <p id="yTbq">Agar fayl mavjud bo&#x27;lmasa, uni yaratadi; agar mavjud bo&#x27;lsa, uning vaqtini joriy vaqtga yangilaydi.</p>
  <hr />
  <h4 id="2TYy">Fayl/katalog ruxsatlari va guruhlari</h4>
  <p id="eIEK"><strong>Buyruq</strong></p>
  <p id="wnDS"><strong>Vazifasi (Utility)</strong></p>
  <p id="PC8a"><code>chmod &lt;specs&gt; filename</code></p>
  <p id="NX1v">Fayl ruxsatlarini o&#x27;zgartiradi. Belgi: <code>u</code> - foydalanuvchi, <code>g</code> - guruh, <code>o</code> - boshqalar; <code>+</code> - qo&#x27;shish, <code>-</code> - olib tashlash; <code>r</code> - o&#x27;qish, <code>w</code> - yozish, <code>x</code> - bajarish.</p>
  <p id="R0f7"><code>chmod -R &lt;specs&gt; dir-name</code></p>
  <p id="qGoQ">Katalog va uning ichidagi barcha narsalarning ruxsatlarini rekursiv o&#x27;zgartiradi.</p>
  <p id="cK3d"><code>chmod go=+r myfile</code></p>
  <p id="4Hhx">Guruh (<code>g</code>) va boshqalar (<code>o</code>) uchun o&#x27;qish (<code>r</code>) ruxsatini qo&#x27;shadi.</p>
  <p id="0SYZ"><code>chmod a+rwx myfile</code></p>
  <p id="gH17">Barcha foydalanuvchilarga (<code>a</code>) o&#x27;qish, yozish va bajarish huquqini beradi.</p>
  <p id="ytyx"><code>chown owner1 filename</code></p>
  <p id="2VL6">Fayl egaligini <code>owner1</code> foydalanuvchisiga o&#x27;zgartiradi.</p>
  <p id="2ssG"><code>chgrp grp_owner filename</code></p>
  <p id="grHN">Faylning guruh egaligini <code>grp_owner</code> guruhiga o&#x27;zgartiradi.</p>
  <p id="hed3"><code>chgrp -R grp_owner dir-name</code></p>
  <p id="oXVb">Katalog va uning ichidagi barcha narsalarning guruh egaligini rekursiv o&#x27;zgartiradi.</p>
  <p id="ATgQ"></p>
  <p id="Sx5z"></p>
  <h3 id="jMIP">1.3-bo&#x27;lim: Hello World (Salom Dunyo)</h3>
  <p id="EwlO">Terminalga quyidagi kodni yozing va <strong>Enter</strong> tugmasini bosing:</p>
  <p id="eoQ5">Bash</p>
  <pre id="Yxfz" data-lang="bash">echo &quot;Hello World&quot;</pre>
  <p id="DZmQ">Bu buyruq quyidagi natijani chiqaradi:</p>
  <p id="5hta"><code>Hello World</code></p>
  <hr />
  <h3 id="91DQ">1.4-bo&#x27;lim: Linuxning asosiy utilitalari (Basic Linux Utilities)</h3>
  <p id="bfqt">Linuxda deyarli har qanday vazifa uchun maxsus buyruqlar mavjud bo&#x27;lib, ularning aksariyati mantiqiy va tushunish uchun oson.</p>
  <h4 id="bPx9">Linuxda yordam olish (Getting Help)</h4>
  <p id="bXCX">Akademik va professional muhitda buyruqlar haqida ma&#x27;lumot olishning eng samarali usullari:</p>
  <p id="rYVV"><strong>Buyruq</strong></p>
  <p id="hrUm"><strong>Foydalanish maqsadi (Usability)</strong></p>
  <p id="9rAZ"><code>man &lt;nom&gt;</code></p>
  <p id="6zcw"><code>&lt;nom&gt;</code> nomli dasturning qo&#x27;llanma (manual) sahifasini o&#x27;qish.</p>
  <p id="wy8I"><code>man &lt;bo&#x27;lim&gt; &lt;nom&gt;</code></p>
  <p id="Cz7u">Qo&#x27;llanmaning ma&#x27;lum bir bo&#x27;limiga tegishli qismini o&#x27;qish.</p>
  <p id="523o"><code>man -k &lt;kalit_so&#x27;z&gt;</code></p>
  <p id="nWAm">Qo&#x27;llanma sahifalarida <code>&lt;kalit_so&#x27;z&gt;</code> qatnashgan barcha dasturlarni chiqarish.</p>
  <p id="nj5F"><code>apropos &lt;so&#x27;z&gt;</code></p>
  <p id="h8DI">Tavsifi berilgan so&#x27;zga mos keladigan barcha ilovalarni ko&#x27;rsatadi (buyruq nomi esdan chiqqanda juda foydali).</p>
  <p id="ERb6"><code>whatis vim</code></p>
  <p id="xWj7"><code>vim</code> dasturi haqida qisqacha bir qatorli ta&#x27;rif beradi.</p>
  <p id="l53E"><code>&lt;buyruq&gt; --help</code></p>
  <p id="XABS">Dasturdan foydalanish bo&#x27;yicha ko&#x27;rsatmalarni chiqaradi. Ba&#x27;zan <code>-h</code> ham ishlaydi.</p>
  <p id="j2NJ"><code>info &lt;nom&gt;</code></p>
  <p id="r7sa">Dastur haqida kengaytirilgan ma&#x27;lumotlarni ko&#x27;rish.</p>
  <p id="CyT2"><code>help</code></p>
  <p id="Qv4A">Bash qobig&#x27;ida mavjud bo&#x27;lgan barcha ichki buyruqlar ro&#x27;yxatini ko&#x27;rsatadi.</p>
  <p id="3cWI"><strong>Paketlar bilan ishlash (Debian-ga asoslangan tizimlar uchun):</strong></p>
  <ul id="Q2es">
    <li id="uTPR"><code>dpkg -l</code>: Tizimga o&#x27;rnatilgan barcha paketlar ro&#x27;yxatini chiqaradi.</li>
    <li id="s3YR"><code>dpkg -L &lt;paket_nomi&gt;</code>: Berilgan paket tomonidan o&#x27;rnatilgan fayllar va ularning manzillarini ko&#x27;rsatadi.</li>
  </ul>
  <h4 id="wHq8">Foydalanuvchini aniqlash va Linux dunyosida &quot;Kim kim?&quot;</h4>
  <p id="Zafd"><strong>Buyruq</strong></p>
  <p id="ViS2"><strong>Vazifasi (Usability)</strong></p>
  <p id="XtvI"><code>hostname</code></p>
  <p id="AfXt">Tizimning tarmoqdagi nomini (hostname) ko&#x27;rsatadi.</p>
  <p id="zZYS"><code>hostname -f</code></p>
  <p id="rzlA">Tizimning to&#x27;liq domen nomini (FQDN) ko&#x27;rsatadi.</p>
  <p id="YeFb"><code>passwd</code></p>
  <p id="P7PY">Joriy foydalanuvchining parolini o&#x27;zgartirish.</p>
  <p id="BzGf"><code>whoami</code></p>
  <p id="1o0g">Terminalda ishlayotgan joriy foydalanuvchi nomini chiqaradi.</p>
  <p id="DMPL"><code>who</code></p>
  <p id="vzbD">Tizimga ayni damda kirgan barcha foydalanuvchilar ro&#x27;yxati.</p>
  <p id="OSe4"><code>w</code></p>
  <p id="8fHt">Tizim holati, vaqti, foydalanuvchilar va ularning nima ish qilayotgani haqida batafsil ma&#x27;lumot.</p>
  <p id="L2RW"><code>last</code></p>
  <p id="W9Ij">Tizimdan oxirgi marta kimlar foydalanganini ko&#x27;rsatadi.</p>
  <p id="VrxK"><code>last root</code></p>
  <p id="5YZp"><code>root</code> (administrator) foydalanuvchisi oxirgi marta qachon kirganini ko&#x27;rsatadi.</p>
  <p id="mzCZ"><code>lastb</code></p>
  <p id="fU1O">Tizimga kirishdagi barcha muvaffaqiyatsiz (shubhali) urinishlarni ko&#x27;rsatadi.</p>
  <hr />
  <h4 id="nhiZ">Jarayonlar bilan bog&#x27;liq ma&#x27;lumotlar (Process related information)</h4>
  <p id="Rudy">Jarayonlarni (processes) kuzatish tizim resurslarini boshqarish uchun muhimdir.</p>
  <p id="G2PA"><strong>Buyruq</strong></p>
  <p id="HB8E"><strong>Vazifasi (Usability)</strong></p>
  <p id="mz5s"><code>top</code></p>
  <p id="qY1R">Resurslarni eng ko&#x27;p iste&#x27;mol qilayotgan jarayonlarni doimiy yangilanib turadigan jadvalda ko&#x27;rsatadi. Chiqish uchun <code>q</code> tugmasi bosiladi.</p>
  <p id="MbRR"><code>ps</code></p>
  <p id="H0og">Joriy terminal sessiyasida ishlayotgan jarayonlarni ko&#x27;rsatadi.</p>
  <p id="Gr2d"><code>ps -u root</code></p>
  <p id="FNzu"><code>root</code> foydalanuvchisi tomonidan ishga tushirilgan barcha jarayonlar va buyruqlarni ko&#x27;rsatadi.</p>
  <p id="Ru4D"><code>ps aux</code></p>
  <p id="YgWW">Tizimdagi barcha foydalanuvchilarning barcha ishlayotgan jarayonlarini to&#x27;liq ro&#x27;yxat qiladi.</p>
  <p id="bb23"></p>
  <p id="ENro"></p>
  <h3 id="dnCp">1.5-bo&#x27;lim: Fayllarni nomi yoki tarkibidagi namunalar bo&#x27;yicha qidirish</h3>
  <p id="dh8S">Linux buyruqlar satri (shell) foydalanuvchilari uchun eng ko&#x27;p uchraydigan vazifalardan biri — ma&#x27;lum bir nomga ega bo&#x27;lgan yoki ichida maxsus matni bor fayl va kataloglarni qidirishdir. Buning uchun quyidagi ikki asosiy buyruqni yaxshi o&#x27;rganib olishingiz kerak:</p>
  <h4 id="N8Kg">Fayllarni nomi bo&#x27;yicha qidirish (<code>find</code>)</h4>
  <p id="BWCF">Bash</p>
  <pre id="XVUu">find /var/www -name &#x27;*.css&#x27;
</pre>
  <p id="zubD">Ushbu buyruq <code>/var/www</code> katalogi va uning ichidagi barcha quyi papkalardan <code>.css</code> bilan tugaydigan barcha fayllarning to&#x27;liq manzili va nomini chiqaradi. Natija namunasi:</p>
  <ul id="qpaM">
    <li id="3xjA"><code>/var/www/html/text-cursor.css</code></li>
    <li id="XikX"><code>/var/www/html/style.css</code></li>
  </ul>
  <p id="TBXz">Batafsil ma&#x27;lumot uchun: <code>man find</code></p>
  <h4 id="FnL7">Ichida matni bor fayllarni qidirish (<code>grep</code>)</h4>
  <p id="17KM">Bash</p>
  <pre id="aLIC">grep font /var/www/html/style.css
</pre>
  <p id="j6kB">Bu buyruq ko&#x27;rsatilgan fayl ichidan <code>font</code> namunasi (so&#x27;zi) qatnashgan barcha qatorlarni chiqaradi. Natija namunasi:</p>
  <ul id="dG5U">
    <li id="EsFP"><code>font-weight: bold;</code></li>
    <li id="gOkU"><code>font-family: monospace;</code></li>
  </ul>
  <p id="psid">Yana bir misol:</p>
  <p id="ChqG">Bash</p>
  <pre id="mSlT">grep font /var/www/html/
</pre>
  <p id="G0gt">Bu buyruq kutilganidek ishlamaydi va sizga quyidagi xatoni beradi:</p>
  <p id="L2JZ"><code>grep: /var/www/html/: Is a directory</code> (bu katalog ekanligini bildiradi).</p>
  <p id="AVYV">Buni to&#x27;g&#x27;ri bajarish uchun <code>-R</code> (rekursiv) opsiyasidan foydalanish kerak:</p>
  <p id="uUtV">Bash</p>
  <pre id="Uu5i">grep -R font /var/www/html/
</pre>
  <p id="iKjs">Natijada barcha ichki kataloglardagi fayllar ham tekshiriladi. E&#x27;tibor bering, agar <code>grep</code> bir nechta fayldan qidirsa, natija qaysi faylga tegishli ekanligini ko&#x27;rsatish uchun qator boshiga fayl nomini qo&#x27;shib qo&#x27;yadi. Agar bu nomlar kerak bo&#x27;lmasa, <code>-h</code> opsiyasini qo&#x27;shishingiz mumkin.</p>
  <p id="5RYD">Batafsil ma&#x27;lumot uchun: <code>man grep</code></p>
  <hr />
  <h3 id="olxt">1.6-bo&#x27;lim: Fayl manipulyatsiyasi (File Manipulation)</h3>
  <p id="M9oT">Fayllar va kataloglar Linuxning markazida turadi. Ularni buyruqlar satri orqali yaratish, ko&#x27;rish, ko&#x27;chirish va o&#x27;chirish juda muhim va kuchli ko&#x27;nikma hisoblanadi. Bu buyruqlar grafik fayl menejerlari (explorer) bajaradigan vazifalarni terminalda bajarish imkonini beradi.</p>
  <ul id="4ws0">
    <li id="m22E"><strong>Bo&#x27;sh matnli fayl yaratish (<code>myFile</code> nomli):</strong><code>touch myFile</code></li>
    <li id="o6rI"><strong>Fayl nomini o&#x27;zgartirish (<code>myFile</code> dan <code>myFirstFile</code> ga):</strong><code>mv myFile myFirstFile</code></li>
    <li id="R60y"><strong>Fayl tarkibini ko&#x27;rish:</strong><code>cat myFirstFile</code></li>
    <li id="SYWK"><strong>Fayl tarkibini sahifalab ko&#x27;rish (peydjer yordamida):</strong><code>less myFirstFile</code></li>
    <li id="OUNa"><strong>Faylning dastlabki bir necha qatorini ko&#x27;rish:</strong><code>head myFirstFile</code></li>
    <li id="rS44"><strong>Faylning oxirgi bir necha qatorini ko&#x27;rish:</strong><code>tail myFirstFile</code></li>
    <li id="beGj"><strong>Faylni tahrirlash:</strong><code>vi myFirstFile</code></li>
    <li id="PBBf"><strong>Joriy ishchi katalogdagi fayllarni ko&#x27;rish:</strong><code>ls</code></li>
    <li id="2bxP"><strong>Bo&#x27;sh katalog (papka) yaratish:</strong><code>mkdir myFirstDirectory</code></li>
    <li id="ezLV"><strong>Ko&#x27;p bosqichli yo&#x27;lga ega katalog yaratish:</strong><code>mkdir -p src/myFirstDirectory</code><em>(Bu buyruq bir vaqtning o&#x27;zida ham <code>src</code>, ham uning ichida <code>myFirstDirectory</code> papkalarini yaratadi).</em></li>
    <li id="OF0m"><strong>Faylni katalog ichiga ko&#x27;chirish:</strong><code>mv myFirstFile myFirstDirectory/</code></li>
    <li id="hWpJ"><strong>Joriy ishchi katalogni o&#x27;zgartirish (papkaga kirish):</strong><code>cd myFirstDirectory</code></li>
    <li id="RNwv"><strong>Faylni o&#x27;chirish:</strong><code>rm myFirstFile</code></li>
    <li id="OdrC"><strong>Ota katalogga (yuqoriga) qaytish:</strong><code>cd ..</code></li>
    <li id="esoc"><strong>Bo&#x27;sh katalogni o&#x27;chirish:</strong><code>rmdir myFirstDirectory</code></li>
    <li id="fOzy"><strong>Bo&#x27;sh bo&#x27;lmagan katalogni (ichida fayllari bor) o&#x27;chirish:</strong><code>rm -rf myFirstDirectory</code></li>
  </ul>
  <p id="rAVu"><strong>Eslatma:</strong> Kataloglarni o&#x27;chirishda <code>./</code> (joriy joy) va <code>/</code> (ildiz tizimi) belgilariga juda ehtiyot bo&#x27;ling. <code>/</code> belgisini noto&#x27;g&#x27;ri ishlatish butun fayl tizimingizni o&#x27;chirib yuborishi mumkin.</p>
  <h3 id="8uCS">1.7-bo&#x27;lim: Fayl va katalog tafsilotlari (File/Directory details)</h3>
  <p id="obdR"><code>ls</code> buyrug&#x27;i fayllar haqida ko&#x27;proq ma&#x27;lumot olish uchun birgalikda ishlatilishi mumkin bo&#x27;lgan bir nechta opsiyalarga ega.</p>
  <h4 id="8zyE">Tafsilotlar va Huquqlar (Details/Rights)</h4>
  <p id="LW08"><code>-l</code> opsiyasi fayl ruxsatlari (permissions), hajmi va oxirgi o&#x27;zgartirilgan sanasini ko&#x27;rsatadi. Masalan, joriy papkada <code>test</code> nomli katalog va <code>someFile.txt</code> fayli bo&#x27;lsa, <code>ls -l</code> buyrug&#x27;i quyidagicha natija beradi:</p>
  <p id="mTUh">Bash</p>
  <pre id="41T5">-rw-r--r-- 1 user users   70 Jul 22 13:36 someFile.txt
drwxrwxrwx 2 user users 4096 Jul 21 07:18 test
</pre>
  <p id="Vijr">Ruxsatlar <code>drwxrwxrwx</code> formatida ko&#x27;rsatiladi:</p>
  <ol id="CMX5">
    <li id="EBAT"><strong>Birinchi belgi:</strong> Fayl turini bildiradi. Agar u katalog (papka) bo&#x27;lsa <code>d</code>, aks holda <code>-</code> belgisi bo&#x27;ladi.</li>
    <li id="Lsgn"><strong>Keyingi uchta <code>rwx</code>:</strong> Fayl <strong>egasi</strong> (user) uchun ruxsatlar.</li>
    <li id="sDqk"><strong>Undan keyingi uchta <code>rwx</code>:</strong> Fayl a&#x27;zo bo&#x27;lgan <strong>guruh</strong> (group) uchun ruxsatlar.</li>
    <li id="zHmQ"><strong>Oxirgi uchta <code>rwx</code>:</strong> Qolgan <strong>barcha foydalanuvchilar</strong> (others) uchun ruxsatlar.</li>
  </ol>
  <p id="zTVr"><strong>Belgilarning ma&#x27;nosi:</strong></p>
  <ul id="m95d">
    <li id="l7Qc"><code>r</code> (read) — faylni o&#x27;qish mumkinligini bildiradi.</li>
    <li id="if3y"><code>w</code> (write) — faylni o&#x27;zgartirish (yozish) mumkinligini bildiradi.</li>
    <li id="cJiJ"><code>x</code> (execute) — faylni ishga tushirish (bajarish) mumkinligini bildiradi.</li>
    <li id="Hokq">Agar biror huquq berilmagan bo&#x27;lsa, tegishli harf o&#x27;rnida <code>-</code> belgisi turadi.</li>
  </ul>
  <p id="kzDR">Yuqoridagi misolda foydalanuvchi <code>someFile.txt</code>ni o&#x27;qiy oladi va o&#x27;zgartira oladi, lekin guruh faqat o&#x27;qish huquqiga ega.</p>
  <h4 id="adKQ">Huquqlarni o&#x27;zgartirish (<code>chmod</code>)</h4>
  <p id="Zn0C">Agar sizda <code>sudo</code> huquqi bo&#x27;lsa, <code>chmod ### fayl_nomi</code> buyrug&#x27;i orqali huquqlarni o&#x27;zgartirishingiz mumkin. Bunda:</p>
  <ul id="mGSv">
    <li id="NJfc"><code>r</code> (o&#x27;qish) = <strong>4</strong></li>
    <li id="O5rc"><code>w</code> (yozish) = <strong>2</strong></li>
    <li id="BNxQ"><code>x</code> (bajarish) = <strong>1</strong></li>
  </ul>
  <p id="EQ1x">Masalan, <code>test</code> katalogiga quyidagicha huquqlarni o&#x27;rnatmoqchi bo&#x27;lsangiz:</p>
  <ul id="gsr8">
    <li id="qnPn">Ega (Owner): <code>rwx</code> = 4+2+1 = <strong>7</strong></li>
    <li id="3YZG">Guruh (Group): <code>r-x</code> = 4+0+1 = <strong>5</strong></li>
    <li id="uknG">Boshqalar (Other): <code>r-x</code> = 4+0+1 = <strong>5</strong></li>
  </ul>
  <p id="LImT">Buyruq quyidagicha bo&#x27;ladi:</p>
  <p id="RGBJ">Bash</p>
  <pre id="iD5M">chmod 755 test
</pre>
  <h4 id="dqgo">O&#x27;qishga qulay hajm (Readable Size)</h4>
  <p id="TtZ2"><code>-l</code> bilan birga <code>-h</code> (human readable) opsiyasi qo&#x27;shilsa, fayl o&#x27;lchamlari KB, MB, GB ko&#x27;rinishida chiqariladi:</p>
  <p id="kluo">Bash</p>
  <pre id="P5t1">ls -lh
# Natija: 4.0K (4096 o&#x27;rniga)
</pre>
  <h4 id="3I3n">Yashirin fayllar (Hidden)</h4>
  <p id="i1NS">Yashirin fayllarni ko&#x27;rish uchun <code>-a</code> (all) opsiyasi ishlatiladi:</p>
  <p id="TUvb">Bash</p>
  <pre id="RkcH">ls -a
</pre>
  <p id="eRhR">Bu buyruq <code>.profile</code> kabi nuqta bilan boshlanadigan yashirin fayllarni ham ko&#x27;rsatadi.</p>
  <h4 id="wt9s">Katalog umumiy hajmi</h4>
  <p id="ra0M">Joriy katalogni umumiy hajmini ko&#x27;rish uchun <code>-s</code> opsiyasi ishlatiladi (ko&#x27;pincha <code>-h</code> bilan birga):</p>
  <p id="T5En">Bash</p>
  <pre id="HJRt">ls -sh
</pre>
  <h4 id="6deD">Rekursiv ko&#x27;rinish (Recursive View)</h4>
  <p id="xIuf">Agar katalog ichidagi barcha ichki papkalar va ularning ichidagi fayllarni ham bir yo&#x27;la ko&#x27;rmoqchi bo&#x27;lsangiz, <code>-R</code> (recursive) opsiyasidan foydalanasiz:</p>
  <p id="aiRI">Bash</p>
  <pre id="1npw">ls -R
</pre>
  <p id="w7oP">Bu buyruq butun ierarxiya bo&#x27;yicha &quot;daraxt&quot; ko&#x27;rinishidagi ro&#x27;yxatni chiqaradi.</p>
  <p id="BuBb"></p>
  <p id="yKt6"></p>
  <h3 id="G9jy">2-bob: Linux distributivi nomi va versiyasini aniqlash</h3>
  <p id="upZ6">Tizim administratorlari va dasturchilar uchun ishlayotgan operatsion tizimning aniq distributivi va versiyasini bilish juda muhimdir. Ushbu bo&#x27;limda turli tizim oilalarida ushbu ma&#x27;lumotlarni aniqlash usullari keltiriladi.</p>
  <hr />
  <h4 id="1SOR">2.1-bo&#x27;lim: Debian-ga asoslangan distributivlarni aniqlash (Debian, Ubuntu, Mint va boshqalar)</h4>
  <p id="Benr">Debian oilasidagi tizimlarda eng qulay va standart usul <code>lsb_release</code> buyrug&#x27;idan foydalanishdir.</p>
  <p id="jg0b"><strong>Buyruq:</strong></p>
  <p id="aIfX">Bash</p>
  <pre id="Rvgn">lsb_release -a
</pre>
  <p id="K2QY"><strong>Ubuntu tizimidagi natija namunasi:</strong></p>
  <ul id="B1ww">
    <li id="Rx1P"><code>Distributor ID: Ubuntu</code> — Distributiv nomi.</li>
    <li id="uuU4"><code>Description: Ubuntu 14.04.4 LTS</code> — To&#x27;liq tavsifi.</li>
    <li id="CLYT"><code>Release: 14.04</code> — Versiya raqami.</li>
    <li id="UgHp"><code>Codename: trusty</code> — Versiyaning kodli nomi.</li>
  </ul>
  <p id="TTjC">Agar tizimda <code>lsb_release</code> o&#x27;rnatilmagan bo&#x27;lsa, <code>/etc/issue</code> faylini tekshirib ko&#x27;rishingiz mumkin:</p>
  <p id="WNdn">Bash</p>
  <pre id="Dpiv">cat /etc/issue
</pre>
  <p id="TI9Y"><em>Muhim eslatma:</em> <code>/etc/debian_version</code> faylidan foydalanmang, chunki uning tarkibi har doim ham distributivning to&#x27;liq nomiga mos kelmasligi mumkin.</p>
  <hr />
  <h4 id="37bc">2.2-bo&#x27;lim: Systemd-ga asoslangan zamonaviy distributivlarni aniqlash</h4>
  <p id="GZXU">Bu usul zamonaviy Linux tizimlarining deyarli barchasida (Arch, CentOS, Debian, Fedora, Red Hat, Ubuntu va boshqalar) ishlaydi. Buning uchun <code>/etc/os-release</code> faylidagi o&#x27;zgaruvchilarni tahlil qilish kerak.</p>
  <p id="4sJo"><strong>Asosiy o&#x27;zgaruvchilar:</strong></p>
  <ul id="ETg6">
    <li id="Dp38"><code>NAME</code>, <code>VERSION</code>, <code>ID</code>, <code>PRETTY_NAME</code>.</li>
  </ul>
  <p id="T6kE"><strong>Fedora tizimida ushbu fayl ko&#x27;rinishi:</strong></p>
  <p id="0RdU">Plaintext</p>
  <pre id="q6ya">NAME=Fedora
VERSION=&quot;24 (Workstation Edition)&quot;
ID=fedora
PRETTY_NAME=&quot;Fedora 24 (Workstation Edition)&quot;
</pre>
  <p id="xYCe"><strong>Bash qobig&#x27;ida ushbu fayldan to&#x27;g&#x27;ridan-to&#x27;g&#x27;ri foydalanish:</strong></p>
  <p id="4MjW">Skriptlar ichida ma&#x27;lumotni tezkor olish uchun quyidagi usul qo&#x27;llaniladi:</p>
  <p id="zCOH">Bash</p>
  <pre id="Af3f">( source /etc/os-release &amp;&amp; echo &quot;$PRETTY_NAME&quot; )
</pre>
  <hr />
  <h4 id="tEOn">2.3-bo&#x27;lim: RHEL / CentOS / Fedora distributivlarini aniqlash</h4>
  <p id="C11y">Red Hat oilasiga mansub tizimlarda distributiv haqidagi ma&#x27;lumotni maxsus reliz faylidan olish mumkin:</p>
  <p id="3new"><strong>Buyruq:</strong></p>
  <p id="g9Y7">Bash</p>
  <pre id="xLT2">cat /etc/redhat-release
</pre>
  <p id="cG6S"><strong>Natija:</strong> <code>Fedora release 24 (Twenty Four)</code></p>
  <p id="usgB">Shuningdek, ushbu tizimlarda ham <code>lsb_release -a</code> buyrug&#x27;i (agar o&#x27;rnatilgan bo&#x27;lsa) to&#x27;liq ma&#x27;lumot beradi.</p>
  <hr />
  <h4 id="KhEn">2.4-bo&#x27;lim: Uname — joriy tizim haqida ma&#x27;lumot chiqarish</h4>
  <p id="C7Eu"><code>uname</code> (Unix Name so&#x27;zining qisqartmasi) buyrug&#x27;i operatsion tizim va yadro (kernel) haqida texnik ma&#x27;lumotlarni taqdim etadi.</p>
  <p id="yvhT"><strong>Umumiy sintaksis:</strong></p>
  <p id="iStH"><code>uname [OPTION]</code></p>
  <p id="zFhm"><strong>Asosiy opsiyalar va ularning vazifasi:</strong></p>
  <p id="wrJs"><strong>Opsiya</strong></p>
  <p id="9Zbb"><strong>Vazifasi (Utility)</strong></p>
  <p id="ETW0"><code>-s</code></p>
  <p id="omME">Yadro nomini chiqaradi (Kernel name).</p>
  <p id="XAhV"><code>-n</code></p>
  <p id="0gNW">Tarmoqdagi xost nomini chiqaradi (Hostname).</p>
  <p id="5TST"><code>-r</code></p>
  <p id="ZKZ0">Yadro relizini ko&#x27;rsatadi (Kernel release).</p>
  <p id="9ecV"><code>-v</code></p>
  <p id="FSTY">Yadro versiyasini ko&#x27;rsatadi.</p>
  <p id="63wU"><code>-m</code></p>
  <p id="DykB">Apparat ta&#x27;minoti nomini (arxitekturani) ko&#x27;rsatadi (Machine hardware).</p>
  <p id="j0mM"><code>-a</code></p>
  <p id="iZG2"><strong>Barcha ma&#x27;lumotlarni</strong> birgalikda chiqaradi.</p>
  <p id="DEtv"><code>-o</code></p>
  <p id="1wM8">Operatsion tizim nomini chiqaradi.</p>
  <p id="ZfIB"><strong>Misol:</strong></p>
  <p id="LazD">Bash</p>
  <pre id="uvpx">uname -a
# Natija namunasi: Linux hope 5.4.0-42-generic x86_64 GNU/Linux
</pre>
  <p id="s4Wj"></p>
  <p id="qL20"></p>
  <h3 id="2giO">2.5-bob: Distributiv haqida asosiy ma&#x27;lumotlarni aniqlash</h3>
  <p id="Ii8p">Tizim haqida tezkor va umumiy ma&#x27;lumot olish uchun <code>uname -a</code> buyrug&#x27;idan foydalaniladi.</p>
  <p id="dQ8o"><strong>Arch Linux tizimidagi misol:</strong></p>
  <p id="Ws6c">Bash</p>
  <pre id="BnQ9">$ uname -a
Linux nokia 4.6.4-1-ARCH #1 SMP PREEMPT Mon Jul 11 19:12:32 CEST 2016 x86_64 GNU/Linux
</pre>
  <hr />
  <h3 id="qkGH">2.6-bob: GNU Coreutils&#x27;dan foydalanish</h3>
  <p id="bL8n"><strong>GNU coreutils</strong> barcha Linux tizimlarida mavjud bo&#x27;lgan asosiy vositalar to&#x27;plamidir. Agar siz qaysi tizimda ekanligingizni bilmasangiz, bu buyruq siz uchun birinchi qadam bo&#x27;lishi kerak.</p>
  <p id="m3VX"><strong>Buyruq:</strong> <code>uname -a</code></p>
  <p id="2d4I"><strong>Natija tahlili (misol tariqasida):</strong></p>
  <p id="bpLO"><code>Linux Scibearspace 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2+deb8u3 (2016-07-02) x86_64 GNU/Linux</code></p>
  <p id="GC1e">Bu ma&#x27;lumotlar quyidagilarni anglatadi:</p>
  <ul id="WtQk">
    <li id="tWri"><strong>Scibearspace</strong>: Kompyuterning tarmoqdagi nomi (hostname).</li>
    <li id="P7Uu"><strong>3.16.0-4-amd64</strong>: Yadro (kernel) versiyasi va tizim arxitekturasi.</li>
    <li id="F55L"><strong>SMP Debian 3.16.7...</strong>: Bu tizim <strong>Debian</strong> ekanligini va 3.16 yadrosida ishlayotganini bildiradi.</li>
    <li id="9AlU"><strong>Oxirgi qism</strong>: Tizim Debian 8 (3-yangilanish) ekanligini ko&#x27;rsatmoqda.</li>
  </ul>
  <hr />
  <h3 id="bPLc">2.7-bob: Linux OT nomi va reliz raqamini topish (Debian va RPM)</h3>
  <p id="rewD">Aksariyat Linux distributivlari o&#x27;z versiya ma&#x27;lumotlarini <code>/etc/lsb-release</code> (Debian oilasi uchun) yoki <code>/etc/redhat-release</code> (RPM oilasi uchun) fayllarida saqlaydi.</p>
  <p id="NRuf">Quyidagi universal buyruq yordamida ko&#x27;plab Debian va RPM hosilalari (masalan, Linux Mint va CentOS) haqida ma&#x27;lumot olishingiz mumkin:</p>
  <p id="5oo2"><strong>Universal buyruq:</strong></p>
  <p id="jQmO">Bash</p>
  <pre id="YuGN">cat /etc/*release
</pre>
  <p id="EwhC"><strong>Ubuntu tizimidagi natija namunasi:</strong></p>
  <p id="ascu">Plaintext</p>
  <pre id="TxOQ">DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION=&quot;Ubuntu 14.04 LTS&quot;
</pre>
  <hr />
  <h3 id="OoI0"></h3>
  <p id="oeDs"></p>
  <h3 id="YpWi">3-bob: Ishlab turgan Linux yadrosi (Kernel) haqida ma&#x27;lumot olish</h3>
  <p id="ovG6">Linux yadrosi operatsion tizimning yuragi bo&#x27;lib, u apparat ta&#x27;minoti va dasturiy ta&#x27;minot o&#x27;rtasidagi barcha amallarni boshqaradi. Ushbu bobda yadroning joriy holati va parametrlari haqida ma&#x27;lumot olish usullari bayon qilingan.</p>
  <h4 id="J8CY">3.1-bo&#x27;lim: Linux yadrosi tafsilotlarini aniqlash</h4>
  <p id="crCO">Ishlab turgan yadro haqida to&#x27;liq ma&#x27;lumot olish uchun <code>uname</code> buyrug&#x27;idan turli opsiyalar bilan foydalanishimiz mumkin.</p>
  <p id="Mzxe"><strong>Asosiy buyruq:</strong></p>
  <p id="nHOI">Bash</p>
  <pre id="fHE9">uname -a
</pre>
  <p id="rSHf"><strong>Natija namunasi:</strong></p>
  <p id="vPaQ"><code>Linux df1-ws-5084 4.4.0-64-generic #85-Ubuntu SMP Mon Feb 20 11:50:30 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux</code></p>
  <h4 id="FFmK"><code>uname</code> buyrug&#x27;ining qo&#x27;shimcha opsiyalari:</h4>
  <p id="Av3M">Sintaksis: <code>uname [OPTION]...</code></p>
  <p id="GXT3">Agar hech qanday opsiya berilmasa, u <code>-s</code> deb qabul qilinadi.</p>
  <p id="itDs"><strong>Opsiya</strong></p>
  <p id="llFx"><strong>Vazifasi (Academic Utility)</strong></p>
  <p id="FHJL"><code>-a, --all</code></p>
  <p id="OUmu">Barcha ma&#x27;lumotlarni tartib bilan chiqaradi (noma&#x27;lum bo&#x27;lsa <code>-p</code> va <code>-i</code> tashlab ketiladi).</p>
  <p id="6WTv"><code>-s, --kernel-name</code></p>
  <p id="hPe7">Yadroning nomini chiqaradi (odatda <code>Linux</code>).</p>
  <p id="J7sq"><code>-n, --nodename</code></p>
  <p id="MUEA">Tarmoqdagi xost nomini (hostname) ko&#x27;rsatadi.</p>
  <p id="M1SZ"><code>-r, --kernel-release</code></p>
  <p id="YLcB">Yadroning reliz raqamini chiqaradi (masalan: <code>4.4.0-64-generic</code>).</p>
  <p id="6Bv8"><code>-v, --kernel-version</code></p>
  <p id="2Iqn">Yadroning versiyasi va qachon yig&#x27;ilgani haqidagi ma&#x27;lumotni chiqaradi.</p>
  <p id="o8Za"><code>-m, --machine</code></p>
  <p id="GKWE">Kompyuterning apparat arxitekturasini ko&#x27;rsatadi (masalan: <code>x86_64</code>).</p>
  <p id="LUoV"><code>-p, --processor</code></p>
  <p id="l2sO">Protsessor turini ko&#x27;rsatadi (ba&#x27;zida &quot;unknown&quot; bo&#x27;lishi mumkin).</p>
  <p id="wfRP"><code>-i, --hardware-platform</code></p>
  <p id="jjJr">Apparat platformasini ko&#x27;rsatadi.</p>
  <p id="zpJF"><code>-o, --operating-system</code></p>
  <p id="dMk0">Operatsion tizim nomini chiqaradi (masalan: <code>GNU/Linux</code>).</p>
  <p id="FFrb"><code>--help</code></p>
  <p id="ZHah">Yordam xabarini chiqaradi va ishni to&#x27;xtatadi.</p>
  <p id="7Gd0"><code>--version</code></p>
  <p id="oEtT">Dastur versiyasini ko&#x27;rsatadi.</p>
  <h4 id="0VmL">Qo&#x27;shimcha ma&#x27;lumot (Akademik izoh):</h4>
  <p id="Gpa6">Linux yadrosi haqida ma&#x27;lumot olishning yana bir usuli <code>/proc</code> virtual fayl tizimidan foydalanishdir. Masalan, quyidagi buyruq ham <code>uname -a</code> kabi batafsil ma&#x27;lumot beradi:</p>
  <p id="3v3E">Bash</p>
  <pre id="wlLb">cat /proc/version
</pre>
  <p id="Wb0Y">Ushbu fayl yadro versiyasidan tashqari, uni yig&#x27;ish uchun ishlatilgan <strong>GCC</strong> kompyutori versiyasi haqida ham ma&#x27;lumotni o&#x27;z ichiga oladi.</p>
  <p id="YWgA"></p>
  <p id="Ntxm"></p>
  <p id="o6Sj"><strong>Buyruq (Tugmalar)</strong></p>
  <p id="ZksU"><strong>Vazifasi (Utility)</strong></p>
  <p id="LqEf"><code>Ctrl + K</code></p>
  <p id="9pKD">Kursordan keyingi matnni kesib olish (cut/kill).</p>
  <p id="CGjO"><code>Ctrl + Y</code></p>
  <p id="XkCO">Kesib olingan matnni joylashtirish (yank/paste).</p>
  <p id="NUE6"><code>Ctrl + A</code></p>
  <p id="8wjy">Kursorni qatorning boshiga olib boradi.</p>
  <p id="48ZS"><code>Ctrl + E</code></p>
  <p id="gDvd">Kursorni qatorning oxiriga olib boradi.</p>
  <p id="lHmG"><code>Ctrl + D</code></p>
  <p id="PcG4">Kursordan keyingi yoki kursor turgan belgini o&#x27;chiradi.</p>
  <p id="luci"><code>Ctrl + L</code></p>
  <p id="3RUG">Ekranni/terminalni tozalaydi.</p>
  <p id="5LxM"><code>Ctrl + U</code></p>
  <p id="ZaJg">Buyruq satri va kursor orasidagi barcha narsani o&#x27;chiradi.</p>
  <p id="smTA"><code>Ctrl + _</code></p>
  <p id="S1L7">Buyruqlar satrida yozilgan oxirgi amalni bekor qiladi (undo).</p>
  <p id="vyVr"><code>Ctrl + C</code></p>
  <p id="JexP">Oldingi planda ishlayotgan jarayonni (process) to&#x27;xtatadi.</p>
  <p id="yuEz"><code>Ctrl + R</code></p>
  <p id="cGgr">Buyruqlar tarixidan (history) teskari qidiruv.</p>
  <p id="iZIF"><code>~/.bash_history</code></p>
  <p id="8gg6">Shell-da ishlatilgan oxirgi 500 ta buyruq/hodisalarni saqlaydigan fayl.</p>
  <p id="IJK9"><code>history</code></p>
  <p id="4u9k">Buyruqlar tarixini ko&#x27;rsatadi.</p>
  <p id="d5yX"><code>history | grep &lt;so&#x27;z&gt;</code></p>
  <p id="DlTq">Tarixdan <code>&lt;so&#x27;z&gt;</code> kalit so&#x27;zi qatnashgan buyruqlarni topadi (o&#x27;tmishda ishlatilgan buyruqning bir qismini eslaganda juda foydali).</p>
  <p id="Zf52"></p>
  <p id="J3GM"></p>
  <p id="XV4l">Mana 4-bobning yakuniy qismlari va 5-bobning boshlanishi bo&#x27;yicha 100% to&#x27;liq akademik tarjima:</p>
  <hr />
  <h3 id="YxGg">4.3-bo&#x27;lim: Shaxsiy buyruq aliasini (taxallusi) yaratish</h3>
  <p id="H6y4">Agar siz bash-da uzun buyruqlarni qayta-qayta yozishdan charchagan bo&#x27;lsangiz, o&#x27;zingizning shaxsiy buyruq aliasingizni yaratishingiz mumkin.</p>
  <p id="CK8w">Buning eng yaxshi usuli uy papkangizdagi <code>.bash_aliases</code> deb nomlangan faylni tahrirlash (yoki u mavjud bo&#x27;lmasa, yaratish) hisoblanadi. Umumiy sintaksis quyidagicha:</p>
  <p id="lR9e"><code>alias buyruq_aliasi=&#x27;asl_buyruq&#x27;</code></p>
  <p id="ZxRv">Bu yerda <code>asl_buyruq</code> — siz nomini o&#x27;zgartirmoqchi bo&#x27;lgan buyruq, <code>buyruq_aliasi</code> esa siz unga bergan yangi nomdir.</p>
  <p id="wJPm"><strong>Masalan:</strong></p>
  <p id="FXzy"><code>alias install=&#x27;sudo apt-get -y install&#x27;</code></p>
  <p id="Vel8">Ushbu qator <code>install</code> yangi aliasini asl <code>sudo apt-get -y install</code> buyrug&#x27;iga biriktiradi. Bu shuni anglatadiki, terminalda <code>install</code> so&#x27;zini ishlatganingizda, bash buni <code>sudo apt-get -y install</code> sifatida talqin qiladi.</p>
  <hr />
  <h3 id="NH3u">4.4-bo&#x27;lim: Tizimingizda faylni joylashgan manzilini aniqlash</h3>
  <p id="wDlm">Bash yordamida <code>locate</code> buyrug&#x27;i orqali faylni osongina topishingiz mumkin. Masalan, deylik siz <code>mykey.pem</code> faylini qidiryapsiz:</p>
  <p id="Bau8"><code>locate mykey.pem</code></p>
  <p id="NQml">Ba&#x27;zan fayllar g&#x27;alati nomlarga ega bo&#x27;lishi mumkin, masalan: <code>random7897_mykey_0fidw.pem</code>. Agar siz ushbu faylni qidirayotgan bo&#x27;lsangiz-u, lekin faqat <code>mykey</code> va <code>pem</code> qismlarini eslasangiz, <code>locate</code> buyrug&#x27;ini <code>grep</code> bilan &quot;payp&quot; (<code>|</code>) orqali quyidagicha birlashtirishingiz mumkin:</p>
  <p id="rAGi"><code>locate pem | grep mykey</code></p>
  <p id="el1c">Bu usul tarkibida har ikkala qism mavjud bo&#x27;lgan barcha natijalarni chiqaradi.</p>
  <p id="LFZi"><strong>Eslatma:</strong> Hamma tizimlarda ham <code>locate</code> utilitasi o&#x27;rnatilmagan yoki yoqilmagan bo&#x27;lishi mumkin. <code>locate</code> juda tez va samarali ishlaydi, chunki u vaqti-vaqti bilan tizimingizni skanerlaydi va barcha fayllarning nomi hamda joylashuvini keshga (cache) saqlab qo&#x27;yadi. Agar ma&#x27;lumot yig&#x27;ish funksiyasi yoqilmagan bo&#x27;lsa, u sizga hech narsa topib bera olmaydi. Keshdagi ma&#x27;lumotlarni yangilash uchun <code>updatedb</code> buyrug&#x27;i yordamida fayl tizimini qo&#x27;lda skanerlashni ishga tushirishingiz mumkin.</p>
  <p id="PhNo">Agar <code>locate</code> ishlamasa, <code>find</code> utilitasidan foydalanishga to&#x27;g&#x27;ri keladi:</p>
  <p id="6CFF"><code>find / -name mykey.pem -print</code></p>
  <p id="12wU">Bu buyruq taxminan <code>locate mykey.pem</code> bilan bir xil vazifani bajaradi, lekin u keshdan foydalanish o&#x27;rniga har safar butun fayl tizimini skanerlab chiqadi. Bu tabiiyki sekinroq va kamroq samarali, lekin real vaqt rejimida aniqroqdir.</p>
  <hr />
  <h1 id="S7m9">5-bob: Disk bo&#x27;shlig&#x27;ini tekshirish</h1>
  <h3 id="AmAg">5.1-bo&#x27;lim: Kataloglarning diskdan foydalanishini tahlil qilish</h3>
  <p id="DlKs">Ba&#x27;zan qaysi katalog qancha disk joyini egallayotganini aniqlash talab etiladi, ayniqsa <code>df -h</code> buyrug&#x27;ini ishlatganingizdan so&#x27;ng diskda joy kam qolganini payqasangiz.</p>
  <h4 id="20vc">du (Disk Usage):</h4>
  <p id="JCIe"><code>du</code> buyrug&#x27;i fayllar to&#x27;plami va kataloglar uchun diskdan foydalanishni rekursiv ravishda umumlashtiradi. Odatda u <code>-sh</code> opsiyasi bilan ishlatiladi:</p>
  <ul id="zCVl">
    <li id="6d1e"><strong>-s, --summarize</strong>: har bir argument uchun faqat umumiy natijani ko&#x27;rsatish.</li>
    <li id="e5Vt"><strong>-h, --human-readable</strong>: o&#x27;lchamlarni odam tushunadigan formatda chiqarish (masalan, 1K, 234M, 2G).</li>
  </ul>
  <p id="0FJE">Joriy katalogdagi fayllarning diskdan foydalanishini umumlashtirish uchun:</p>
  <p id="JtWP"><code>du -sh *</code></p>
  <p id="QWlE"><strong>Yashirin fayllarni ham qo&#x27;shish uchun:</strong></p>
  <p id="9zSa"><code>du -sh .[!.]* *</code></p>
  <p id="cr47"><strong>Chiqish natijasiga umumiy yakuniy miqdorni (total) qo&#x27;shish uchun <code>-c</code> opsiyasi qo&#x27;shiladi:</strong></p>
  <p id="PqUJ"><code>du -sch .[!.]* *</code></p>
  <p id="vyrn">Eng muhimi, <code>du</code> buyrug&#x27;ini ildiz (root) katalogida to&#x27;g&#x27;ri ishlatish qaysi ilova, xizmat yoki foydalanuvchi disk joyini haddan tashqari ko&#x27;p egallayotganini topishda &quot;hayotni saqlab qoluvchi&quot; harakat hisoblanadi. Masalan, pochta serverida disk joyi keskin kamayib ketsa, bunga spam hujumi sabab bo&#x27;lgan bo&#x27;lishi mumkin va buni <code>du</code> yordamida aniqlash mumkin.</p>
  <p id="k1VP"><strong>Ildiz katalogini diskdan foydalanish bo&#x27;yicha tekshirish:</strong></p>
  <p id="WlJY"><code>sudo du -sch /.[!.]* /*</code></p>
  <p id="C5JC"><strong>Kataloglarni o&#x27;lcham chegarasi (threshold) bo&#x27;yicha saralash:</strong></p>
  <p id="zvLh">Oxirgi va eng samarali usul — kichik kataloglarni e&#x27;tiborsiz qoldirish uchun minimal chegara qiymatini qo&#x27;shishdir. Quyidagi buyruq ildiz katalogi ostidagi faqat 1GB dan katta bo&#x27;lgan papkalarni ko&#x27;rsatadi:</p>
  <p id="G812"><code>sudo du --threshold=1G -ch /.[!.]* /*</code></p>
  <p id="i2RG"><strong>Natija namunasi:</strong></p>
  <p id="E1zP">Plaintext</p>
  <pre id="8Eu7">1,4G    /usr/lib
1,8G    /usr/share
3,5G    /usr
5,8G    total
</pre>
  <p id="Mmqj"></p>
  <p id="IBId"></p>
  <p id="nkri"></p>
  <h3 id="t9wC">5.2-bo&#x27;lim: Disk bo&#x27;shlig&#x27;ini tekshirish (Checking Disk Space)</h3>
  <p id="IsXE">Serveringiz yoki kompyuteringizdagi turli bo&#x27;limlar (partition) va drayvlar holatini, ularning qanchalik to&#x27;lganini tekshirish juda keng tarqalgan vazifadir. Buning uchun quyidagi buyruqni ishga tushirishingiz kerak:</p>
  <p id="Oqey"><code>df -h</code></p>
  <p id="XJYO">Ushbu buyruq quyidagiga o&#x27;xshash natija beradi:</p>
  <p id="3H1t">Plaintext</p>
  <pre id="5fLD">[root@mail ~]# df -h
Filesystem                    Size  Used  Avail  Use%  Mounted on
/dev/mapper/VolGroup-lv_root   19G  1.6G    16G    9%  /
tmpfs                         245M     0   245M    0%  /dev/shm
/dev/sda1                     485M   47M   413M   11%  /boot
</pre>
  <p id="qzmP">Ushbu oddiy misolda biz ildiz (<code>/</code>) bo&#x27;limining atigi 9% qismi ishlatilganini ko&#x27;rishimiz mumkin.</p>
  <p id="iG2S">Murakkabroq misolda esa <code>df</code> buyrug&#x27;i yordamida turli o&#x27;rnatish nuqtalarini (mount points) ko&#x27;rishimiz mumkin:</p>
  <p id="IcS5">Plaintext</p>
  <pre id="PBfu">[root@mail ~]# df -h
Filesystem            Size  Used  Avail  Use%  Mounted on
/dev/mapper/VG-root   1.9T  1.7T    89G   95%  /
/dev/mapper/VG-var    431G  145G   264G   36%  /var
devtmpfs              7.8G  204K   7.8G    1%  /dev
tmpfs                 7.8G  4.0K   7.8G    1%  /dev/shm
/dev/md1              495M  126M   344M   27%  /boot
ku.example.com:9421   2.5T  487G   2.0T   20%  /mnt/test
tmpfs                 500M   86M   415M   18%  /var/ngx_pagespeed_cache
</pre>
  <p id="p-rc_792cbe5727d46445-287">Ushbu misolda:</p>
  <ul id="IjBW">
    <li id="v8zX"><code>/</code> (ildiz) bo&#x27;limi <strong>95%</strong> ga to&#x27;lgan.</li>
    <li id="LaKV">Qo&#x27;shimcha <code>/var</code> bo&#x27;limi esa atigi <strong>36%</strong> band.</li>
    <li id="g3Gq"><code>/mnt/test</code> manziliga <strong>2T</strong> hajmli tashqi tarmoq drayvi (external network mount) ulangan.</li>
    <li id="a5dx"><code>/var/ngx_pagespeed_cache</code> manziliga <strong>500M</strong> hajmli ramdisk (tmpfs) o&#x27;rnatilgan.</li>
  </ul>
  <p id="BE9u"></p>
  <p id="Pm47"></p>
  <p id="oIxV">Mana 6-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="Df5H">6-bob: Tizim ma&#x27;lumotlarini olish</h1>
  <p id="EKQF">Tizimga oid turli ma&#x27;lumotlarni yig&#x27;ish uchun ishlatiladigan buyruqlar to&#x27;plami.</p>
  <h3 id="oeqj">6.1-bo&#x27;lim: Protsessor (CPU), Xotira (Memory), Tarmoq va Disk (I/O operatsiyalari) haqida statistika</h3>
  <p id="lhpz">Linux tizimining asosiy komponentlari haqida umumiy statistik ma&#x27;lumotlarni olish uchun <code>stat</code> oilasiga mansub buyruqlar juda foydali hisoblanadi.</p>
  <h4 id="sDD2">CPU (Protsessor)</h4>
  <p id="lKcg">Protsessorga oid statistikani olish uchun <code>mpstat</code> buyrug&#x27;idan foydalanishingiz mumkin. Quyidagi opsiyalar bilan natija yanada tushunarli bo&#x27;ladi:</p>
  <p id="f77c"><code>$ mpstat 2 10</code></p>
  <p id="nQjE"><em>(Har 2 soniyada, jami 10 marta ma&#x27;lumot chiqaradi)</em></p>
  <h4 id="fGaS">Memory (Xotira)</h4>
  <p id="f4te">Operativ xotiraning (RAM) qolgan qismini ko&#x27;rish uchun <code>free</code> buyrug&#x27;ini hamma biladi, lekin barcha statistika, jumladan Kirish/Chiqish (I/O) operatsiyalarini ko&#x27;rish uchun:</p>
  <p id="HxmJ"><code>$ vmstat 2 10</code></p>
  <h4 id="dYFo">Disk</h4>
  <p id="CIPd">Disk operatsiyalari haqida real vaqt rejimida umumiy ma&#x27;lumot olish uchun <code>iostat</code> dan foydalanish mumkin:</p>
  <p id="YUMy"><code>$ iostat -kx 2</code></p>
  <h4 id="caZC">Network (Tarmoq)</h4>
  <p id="ZmhS">Tarmoq xizmatlarida nima sodir bo&#x27;layotganini ko&#x27;rish uchun <code>netstat</code> buyrug&#x27;i qo&#x27;llaniladi:</p>
  <ul id="BTot">
    <li id="tvQk"><code>$ netstat -ntlp</code> — ochiq TCP soketlari.</li>
    <li id="Vvgk"><code>$ netstat -nulp</code> — ochiq UDP soketlari.</li>
    <li id="qfvd"><code>$ netstat -nxlp</code> — ochiq Unix soketlari.</li>
  </ul>
  <p id="ghDB">Real vaqt rejimida tarmoq trafigini kuzatish uchun:</p>
  <p id="ubaG"><code>$ sudo iftop</code></p>
  <p id="5yEG"><strong>Qo&#x27;shimcha:</strong></p>
  <p id="A8Ss">Barcha komponentlar bo&#x27;yicha I/O operatsiyalariga oid statistikani real vaqtda yaratish uchun <code>dstat</code> dan foydalanish mumkin. Ushbu vosita <code>vmstat</code>, <code>iostat</code> va <code>ifstat</code> buyruqlari o&#x27;rnini bosuvchi universal instrumentdir.</p>
  <hr />
  <h3 id="iqsY">6.2-bo&#x27;lim: lscpu va lshw vositalaridan foydalanish</h3>
  <p id="7LzK"><code>lscpu</code> buyrug&#x27;i protsessor haqida ma&#x27;lumot olishning eng oson usulidir.</p>
  <p id="N8Gl"><code>$ lscpu</code></p>
  <p id="Sygp"><strong>Natija namunasi:</strong></p>
  <ul id="d6Uu">
    <li id="QwZj"><strong>Architecture:</strong> x86_64 (Tizim arxitekturasi)</li>
    <li id="6MUZ"><strong>CPU(s):</strong> 4 (Yadrolar soni)</li>
    <li id="kZWb"><strong>Thread(s) per core:</strong> 1 (Har bir yadro uchun oqimlar soni)</li>
    <li id="Fves"><strong>Vendor ID:</strong> GenuineIntel (Ishlab chiqaruvchi)</li>
    <li id="RL06"><strong>CPU MHz:</strong> 1998.000 (Chastota)</li>
    <li id="478u"><strong>L1d/L1i/L2 cache:</strong> (Kesh xotira o&#x27;lchamlari)</li>
  </ul>
  <p id="bPzS"><code>lshw</code> vositasi yordamida:</p>
  <p id="oPhE"><code>$ lshw | grep cpu</code></p>
  <p id="mt89"><em>(Protsessor modeli va uning texnik imkoniyatlarini ko&#x27;rsatadi)</em></p>
  <hr />
  <h3 id="fOFl">6.3-bo&#x27;lim: Qurilmalar ro&#x27;yxati (Hardware List)</h3>
  <p id="afee"><strong>lshw</strong> — kompyuterning apparat konfiguratsiyasi haqida batafsil ma&#x27;lumot olish uchun kichik, ammo kuchli vositadir. U xotira konfiguratsiyasi, proshivka (firmware) versiyasi, ona plata (mainboard), CPU versiyasi va tezligi, kesh sozlamalari, shina (bus) tezligi va boshqalar haqida hisobot beradi.</p>
  <ul id="w0hq">
    <li id="i7IL"><code>$ sudo lshw | less</code> — ma&#x27;lumotni varoqlab ko&#x27;rish.</li>
    <li id="Hwa0"><code>$ sudo lshw -html &gt; myhardware.html</code> — hisobotni HTML formatida saqlash.</li>
    <li id="c0py"><code>$ sudo lshw -xml &gt; myhardware.xml</code> — hisobotni XML formatida saqlash.</li>
  </ul>
  <p id="5Jke"><strong>Boshqa qurilmalar ma&#x27;lumotlari:</strong></p>
  <ul id="GCf8">
    <li id="cQdr"><strong>PCI ma&#x27;lumotlari:</strong> <code>$ lspci -tv</code></li>
    <li id="LB2Q"><strong>USB ma&#x27;lumotlari:</strong> <code>$ lsusb -tv</code></li>
    <li id="KY3V"><strong>BIOS ma&#x27;lumotlari:</strong> <code>$ dmidecode -q | less</code></li>
    <li id="L3Qj"><strong>Disk haqida aniq ma&#x27;lumot (masalan, sda diski):</strong> <code>$ hdparm -i /dev/sda</code></li>
  </ul>
  <p id="i9a2"><strong>Qo&#x27;shimcha foydali buyruqlar:</strong></p>
  <ul id="8Jlv">
    <li id="t3TZ"><code>$ smartctl -A /dev/sda | grep Power_On_Hours</code> — ushbu disk jami necha soat ishlaganini ko&#x27;rsatadi.</li>
    <li id="Hocq"><code>$ hdparm -tT /dev/sda</code> — diskning o&#x27;qish tezligini sinovdan o&#x27;tkazadi.</li>
    <li id="lzXo"><code>$ badblocks -s /dev/sda</code> — diskda o&#x27;qib bo&#x27;lmaydigan (bad) bloklar bor-yo&#x27;qligini tekshiradi.</li>
  </ul>
  <p id="FzLk"></p>
  <p id="jDR3"></p>
  <h3 id="uBBr">6.4-bo&#x27;lim: Protsessor (CPU) modeli va tezligi haqidagi ma&#x27;lumotlarni topish</h3>
  <p id="NNbO">Ubuntu va boshqa Linux tizimlarida protsessor haqida eng batafsil ma&#x27;lumotni <code>/proc/cpuinfo</code> virtual faylini o&#x27;qish orqali olish mumkin.</p>
  <p id="QJtL"><strong>Buyruq:</strong></p>
  <p id="MTDh"><code>$ cat /proc/cpuinfo</code></p>
  <p id="TomD"><strong>Natija namunasi (tahlili):</strong></p>
  <ul id="GER7">
    <li id="76K8"><strong>processor : 0</strong> — mantiqiy protsessor tartib raqami.</li>
    <li id="JnD0"><strong>vendor_id : GenuineIntel</strong> — ishlab chiqaruvchi identifikatori (Intel).</li>
    <li id="9SHr"><strong>model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz</strong> — protsessorning to&#x27;liq nomi va nominal tezligi.</li>
    <li id="ga9S"><strong>cpu MHz : 1596.000</strong> — protsessorning ayni damdagi ishchi tezligi (quvvatni tejash rejimi tufayli nominal tezlikdan past bo&#x27;lishi mumkin).</li>
    <li id="etDG"><strong>cache size : 4096 KB</strong> — kesh xotira hajmi.</li>
    <li id="DEuh"><strong>cpu cores : 4</strong> — fizik yadrolar soni.</li>
    <li id="sJqM"><strong>flags</strong> — protsessor tomonidan qo&#x27;llab-quvvatlanadigan texnologiyalar (masalan, <code>vmx</code> — virtuallashtirish, <code>sse</code> — oqimli ma&#x27;lumotlar ishlovi).</li>
  </ul>
  <p id="ldOj"><strong>Protsessorlar (shu jumladan yadrolar) sonini sanash:</strong></p>
  <p id="KPor"><code>$ grep -c processor /proc/cpuinfo</code></p>
  <hr />
  <h3 id="QUVB">6.5-bo&#x27;lim: Jarayonlarni monitoring qilish va ma&#x27;lumot yig&#x27;ish</h3>
  <p id="HDCm">Linux hostida jarayonlarni (process) kuzatishning ikki xil usuli mavjud:</p>
  <h4 id="Sjeh">1. Statik monitoring</h4>
  <p id="Q7T1">Eng ko&#x27;p qo&#x27;llaniladigan buyruq — <strong><code>ps</code></strong> (process status). U ayni damda ishlayotgan jarayonlar va ularning identifikatsiya raqamlari (PID) haqida ma&#x27;lumot beradi.</p>
  <p id="PTyK"><strong>Foydali opsiyalar:</strong></p>
  <ul id="8uFi">
    <li id="FPfU"><strong>Ierarxiya ko&#x27;rinishida ro&#x27;yxatlash:</strong><code>$ ps -e -o pid,args --forest</code></li>
    <li id="mqOf"><strong>CPU ishlatishi bo&#x27;yicha saralash:</strong><code>$ ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed &#x27;/^ 0.0 /d&#x27;</code></li>
    <li id="WsWE"><strong>Xotira (RAM) ishlatishi bo&#x27;yicha saralash:</strong><code>$ ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS</code></li>
    <li id="8zL6"><strong>Maxsus jarayonning (masalan, firefox) barcha oqimlarini (threads) ko&#x27;rish:</strong><code>$ ps -C firefox-bin -L -o pid,tid,pcpu,state</code></li>
  </ul>
  <p id="tikB"><strong>Ochiq fayllarni tekshirish (<code>lsof</code>):</strong></p>
  <p id="13sG">Jarayon qaysi fayl yoki yo&#x27;llardan (path) foydalanayotganini ko&#x27;rish uchun:</p>
  <p id="OR1p"><code>$ lsof -p [PID]</code> (bu yerda <code>$$</code> — joriy shell identifikatori).</p>
  <h4 id="OztL">2. Interaktiv (dinamik) monitoring</h4>
  <p id="9JOh">Real vaqt rejimida ma&#x27;lumotlarni yangilab turuvchi vositalar:</p>
  <ul id="Wgl8">
    <li id="EUpP"><strong><code>top</code></strong>: Standart va eng mashhur dinamik monitoring buyrug&#x27;i. Ma&#x27;lumotlarni filtrlash va saralash uchun ko&#x27;plab ichki opsiyalarga ega.</li>
    <li id="iXkW"><strong><code>htop</code></strong>: <code>top</code> buyrug&#x27;ining zamonaviy va rangli muqobili. Unda jarayonlarni boshqarish (masalan, o&#x27;chirish) ancha qulay.<code>$ htop -d 5</code> <em>(har 5 soniyada yangilanadi)</em></li>
    <li id="spUh"><strong><code>atop</code></strong>: Barcha harakatlarni log faylga yozib borish xususiyatiga ega (standart bo&#x27;yicha har 600 soniyada).</li>
    <li id="ik2J"><strong>Ixtisoslashgan vositalar:</strong></li>
    <ul id="sC52">
      <li id="hCCu"><code>iotop</code> — diskka kirish/chiqish (I/O) operatsiyalari monitoringi.</li>
      <li id="T1y6"><code>iftop</code> — tarmoq trafigi monitoringi.</li>
    </ul>
  </ul>
  <p id="IBnQ"></p>
  <p id="0eQ3">Mana 7-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="jgtD">7-bob: ls buyrug&#x27;i</h1>
  <h3 id="rxT8">7.1-bo&#x27;lim: ls buyrug&#x27;i uchun opsiyalar</h3>
  <p id="1dC2"><code>ls</code> (list) buyrug&#x27;ining barcha asosiy opsiyalari:</p>
  <ul id="nuoP">
    <li id="VdXV"><strong><code>ls -a</code></strong>: barcha fayllarni, jumladan <code>.</code> bilan boshlanadigan yashirin fayllarni ham ro&#x27;yxatlaydi.</li>
    <li id="nxeW"><strong><code>ls --color</code></strong>: ro&#x27;yxatni rangli ko&#x27;rinishda chiqaradi <code>[=always/never/auto]</code>.</li>
    <li id="MpOn"><strong><code>ls -d</code></strong>: kataloglarning o&#x27;zini ro&#x27;yxatlaydi (ichidagilarini emas).</li>
    <li id="5xPY"><strong><code>ls -F</code></strong>: har bir ob&#x27;ekt turiga qarab oxiriga maxsus belgi (<code>* / = &gt; @ |</code>) qo&#x27;shadi.</li>
    <li id="TcZU"><strong><code>ls -i</code></strong>: fayllarning <strong>inode</strong> (indeks tuguni) raqamini ko&#x27;rsatadi.</li>
    <li id="E1Rg"><strong><code>ls -l</code></strong>: uzun formatda ro&#x27;yxatlaydi — huquqlar, ega va vaqtni ko&#x27;rsatadi.</li>
    <li id="urE0"><strong><code>ls -la</code></strong>: yashirin fayllar bilan birga uzun formatda ro&#x27;yxatlaydi.</li>
    <li id="UH23"><strong><code>ls -lh</code></strong>: uzun formatda, fayl o&#x27;lchamlarini o&#x27;qishga qulay (KB, MB, GB) ko&#x27;rinishda chiqaradi.</li>
    <li id="693E"><strong><code>ls -ls</code></strong>: uzun formatda fayl o&#x27;lchamlari bilan birga chiqaradi.</li>
    <li id="6JTj"><strong><code>ls -r</code></strong>: teskari tartibda ro&#x27;yxatlaydi.</li>
    <li id="RsKR"><strong><code>ls -R</code></strong>: kataloglar daraxtini rekursiv (ichma-ich) ravishda ro&#x27;yxatlaydi.</li>
    <li id="lqyz"><strong><code>ls -s</code></strong>: har bir faylning hajmini ko&#x27;rsatadi.</li>
    <li id="FAch"><strong><code>ls -S</code></strong>: fayl hajmi bo&#x27;yicha saralaydi (kattasidan kichigiga).</li>
    <li id="xbhJ"><strong><code>ls -t</code></strong>: vaqt va sana bo&#x27;yicha saralaydi.</li>
    <li id="lJcQ"><strong><code>ls -X</code></strong>: fayl kengaytmasi (extension) bo&#x27;yicha saralaydi.</li>
  </ul>
  <hr />
  <h3 id="HBBW">7.2-bo&#x27;lim: ls buyrug&#x27;ining eng ko&#x27;p ishlatiladigan opsiyalari</h3>
  <p id="rHL0"><code>ls</code> argumentlarsiz ishlatilganda joriy ishchi katalogdagi fayl va kataloglarni ko&#x27;rsatadi. (Odatda <code>.</code> bilan boshlanuvchi yashirin fayllarni ko&#x27;rsatmaydi).</p>
  <p id="E2g0"><strong>Misol:</strong></p>
  <p id="aMTx">Bash</p>
  <pre id="oOQm">user@ubuntu14:/usr$ ls
bin  games  include  lib  lib32  local  sbin  share  src
</pre>
  <p id="IViA"><strong>Barcha fayllarni ko&#x27;rish (yashirin fayl va papkalar bilan birga):</strong></p>
  <p id="aRiB">Buning uchun <code>ls -a</code> yoki <code>ls --all</code> ishlatiladi.</p>
  <p id="1gx1">Bash</p>
  <pre id="QfAS">user@ubuntu14:/usr$ ls -a
.  ..  bin  games  include  lib  lib32  local  sbin  share  src
</pre>
  <p id="vLYS"><strong>Fayllar, papkalar va ramziy havolalarni (symbolic links) farqlash:</strong></p>
  <p id="kO3R">Buning uchun <code>ls -F</code> yoki <code>ls --classify</code> ishlatiladi.</p>
  <p id="eEpW">Bash</p>
  <pre id="CdCs">user@ubuntu14:~$ ls -F
Desktop/  Downloads/  Music/  test* a_link@
</pre>
  <p id="jOG5">Bu yerda quyidagi belgilar ob&#x27;ekt turini bildiradi:</p>
  <ul id="uXKL">
    <li id="ymq7"><strong>“/”</strong> — katalog (papka).</li>
    <li id="G1eg"><strong>“*”</strong> — ishga tushiriladigan (executable) fayl.</li>
    <li id="ioCr"><strong>“@”</strong> — ramziy havola (symbolic link).</li>
  </ul>
  <p id="t5hU"><strong>Fayl va kataloglar haqida batafsil ma&#x27;lumot olish:</strong></p>
  <p id="o2Pk">Buning uchun <code>ls -l</code> ishlatiladi.</p>
  <p id="QFNd">Bash</p>
  <pre id="ASeZ">user@ubuntu14:~/example$ ls -l
total 6464
-rw-r--r-- 1 user group      41 Dec 24 12:19 Z.txt
drwxr-xr-x 2 user group    4096 Dec 24 12:00 a_directory
lrwxrwxrwx 1 user group       6 Dec 24 12:04 a_link -&gt; a_file
-rw-r----- 1 user group 6586816 Dec 24 12:07 big.zip
</pre>
  <p id="Pcfg"><strong>Ushbu misolning tahlili:</strong></p>
  <ol id="2pN6">
    <li id="YaPd"><strong>total 6464</strong>: Tarkibdagi barcha narsalarning umumiy hajmi 6464 KB.</li>
    <li id="uIya"><strong>Birinchi belgi</strong>: Ob&#x27;ekt turi (masalan, <code>d</code> — katalog, <code>l</code> — havola, <code>-</code> — oddiy fayl).</li>
    <li id="3fjK"><strong>Keyingi 9 ta belgi</strong>: Foydalanuvchi (user), guruh (group) va boshqalar uchun ruxsatlar.</li>
    <li id="6Nez"><strong>Raqam</strong>: Hard linklar (qattiq havolalar) soni.</li>
    <li id="6ORD"><strong>Ega va Guruh</strong>: Fayl egasining nomi va guruhi.</li>
    <li id="VisU"><strong>O&#x27;lcham</strong>: Baytlarda ko&#x27;rsatilgan hajm. <code>-h</code> opsiyasi qo&#x27;shilsa, masalan <code>6586816</code> soni <code>6.3M</code> ko&#x27;rinishida chiqadi.</li>
    <li id="l70h"><strong>Vaqt tamg&#x27;asi</strong>: Odatda fayl oxirgi marta o&#x27;zgartirilgan vaqt.</li>
    <li id="tXHG"><strong>Nomi</strong>: Fayl yoki katalog nomi. Havolalar (<code>link</code>) o&#x27;zi yo&#x27;naltirilgan asl faylni ham ko&#x27;rsatadi.</li>
  </ol>
  <p id="S1pf"></p>
  <p id="zd5q"></p>
  <p id="M3Qi"></p>
  <p id="sXoJ">Mana 8-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="BziU">8-bob: &#x27;tar&#x27; buyrug&#x27;i yordamida fayllarni siqish (arxivlash)</h1>
  <h3 id="lZ6u">Umumiy opsiyalar</h3>
  <ul id="COFb">
    <li id="QMEP"><strong><code>-c, --create</code></strong>: Yangi arxiv yaratish.</li>
    <li id="J0nz"><strong><code>-x, --extract</code></strong>: Arxivdan fayllarni ajratib olish (chiqarish).</li>
    <li id="jyPc"><strong><code>-t, --list</code></strong>: Arxiv tarkibini ro&#x27;yxat ko&#x27;rinishida ko&#x27;rsatish.</li>
    <li id="yAS0"><strong><code>-f, --file=ARCHIVE</code></strong>: ARCHIVE arxiv fayli yoki katalogidan foydalanish.</li>
    <li id="6rHD"><strong><code>-v, --verbose</code></strong>: Qayta ishlanayotgan fayllarni batafsil ro&#x27;yxat qilish.</li>
  </ul>
  <h3 id="Wn9X">Siqish (Compression) opsiyalari</h3>
  <ul id="jCF5">
    <li id="MGzF"><strong><code>-a, --auto-compress</code></strong>: Siqish dasturini aniqlash uchun arxiv kengaytmasidan (suffix) foydalanish.</li>
    <li id="4MgN"><strong><code>-j, --bzip2</code></strong>: Arxivni <code>bzip2</code> filtri orqali o&#x27;tkazish.</li>
    <li id="dEf4"><strong><code>-J, --xz, --lzma</code></strong>: Arxivni <code>xz</code> filtri orqali o&#x27;tkazish.</li>
    <li id="ySbi"><strong><code>-z, --gzip</code></strong>: Arxivni <code>gzip</code> filtri orqali o&#x27;tkazish.</li>
  </ul>
  <hr />
  <h3 id="GAyV">8.1-bo&#x27;lim: Katalogni siqish</h3>
  <p id="aGQz">Katalogni oddiy arxivlash (siqmasdan):</p>
  <p id="Ed9N"><code>tar -cf ./arxivim.tar ./papkam/</code></p>
  <p id="mWTx">Fayl va kataloglar arxivga qo&#x27;shilayotganini batafsil ko&#x27;rish uchun <code>-v</code> opsiyasidan foydalaning:</p>
  <p id="PbRE"><code>tar -cvf ./arxivim.tar ./papkam/</code></p>
  <p id="jlYa">Katalogni <strong>&#x27;gzip&#x27;</strong> yordamida siqib arxivlash uchun <code>-z</code> opsiyasini ishlatishingiz kerak:</p>
  <p id="ssUV"><code>tar -czf ./arxivim.tar.gz ./papkam/</code></p>
  <p id="7xUK">Shuningdek, <code>-j</code> opsiyasi orqali arxivni <strong>&#x27;bzip2&#x27;</strong> bilan siqishingiz mumkin:</p>
  <p id="8jwx"><code>tar -cjf ./arxivim.tar.bz2 ./papkam/</code></p>
  <p id="KBIZ">Yoki <code>-J</code> opsiyasi yordamida <strong>&#x27;xz&#x27;</strong> bilan siqish:</p>
  <p id="RPOz"><code>tar -cJf ./arxivim.tar.xz ./papkam/</code></p>
  <hr />
  <h3 id="SgNn">8.2-bo&#x27;lim: Arxivdan katalogni ajratib olish (Extract)</h3>
  <p id="4kEu">Arxivni joriy joyga ajratib olish namunasi:</p>
  <p id="jcTJ"><code>tar -xf arxiv-nomi.tar</code></p>
  <p id="g0iJ">Agar arxivni ma&#x27;lum bir manzildagi katalogga ajratib olmoqchi bo&#x27;lsangiz:</p>
  <p id="vK2k"><code>tar -xf arxiv-nomi.tar -C ./katalog/manzil</code></p>
  <hr />
  <h3 id="fS6v">8.3-bo&#x27;lim: Arxiv tarkibini ko&#x27;rish</h3>
  <p id="t9J1">Arxiv faylini ochmasdan (chiqarmasdan) uning tarkibini ro&#x27;yxat qilish:</p>
  <p id="cnIV"><code>tar -tf arxiv.tar.gz</code></p>
  <p id="1f45"><strong>Natija namunasi:</strong></p>
  <p id="CWSY"><code>Arxivdagi-Papka/</code></p>
  <p id="8aJL"><code>Arxivdagi-Papka/fayl1</code></p>
  <p id="vREf"><code>Arxivdagi-Papka/Boshqa-Papka/</code></p>
  <p id="dAyU"><code>Arxivdagi-Papka/Boshqa-Papka/fayl2</code></p>
  <hr />
  <h3 id="juwu">8.4-bo&#x27;lim: Arxiv tarkibini batafsil ro&#x27;yxat qilish</h3>
  <p id="KLzq">Tarkibni ro&#x27;yxatlash uchun misol:</p>
  <p id="Q8KQ"><code>tar -tvf arxiv.tar</code></p>
  <p id="osCW">Ro&#x27;yxatlash uchun <code>-t</code> opsiyasi ishlatiladi. <code>tar.gz</code> arxivining tarkibini ko&#x27;rish uchun yana <code>-z</code> opsiyasidan foydalanish lozim:</p>
  <p id="21Ge"><code>tar -tzvf arxiv.tar.gz</code></p>
  <hr />
  <h3 id="SCvJ">8.5-bo&#x27;lim: Bir yoki bir nechta katalogni istisno qilgan holda siqish</h3>
  <p id="mhmx">Agar siz katalogni arxivlamoqchi bo&#x27;lsangiz-u, lekin arxiv ichiga bir yoki bir nechta quyi papkalar kirmasligini xohlasangiz, <code>--exclude</code> opsiyasidan foydalanasiz.</p>
  <p id="wUN3"><code>tar -cf arxiv.tar ./mening-papkam/ --exclude=&quot;mening-papkam/sub1&quot; --exclude=&quot;mening-papkam/sub3&quot;</code></p>
  <p id="uVC1">Ushbu tuzilmada:</p>
  <p id="p6FS"><code>mening-papkam/</code></p>
  <p id="a15V"><code> sub1/</code></p>
  <p id="Ub4h"><code> sub2/</code></p>
  <p id="6Jus"><code> sub3/</code></p>
  <p id="z3Z6">Natijada arxiv ichida faqat quyidagilar qoladi:</p>
  <p id="L8HY"><code>./arxiv.tar</code></p>
  <p id="JnGh"><code>mening-papkam/</code></p>
  <p id="BIWR"><code> sub2/</code></p>
  <hr />
  <h3 id="yuD8">8.6-bo&#x27;lim: Yetakchi komponentlarni olib tashlash (Strip components)</h3>
  <p id="GPfG">Arxivdan chiqarishda ma&#x27;lum miqdordagi yetakchi (boshlang&#x27;ich) kataloglarni olib tashlash uchun <code>--strip-components</code> opsiyasidan foydalaniladi:</p>
  <p id="zbow"><code>--strip-components=RAQAM</code></p>
  <p id="CObw"><em>(Arxivdan chiqarishda fayl nomlaridan RAQAM miqdoricha yetakchi kataloglarni olib tashlaydi)</em></p>
  <p id="atZR">Masalan, arxiv ichidagi eng yuqori (birinchi) katalogni olib tashlab, faqat uning ichidagilarini chiqarish uchun:</p>
  <p id="4WDq"><code>tar -xf --strip-components=1 arxiv-nomi.tar</code></p>
  <p id="up1r"></p>
  <p id="5E9E"></p>
  <p id="ECMh">Mana 9-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="Sy3T">9-bob: Xizmatlar (Services)</h1>
  <h3 id="FSt2">9.1-bo&#x27;lim: Ubuntuda ishlayotgan xizmatlar ro&#x27;yxatini ko&#x27;rish</h3>
  <p id="Nohf">Tizimingizdagi xizmatlar ro&#x27;yxatini olish uchun quyidagi buyruqni ishga tushirishingiz mumkin:</p>
  <p id="vstV"><code>service --status-all</code></p>
  <p id="kkZW"><code>service --status-all</code> buyrug&#x27;ining natijasi <strong>System V</strong> tomonidan boshqariladigan xizmatlar holatini ko&#x27;rsatadi:</p>
  <ul id="pTTe">
    <li id="21Z1"><strong><code>+</code></strong> belgisi — xizmat ishlayotganini (running) bildiradi.</li>
    <li id="VJXj"><strong><code>-</code></strong> belgisi — xizmat to&#x27;xtatilganini (stopped) bildiradi.</li>
    <li id="bX3u"><strong><code>?</code></strong> belgisi — xizmat holati noma&#x27;lumligini bildiradi.</li>
  </ul>
  <p id="DKhY">Buni <code>service XIZMAT_NOMI status</code> buyrug&#x27;ini ishga tushirish orqali ham tekshirib ko&#x27;rishingiz mumkin.</p>
  <p id="C1Ln">Ba&#x27;zi xizmatlar <strong>Upstart</strong> tomonidan boshqariladi. Barcha Upstart xizmatlarining holatini <code>sudo initctl list</code> buyrug&#x27;i bilan tekshirish mumkin. Upstart tomonidan boshqariladigan har qanday xizmat <code>service --status-all</code> ro&#x27;yxatida ham ko&#x27;rinadi, lekin u <code>?</code> belgisi bilan belgilanadi.</p>
  <hr />
  <h3 id="FycP">9.2-bo&#x27;lim: Systemd orqali xizmatlarni boshqarish</h3>
  <p id="94sP"><strong>Systemd</strong> — zamonaviy Linux distributivlarida xizmatlar va tizim resurslarini boshqarish uchun ishlatiladigan standart tizimdir.</p>
  <h4 id="Tjrh">Xizmatlarni ro&#x27;yxatga olish</h4>
  <ul id="eg8P">
    <li id="CETC"><code>systemctl</code> — Ishlayotgan barcha xizmatlarni ro&#x27;yxatga oladi.</li>
    <li id="Nsae"><code>systemctl --failed</code> — Ishlamay qolgan (xatolikka uchragan) xizmatlarni ko&#x27;rsatadi.</li>
  </ul>
  <h4 id="0gUH">Nishonlarni (Targets) boshqarish (SysV dagi Runlevel-larga o&#x27;xshash)</h4>
  <ul id="0yQ7">
    <li id="omCV"><code>systemctl get-default</code> — Tizimingiz uchun standart yuklanish nishonini (default target) topadi.</li>
    <li id="Rmxr"><code>systemctl set-default &lt;nishon-nomi&gt;</code> — Tizim uchun standart yuklanish nishonini o&#x27;rnatadi.</li>
  </ul>
  <h4 id="9yQC">Xizmatlarni ish jarayonida (runtime) boshqarish</h4>
  <ul id="48Ip">
    <li id="KQAg"><code>systemctl start [xizmat-nomi]</code> — Xizmatni ishga tushirish.</li>
    <li id="Fr0e"><code>systemctl stop [xizmat-nomi]</code> — Xizmatni to&#x27;xtatish.</li>
    <li id="JmT8"><code>systemctl restart [xizmat-nomi]</code> — Xizmatni qayta ishga tushirish.</li>
    <li id="pLIE"><code>systemctl reload [xizmat-nomi]</code> — Xizmatdan o&#x27;z sozlamalarini (konfiguratsiyasini) qayta yuklashni so&#x27;rash.</li>
    <li id="Ouky"><code>systemctl status [xizmat-nomi]</code> — Xizmatning joriy holatini ko&#x27;rsatish.</li>
  </ul>
  <h4 id="so4R">Xizmatlarning avtomatik ishga tushishini boshqarish</h4>
  <ul id="tiUI">
    <li id="zVVo"><code>systemctl is-enabled [xizmat-nomi]</code> — Xizmat tizim yuklanayotgan vaqtda (boot) yoqilganligini tekshirish.</li>
    <li id="nGd0"><code>systemctl is-active [xizmat-nomi]</code> — Xizmat ayni damda faol (ishlayotgan) ekanligini tekshirish.</li>
    <li id="utCl"><code>systemctl enable [xizmat-nomi]</code> — Xizmatni tizim yuklanayotganda avtomatik ishga tushadigan qilish.</li>
    <li id="3kdX"><code>systemctl disable [xizmat-nomi]</code> — Avtomatik ishga tushishni o&#x27;chirish.</li>
  </ul>
  <h4 id="Xfz6">Xizmatlarni niqoblash (Masking)</h4>
  <ul id="Rr2B">
    <li id="W5Pg"><code>systemctl mask [xizmat-nomi]</code> — Xizmatni niqoblash (bu xizmatni xatolik bilan ishga tushirib yuborishni imkonsiz qiladi).</li>
    <li id="odrv"><code>systemctl unmask [xizmat-nomi]</code> — Xizmatni niqobdan chiqarish.</li>
  </ul>
  <h4 id="udj4">Systemd-ni qayta yuklash</h4>
  <ul id="Zet6">
    <li id="iSqE"><code>systemctl daemon-reload</code> — Yangi yaratilgan yoki o&#x27;zgartirilgan unit fayllarni (xizmat sozlamalarini) tizimga qayta tanitish uchun ishlatiladi.</li>
  </ul>
  <p id="qOYt"></p>
  <p id="I56X">Mana 10-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="KJu6">10-bob: Xizmatlarni boshqarish (Managing Services)</h1>
  <h3 id="kS3H">10.1-bo&#x27;lim: Xizmat bilan bog&#x27;liq muammoni tashxislash</h3>
  <p id="tp87"><strong>Systemd</strong> ishlatadigan tizimlarda (masalan, Fedora 15+, Ubuntu 15.04+ (Server va Desktop), RHEL/CentOS 7+):</p>
  <p id="hvOH"><code>systemctl status [xizmat_nomi]</code></p>
  <p id="JiHK">Bu yerda <code>[xizmat_nomi]</code> — tekshirilayotgan xizmat; masalan: <code>systemctl status sshd</code>. Ushbu buyruq xizmat haqidagi asosiy holat ma&#x27;lumotlarini va loglarga yozilgan so&#x27;nggi xatoliklarni ko&#x27;rsatadi.</p>
  <p id="6lbM">Xatoliklarni chuqurroq o&#x27;rganish uchun <strong><code>journalctl</code></strong> buyrug&#x27;idan foydalanish mumkin. Masalan, <code>journalctl -xe</code> buyrug&#x27;i tizim jurnalidagi oxirgi 1000 ta qaydni peydjerga (masalan, <code>less</code>) yuklaydi va to&#x27;g&#x27;ridan-to&#x27;g&#x27;ri oxirgi qatorlarga o&#x27;tadi. Shuningdek, <code>journalctl -f</code> buyrug&#x27;i yordamida log xabarlarini real vaqt rejimida kuzatib borish mumkin.</p>
  <p id="M15v">Muayyan bir xizmatga tegishli loglarni ko&#x27;rish uchun <code>-t</code> bayrog&#x27;idan foydalaning:</p>
  <p id="ZxE6"><code>journalctl -f -t sshd</code></p>
  <p id="5H9Z">Boshqa foydali opsiyalar:</p>
  <ul id="7t5Q">
    <li id="c3yQ"><strong><code>-p</code></strong>: ustuvorlik (priority) bo&#x27;yicha saralash (masalan, <code>-p warnings</code> faqat ogohlantirish va undan yuqori xatolarni ko&#x27;rsatadi).</li>
    <li id="Rka1"><strong><code>-b</code></strong>: oxirgi yuklanishdan (boot) boshlab ko&#x27;rish.</li>
    <li id="yvWy"><strong><code>-S</code></strong>: belgilangan vaqtdan (since) boshlab ko&#x27;rish.</li>
  </ul>
  <p id="6CD6"><strong>Misol:</strong></p>
  <p id="OIN0"><code>journalctl -p err -S yesterday</code></p>
  <p id="UmCv"><em>(Kechadan beri xatolik (error) sifatida qayd etilgan barcha hodisalarni ko&#x27;rsatadi).</em></p>
  <p id="rX9k">Agar <code>journalctl</code> mavjud bo&#x27;lmasa yoki tizim jurnalidan foydalanmaydigan ilovalar logini kuzatayotgan bo&#x27;lsangiz, faylning so&#x27;nggi bir necha qatorini ko&#x27;rish uchun <strong><code>tail</code></strong> buyrug&#x27;idan foydalaniladi. <code>tail</code> uchun foydali bayroq — <code>-f</code> (&quot;follow&quot;), u faylga yangi ma&#x27;lumotlar qo&#x27;shilishi bilan ularni ko&#x27;rsatib boradi.</p>
  <p id="WPXp">Tizimdagi aksariyat xizmatlarning xabarlarini ko&#x27;rish uchun:</p>
  <p id="hAaC"><code>tail -f /var/log/messages</code></p>
  <p id="uBwE">Yoki xizmat imtiyozli (privileged) bo&#x27;lsa va maxfiy ma&#x27;lumotlarni yozishi mumkin bo&#x27;lsa:</p>
  <p id="Suvh"><code>tail -f /var/log/secure</code></p>
  <p id="YYGJ">Ba&#x27;zi xizmatlarning shaxsiy log fayllari bor. Masalan, Linux audit demoni bo&#x27;lmish <code>auditd</code> o&#x27;z loglarini <code>/var/log/audit/</code> papkasida saqlaydi. Agar xizmatingiz natijasini <code>/var/log/messages</code> ichida ko&#x27;rmasangiz, <code>/var/log/</code> katalogidan xizmatga xos shaxsiy loglarni qidirib ko&#x27;ring.</p>
  <hr />
  <h3 id="KRe4">10.2-bo&#x27;lim: Xizmatlarni ishga tushirish va to&#x27;xtatish</h3>
  <p id="3md6"><strong>System-V uslubidagi init skriptlarini ishlatadigan tizimlarda (masalan, RHEL/CentOS 6):</strong></p>
  <ul id="vthk">
    <li id="tb2i"><code>service &lt;xizmat&gt; start</code> — Ishga tushirish.</li>
    <li id="leyv"><code>service &lt;xizmat&gt; stop</code> — To&#x27;xtatish.</li>
  </ul>
  <p id="Fqre"><strong>Systemd ishlatadigan tizimlarda (masalan, Ubuntu 15.04+, RHEL/CentOS 7+):</strong></p>
  <ul id="kzPt">
    <li id="Rc7t"><code>systemctl start &lt;xizmat&gt;</code> — Ishga tushirish (masalan: <code>systemctl start dnsmasq</code>).</li>
    <li id="V0Bg"><code>systemctl stop &lt;xizmat&gt;</code> — To&#x27;xtatish (masalan: <code>systemctl stop dnsmasq</code>).</li>
  </ul>
  <hr />
  <h3 id="kmJS">10.3-bo&#x27;lim: Xizmat holatini olish (Getting status)</h3>
  <p id="N25D"><strong>System-V uslubidagi tizimlarda (masalan, RHEL/CentOS 6):</strong></p>
  <p id="5WSe"><code>service &lt;xizmat&gt; status</code></p>
  <p id="zrPT"><strong>Systemd ishlatadigan tizimlarda (masalan, Ubuntu 15.04+, RHEL/CentOS 7+):</strong></p>
  <p id="OwGD"><code>systemctl status &lt;xizmat&gt;</code></p>
  <p id="ETRV"></p>
  <p id="YI63">Mana 11-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="rwhQ">11-bob: Foydalanuvchilarni tahrirlash (Modifying Users)</h1>
  <h3 id="oCnX">Parametrlar tafsiloti (Parameter Details)</h3>
  <ul id="tQZB">
    <li id="WCiJ"><strong>username (foydalanuvchi nomi)</strong>: Foydalanuvchining nomi. Katta harflardan foydalanmang, nuqta ishlatmang, nom tire (<code>-</code>) bilan tugamasligi kerak, tarkibida ikki nuqta (<code>:</code>) va maxsus belgilar bo&#x27;lmasligi lozim. Shuningdek, raqam bilan boshlanishi mumkin emas.</li>
  </ul>
  <hr />
  <h3 id="3roM">11.1-bo&#x27;lim: O&#x27;z shaxsiy parolingizni o&#x27;rnatish</h3>
  <p id="Lxd2">O&#x27;zingiz foydalanayotgan akkaunt parolini o&#x27;zgartirish yoki o&#x27;rnatish uchun quyidagi buyruqni kiriting:</p>
  <p id="aGSl"><code>passwd</code></p>
  <hr />
  <h3 id="neRl">11.2-bo&#x27;lim: Boshqa foydalanuvchining parolini o&#x27;rnatish</h3>
  <p id="Mvie">Buning uchun buyruqni <strong>root</strong> (administrator) huquqi bilan bajaring:</p>
  <p id="4QTZ"><code>passwd username</code></p>
  <hr />
  <h3 id="L0An">11.3-bo&#x27;lim: Foydalanuvchi qo&#x27;shish</h3>
  <p id="QpIN">Tizimga yangi foydalanuvchi qo&#x27;shish uchun quyidagilarni <strong>root</strong> sifatida bajaring:</p>
  <p id="fdob"><code>useradd username</code></p>
  <hr />
  <h3 id="OMaJ">11.4-bo&#x27;lim: Foydalanuvchini o&#x27;chirish</h3>
  <p id="JIUn">Foydalanuvchini tizimdan olib tashlash uchun quyidagilarni <strong>root</strong> sifatida bajaring:</p>
  <p id="GFT3"><code>userdel username</code></p>
  <hr />
  <h3 id="cIDf">11.5-bo&#x27;lim: Foydalanuvchini va uning uy papkasini o&#x27;chirish</h3>
  <p id="4W96">Foydalanuvchini o&#x27;chirish bilan birga, unga tegishli barcha fayllar va uy papkasini (<code>home folder</code>) ham to&#x27;liq yo&#x27;qotish uchun quyidagilarni <strong>root</strong> sifatida bajaring:</p>
  <p id="J0jU"><code>userdel -r username</code></p>
  <hr />
  <h3 id="wCjV">11.6-bo&#x27;lim: Joriy foydalanuvchi a&#x27;zo bo&#x27;lgan guruhlarni ko&#x27;rish</h3>
  <p id="n8WT">O&#x27;zingiz qaysi guruhlarga a&#x27;zo ekanligingizni bilish uchun:</p>
  <p id="ZQ2F"><code>groups</code></p>
  <p id="fh8B">Foydalanuvchi va guruhlarning raqamli identifikatorlari (<strong>UID</strong> va <strong>GID</strong>) haqida batafsilroq ma&#x27;lumotni <code>id</code> buyrug&#x27;i orqali olish mumkin.</p>
  <hr />
  <h3 id="9bfv">11.7-bo&#x27;lim: Muayyan foydalanuvchi a&#x27;zo bo&#x27;lgan guruhlarni ko&#x27;rish</h3>
  <p id="ACDx">Boshqa bir foydalanuvchining guruhlarini tekshirish uchun:</p>
  <p id="b5JN"><code>groups username</code></p>
  <p id="ayBp">Foydalanuvchi va guruhlarning raqamli identifikatorlari haqida batafsilroq ma&#x27;lumotni <code>id username</code> buyrug&#x27;i orqali olish mumkin.</p>
  <p id="wyrN"></p>
  <p id="OxfY"></p>
  <p id="QvBe"></p>
  <p id="xfDf">Mana 12-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="gVva">12-bob: LAMP Stack</h1>
  <p id="IPBf"><strong>LAMP</strong> (Linux Apache MySQL PHP) — ishlab chiqish muhiti sifatida <strong>Linux</strong> operatsion tizimi, veb-server sifatida <strong>Apache</strong> HTTP serveri, ma&#x27;lumotlar bazasini boshqarish tizimi (RDBMS) sifatida <strong>MySQL</strong> va server tomonidagi (Back-End) dasturlash tili sifatida <strong>PHP</strong> dan iborat texnologiyalar to&#x27;plamidir.</p>
  <p id="qoXr">LAMP veb-ishlab chiqish sohasida ochiq kodli (Open Source) texnologiyalar yechimi sifatida ishlatiladi. Ushbu stakning Windows versiyasi <strong>WAMP</strong> (Windows Apache MySQL PHP) deb ataladi.</p>
  <hr />
  <h3 id="nuTY">12.1-bo&#x27;lim: Arch Linux-da LAMP o&#x27;rnatish</h3>
  <p id="aB2b">Ushbu buyruq orqali biz barcha kerakli paketlarni va so&#x27;nggi yangilanishlarni bir bosqichda o&#x27;rnatamiz:</p>
  <p id="x4QZ"><code>pacman -Syu apache php php-apache mariadb</code></p>
  <h4 id="4F1d">HTTP (Apache) sozlamalari</h4>
  <p id="Yzgc"><code>/etc/httpd/conf/httpd.conf</code> faylini tahrirlang:</p>
  <ul id="bxIn">
    <li id="txhf"><code>ServerAdmin you@example.com</code> qatorini ehtiyojingizga qarab o&#x27;zgartiring.</li>
    <li id="bj09">Veb-sahifalar papkasi standart bo&#x27;yicha <code>ServerRoot &quot;/etc/httpd&quot;</code>. Directory ham xuddi shu papkaga sozlanishi kerak, shuning uchun <code>&lt;Directory &quot;/etc/httpd&quot;&gt;</code> qatorini tekshiring.</li>
    <li id="4bVn">Ushbu papka o&#x27;qish va ijro etish huquqiga ega bo&#x27;lishi kerak: <code>chmod o+x /etc/httpd</code></li>
    <li id="kf6y"><code>.htaccess</code> fayli ishlashi uchun <code>AllowOverride</code> qiymatini <code>none</code> dan <code>All</code> ga o&#x27;zgartiring.</li>
  </ul>
  <p id="UUuY">Har bir foydalanuvchi uchun <code>~/public_html</code> papkasi kerak bo&#x27;lsa (ya&#x27;ni foydalanuvchi sahifasiga <code>http://localhost/~username/</code> orqali kirish uchun), quyidagi qatordagi izohni olib tashlang:</p>
  <p id="Fvcq"><code>Include conf/extra/httpd-userdir.conf</code></p>
  <p id="sscV">So&#x27;ngra har bir foydalanuvchi uchun <code>public_html</code> papkasini yarating va huquqlarni (755) sozlang:</p>
  <p id="fDzn"><code>chmod 755 /home</code></p>
  <p id="3oJJ"><code>chmod 755 /home/username</code></p>
  <p id="f0al"><code>chmod 755 /home/username/public_html</code></p>
  <p id="jzr7">SSL ishlatmoqchi bo&#x27;lsangiz, ushbu qatorni faollashtiring:</p>
  <p id="1krl"><code>LoadModule ssl_module modules/mod_ssl.so</code></p>
  <p id="emdg">Virtual domenlar kerak bo&#x27;lsa, <code>Include conf/extra/httpd-vhosts.conf</code> qatorini faollashtiring va tegishli faylda domenlarni sozlang.</p>
  <p id="hWY5">Xavfsizlik uchun <code>/etc/httpd/conf/extra/httpd-default.conf</code> faylida <code>ServerSignature</code> ni <code>Off</code> va <code>ServerToken</code> ni <code>Prod</code> holatiga keltiring.</p>
  <h4 id="aO5a">PHP sozlamalari</h4>
  <p id="tTeE"><code>/etc/httpd/conf/httpd.conf</code> faylida:</p>
  <ul id="HOi4">
    <li id="qs8R"><code>LoadModule mpm_event_module...</code> qatorini izohga oling.</li>
    <li id="2YTC"><code>LoadModule mpm_prefork_module...</code> qatorini faollashtiring.</li>
    <li id="Dblo"><code>LoadModule</code> ro&#x27;yxatining oxiriga: <code>LoadModule php7_module modules/libphp7.so</code> ni qo&#x27;shing.</li>
    <li id="I1G7"><code>Include</code> ro&#x27;yxatining oxiriga: <code>Include conf/extra/php7_module.conf</code> ni qo&#x27;shing.</li>
  </ul>
  <p id="VBYM"><code>/etc/php/php.ini</code> faylida:</p>
  <ul id="KsKI">
    <li id="Om62"><code>extension=mysqli.so</code> va <code>extension=pdo_mysql.so</code> qatorlarini faollashtiring.</li>
    <li id="Bg8k">Vaqt mintaqasini (timezone) sozlang (masalan: <code>date.timezone = Asia/Tashkent</code>).</li>
  </ul>
  <h4 id="N3Zg">MySQL (MariaDB) sozlamalari</h4>
  <p id="U3wb">Root sifatida ishga tushiring:</p>
  <p id="RG1B"><code>mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql</code></p>
  <p id="ix0q">MySQL demonini ishga tushiring:</p>
  <p id="zVIZ"><code>systemctl enable mysqld</code></p>
  <p id="RwqJ"><code>systemctl start mysqld</code></p>
  <p id="2S4v">Yakunida xavfsizlik sozlamalari uchun: <code>sh /usr/bin/mysql_secure_installation</code> buyrug&#x27;ini bajaring.</p>
  <hr />
  <h3 id="OYOK">12.2-bo&#x27;lim: Ubuntu-da LAMP o&#x27;rnatish</h3>
  <p id="X6xL"><strong>Apache o&#x27;rnatish:</strong></p>
  <p id="GkHC"><code>sudo apt-get install apache2</code></p>
  <p id="R9dJ"><strong>MySQL o&#x27;rnatish:</strong></p>
  <p id="QwAA"><code>sudo apt-get install mysql-server</code></p>
  <p id="qGEN"><strong>PHP o&#x27;rnatish:</strong></p>
  <p id="44QF"><code>sudo apt-get install php5 libapache2-mod-php5</code></p>
  <p id="DS9j"><strong>Tizimni qayta ishga tushirish (xizmatni):</strong></p>
  <p id="cx55"><code>sudo systemctl restart apache2</code></p>
  <p id="RJEK"><strong>PHP o&#x27;rnatilishini tekshirish:</strong></p>
  <p id="HvQw"><code>php -r &#x27;echo &quot;\n\nPHP o&#x27;rnatilishi muvaffaqiyatli yakunlandi.\n\n\n&quot;;&#x27;</code></p>
  <hr />
  <h3 id="odJo">12.3-bo&#x27;lim: CentOS-da LAMP o&#x27;rnatish</h3>
  <h4 id="nFQM">1. Apache veb-serverini o&#x27;rnatish</h4>
  <p id="Q5We"><code>sudo yum -y install httpd</code></p>
  <p id="558t">O&#x27;rnatilgach, xizmatni yoqing va ishga tushiring:</p>
  <p id="QIua"><code>sudo systemctl enable --now httpd</code></p>
  <p id="T6W3">Brauzerda <code>http://localhost</code> manzilini ochib tekshiring.</p>
  <h4 id="q9DR">2. MariaDB serverini o&#x27;rnatish</h4>
  <p id="9IMi"><code>sudo yum -y install mariadb-server</code></p>
  <p id="oEr7">Xizmatni yoqing va ishga tushiring:</p>
  <p id="x0um"><code>sudo systemctl enable --now mariadb</code></p>
  <p id="jaUV">Ma&#x27;lumotlar bazasini himoyalash uchun <code>mysql_secure_installation</code> skriptidan foydalaning. Bu skript root parolini o&#x27;zgartirish, test bazalarini o&#x27;chirish va masofaviy kirishni cheklash imkonini beradi.</p>
  <h4 id="EHaE">3. PHP o&#x27;rnatish</h4>
  <p id="nLKB"><code>sudo yum -y install php php-common</code></p>
  <p id="qNGh">So&#x27;ngra Apache xizmatini qayta ishga tushiring:</p>
  <p id="cQlh"><code>sudo systemctl restart httpd</code></p>
  <p id="OrSl"><strong>PHPni test qilish:</strong></p>
  <p id="7yAP"><code>/var/www/html</code> katalogida <code>index.php</code> faylini yarating va unga quyidagi qatorni qo&#x27;shing:</p>
  <p id="TqXV"><code>&lt;?php phpinfo(); ?&gt;</code></p>
  <p id="4r30">Brauzerda <a href="http://localhost/index.php" target="_blank">http://localhost/index.php</a> manzilini oching. Agar serveringiz haqida ma&#x27;lumotlar chiqsa, o&#x27;rnatish to&#x27;g&#x27;ri bajarilgan. Aks holda, <code>php --version</code> orqali o&#x27;rnatilishni qayta tekshiring.</p>
  <p id="X3Wu">Mana 13-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="HWIO">13-bob: tee buyrug&#x27;i</h1>
  <h3 id="c1VR">Opsiyalar va tavsif</h3>
  <ul id="4nOa">
    <li id="xJ9f"><strong><code>-a, --append</code></strong>: Berilgan fayllarga ma&#x27;lumotni qo&#x27;shib yozadi (ustidan yozib yubormaydi).</li>
    <li id="HAWC"><strong><code>-i, --ignore-interrupts</code></strong>: To&#x27;xtatish signallarini (interrupt signals) e&#x27;tiborsiz qoldiradi.</li>
    <li id="tVTy"><strong><code>--help</code></strong>: Yordam xabarini ko&#x27;rsatadi va ishni to&#x27;xtatadi.</li>
    <li id="BStK"><strong><code>--version</code></strong>: Versiya haqidagi ma&#x27;lumotni ko&#x27;rsatadi va ishni to&#x27;xtatadi.</li>
  </ul>
  <p id="TSMF"><strong>tee</strong> — standart kirishdan (stdin) o&#x27;qiydi va natijani standart chiqishga (stdout) hamda fayllarga yozadi.</p>
  <p id="e849"><code>tee</code> buyrug&#x27;ining nomi sanitariya-tesisat ishlaridagi <strong>T-simon ulagich (T-splitter)</strong> sharafiga qo&#x27;yilgan bo&#x27;lib, u suvni ikki yo&#x27;nalishga ajratadi va shakli bosh lotincha &quot;T&quot; harfiga o&#x27;xshaydi.</p>
  <p id="zz0s"><code>tee</code> buyrug&#x27;i ma&#x27;lumotlarni standart kirishdan har bir faylga va bir vaqtning o&#x27;zida standart chiqishga nusxalaydi. Amalda, <code>tee</code> o&#x27;z kirishini dublikat qiladi va uni bir vaqtning o&#x27;zida bir nechta chiqishlarga yo&#x27;naltiradi.</p>
  <hr />
  <h3 id="hblH">13.1-bo&#x27;lim: Natijani ham standart chiqishga, ham faylga yozish</h3>
  <p id="3Li2">Quyidagi buyruq natijani faqat ekranda (stdout) ko&#x27;rsatadi:</p>
  <p id="90Hx"><code>$ ls</code></p>
  <p id="35gk">Quyidagi buyruq natijani ekranga chiqarmasdan, faqat faylga yozadi:</p>
  <p id="Xhku"><code>$ ls &gt; file</code></p>
  <p id="A2hp">Quyidagi buyruq esa (<code>tee</code> yordamida) natijani ham ekranga (stdout), ham faylga yozadi:</p>
  <p id="UhxZ"><code>$ ls | tee file</code></p>
  <hr />
  <h3 id="Li49">13.2-bo&#x27;lim: Konveyer (pipe) zanjiri o&#x27;rtasidagi natijani faylga yozish va uni qaytadan zanjirga uzatish</h3>
  <p id="uhvY">Siz <code>tee</code> buyrug&#x27;idan biror buyruq natijasini faylda saqlash va shu bilan birga ushbu natijani boshqa bir buyruqqa yo&#x27;naltirish uchun foydalanishingiz mumkin.</p>
  <p id="XuWg">Quyidagi buyruq joriy <code>crontab</code> yozuvlarini <code>crontab-backup.txt</code> fayliga yozadi va ayni vaqtda ushbu yozuvlarni <code>sed</code> buyrug&#x27;iga o&#x27;tkazadi. <code>sed</code> buyrug&#x27;i matn almashtirishni amalga oshirgandan so&#x27;ng, natija yangi <code>cron</code> vazifasi sifatida qo&#x27;shiladi:</p>
  <p id="MUd1"><code>$ crontab -l | tee crontab-backup.txt | sed &#x27;s/old/new/&#x27; | crontab –</code></p>
  <hr />
  <h3 id="fpQg">13.3-bo&#x27;lim: Natijani bir nechta fayllarga yozish</h3>
  <p id="TQz5">Siz o&#x27;z natijangizni <code>tee</code> yordamida bir vaqtning o&#x27;zida bir nechta fayllarga (jumladan terminalingizga ham) yo&#x27;naltirishingiz mumkin:</p>
  <p id="ULut"><code>$ ls | tee file1 file2 file3</code></p>
  <hr />
  <h3 id="bm1E">13.4-bo&#x27;lim: tee buyrug&#x27;iga ma&#x27;lumotni fayl oxiridan qo&#x27;shishni yuklash</h3>
  <p id="qhdz">Standart holatda <code>tee</code> buyrug&#x27;i fayl ichidagi ma&#x27;lumotlarni o&#x27;chirib, ustidan yozib yuboradi. Siz <code>tee</code> buyrug&#x27;iga ma&#x27;lumotni faylning mavjud mazmuni oxiriga qo&#x27;shib yozishni (append) quyidagi <code>-a</code> opsiyasi orqali buyurishingiz mumkin:</p>
  <p id="5CmG"><code>$ ls | tee -a file</code></p>
  <p id="owpM"></p>
  <p id="026m">Mana 14-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="yg8f">14-bob: Secure Shell (SSH)</h1>
  <p id="Rafb"><strong>SSH</strong> (Secure Shell) — shifrlangan aloqa kanali orqali mijozdan turib serverga masofadan kirish uchun ishlatiladi. <strong>OpenSSH</strong> masofaviy qobiqqa kirishni ta&#x27;minlovchi, ammo ma&#x27;lumotlarni shifrlamaydigan <strong>Telnet</strong> ulanishlariga muqobil (xavfsiz) variant sifatida ishlatiladi. OpenSSH mijoz dasturi aksariyat GNU/Linux distributivlarida standart bo&#x27;lib o&#x27;rnatilgan. Ushbu misollar SSH ulanishlarini qabul qilish va boshqa xostga ulanish uchun SSH utilitalaridan qanday foydalanishni ko&#x27;rsatadi.</p>
  <hr />
  <h3 id="7aBV">14.1-bo&#x27;lim: Masofaviy serverga ulanish</h3>
  <p id="SglK">Serverga ulanish uchun mijoz kompyuterida SSH buyrug&#x27;idan quyidagicha foydalanish kerak:</p>
  <p id="TLii"><code>ssh -p port user@server-address</code></p>
  <ul id="Yv1l">
    <li id="3sUw"><strong>port</strong> — serverning SSH xizmati tinglayotgan porti (standart port 22).</li>
    <li id="rFXG"><strong>user</strong> — serverda SSH huquqiga ega bo&#x27;lgan mavjud foydalanuvchi.</li>
    <li id="qXnY"><strong>server address</strong> — serverning IP manzili yoki domen nomi.</li>
  </ul>
  <p id="HShg"><strong>Hayotiy misol:</strong> Tasavvur qiling, siz veb-sayt yaratyapsiz. Hosting kompaniyasi server manzili <code>web-servers.com</code>, porti <code>2020</code> va foydalanuvchi nomi <code>usr1</code> ekanligini aytdi. Bunday holda buyruq quyidagicha bo&#x27;ladi:</p>
  <p id="xVh1"><code>ssh -p 2020 usr1@web-servers.com</code></p>
  <p id="LRLT">Agar masofaviy tizimdagi foydalanuvchi nomi mahalliy kompyuteringizdagi bilan bir xil bo&#x27;lsa, foydalanuvchi nomini yozmasangiz ham bo&#x27;ladi. Masalan, ikkala tizimda ham <code>usr1</code> bo&#x27;lsangiz, shunchaki <code>web-servers.com</code> deb yozish kifoya.</p>
  <p id="cFaw"><strong>ProxyJump orqali ulanish:</strong></p>
  <p id="isZU">Agar siz ulanmoqchi bo&#x27;lgan serverga to&#x27;g&#x27;ridan-to&#x27;g&#x27;ri kirish imkoni bo&#x27;lmasa, oraliq server (sakrash serveri) orqali ulanish uchun <code>-J</code> kalitidan foydalanishingiz mumkin:</p>
  <p id="aHCJ"><code>ssh -J usr1@10.0.0.1:2020 usr2@10.0.0.2 -p 2222</code></p>
  <p id="EWZ6">Bu buyruq sizni <code>10.0.0.1</code> (2020-port) serveri orqali <code>10.0.0.2</code> (2222-port) serveriga ulaydi. Albatta, har ikkala serverda ham akkauntingiz bo&#x27;lishi kerak. Eslatma: <code>-J</code> kaliti OpenSSH 7.3 versiyasidan boshlab qo&#x27;shilgan.</p>
  <hr />
  <h3 id="LrJy">14.2-bo&#x27;lim: OpenSSH paketlar to&#x27;plamini o&#x27;rnatish</h3>
  <p id="jx7a">Masofaviy SSH serverga ulanish va SSH ulanishlarni qabul qilish uchun <code>openssh</code> o&#x27;rnatilgan bo&#x27;lishi kerak:</p>
  <ul id="oXLk">
    <li id="hVhJ"><strong>Debian/Ubuntu:</strong> <code>sudo apt-get install openssh-server openssh-client</code></li>
    <li id="F1Lv"><strong>Arch Linux:</strong> <code>sudo pacman -S openssh</code></li>
    <li id="3v7c"><strong>CentOS/RHEL (Yum):</strong> <code>sudo yum install openssh</code></li>
  </ul>
  <hr />
  <h3 id="qILq">14.3-bo&#x27;lim: SSH serverni ulanishlarni qabul qilish uchun sozlash</h3>
  <p id="TFlz">Dastlab, SSH demonining (sshd) konfiguratsiya faylini tahrirlashimiz kerak. Odatda u <code>/etc/ssh/sshd_config</code> manzilida joylashgan bo&#x27;ladi.</p>
  <p id="HU44">Matn muharriri yordamida quyidagi qiymatlarni o&#x27;zgartiring (izohdagi <code>#</code> belgisini olib tashlang):</p>
  <ul id="9avj">
    <li id="xpD9"><strong>Port</strong> (0 dan 65535 gacha bo&#x27;lgan sonni tanlang, odatda 4 xonali son tavsiya etiladi).</li>
    <li id="Yded"><strong>PasswordAuthentication yes</strong> (parol orqali kirishga ruxsat berish).</li>
    <li id="JxQi"><strong>AllowUsers user1 user2</strong> (faqat belgilangan foydalanuvchilarga ruxsat berish).</li>
  </ul>
  <p id="Rvzy"><em>Eslatma: Xavfsizlikni oshirish uchun parolli kirishni butunlay o&#x27;chirib, SSH kalitlaridan foydalanish afzalroqdir.</em></p>
  <hr />
  <h3 id="BJcP">14.4-bo&#x27;lim: Parolsiz ulanish (kalitlar juftligi yordamida)</h3>
  <p id="6I9u">Buning uchun sizda kalitlar juftligi bo&#x27;lishi kerak: <strong>maxfiy kalit</strong> (<code>id_rsa</code>) va <strong>ochiq kalit</strong> (<code>id_rsa.pub</code>). Ochiq kalitni masofaviy serverdagi <code>~/.ssh/authorized_keys</code> fayliga nusxalashingiz kerak.</p>
  <p id="rnMZ">Buning oson usuli:</p>
  <p id="Ky5A"><code>ssh &lt;user&gt;@&lt;ssh-server&gt; &#x27;cat &gt;&gt; ~/.ssh/authorized_keys&#x27; &lt; id_rsa.pub</code></p>
  <p id="pVJX">Ochiq kalit serverga to&#x27;g&#x27;ri joylashtirilgach, shunchaki maxfiy kalit bilan tizimga kirishingiz mumkin:</p>
  <p id="JI1L"><code>ssh &lt;user&gt;@&lt;ssh-server&gt; -i id_rsa</code></p>
  <hr />
  <h3 id="qkeC">14.5-bo&#x27;lim: Ochiq va maxfiy kalitlarni yaratish</h3>
  <p id="RISX">SSH mijoz uchun kalitlar yaratish buyrug&#x27;i:</p>
  <p id="qslH"><code>ssh-keygen -t rsa -b 4096 -C &quot;email@manzil.com&quot;</code></p>
  <ul id="iesE">
    <li id="2Tst"><strong>-t rsa</strong> — kalit turini belgilaydi.</li>
    <li id="KiqB"><strong>-b 4096</strong> — bitlar sonini (xavfsizlik darajasini) belgilaydi.</li>
    <li id="BMBW"><strong>-C</strong> — izoh (odatda elektron pochta manzili).</li>
  </ul>
  <p id="cokd">Standart saqlash joyi: maxfiy kalit uchun <code>~/.ssh/id_rsa</code>, ochiq kalit uchun <code>~/.ssh/id_rsa.pub</code>.</p>
  <hr />
  <h3 id="U4RY">14.6-bo&#x27;lim: SSH xizmatini o&#x27;chirish</h3>
  <p id="d4pd">Agar zarur bo&#x27;lsa, server qismini o&#x27;chirib qo&#x27;yish orqali mijozlar ulanishining oldini olish mumkin:</p>
  <ul id="vdo2">
    <li id="CoWt"><strong>Ubuntu:</strong><code>sudo service ssh stopsudo systemctl disable sshd.service</code></li>
    <li id="MjFl"><strong>Debian:</strong><code>sudo /etc/init.d/ssh stopsudo systemctl disable sshd.service</code></li>
    <li id="Fel9"><strong>Arch Linux:</strong><code>sudo killall sshdsudo systemctl disable sshd.service</code></li>
  </ul>
  <hr />
  <p id="YYEH">Mana 15-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="16X4">15-bob: SCP (Secure Copy)</h1>
  <h3 id="e6YW">15.1-bo&#x27;lim: Secure Copy (Xavfsiz nusxalash)</h3>
  <p id="GgLe"><strong>scp</strong> buyrug&#x27;i fayllarni masofaviy manzillarga yoki masofaviy manzillardan xavfsiz tarzda nusxalash uchun ishlatiladi. Agar fayl joriy ishchi katalogda (CWD) bo&#x27;lsa, faqat fayl nomining o&#x27;zi kifoya, aks holda masofaviy xost nomini o&#x27;z ichiga olgan to&#x27;liq yo&#x27;l (path) talab qilinadi. Masalan:</p>
  <p id="1rwG"><code>remote_user@some_server.org:/path/to/file</code></p>
  <p id="AbX7"><strong>Joriy katalogdagi mahalliy faylni yangi katalogga nusxalash:</strong></p>
  <p id="C4nX"><code>scp localfile.txt /home/friend/share/</code></p>
  <p id="DGdZ"><strong>Masofaviy faylni o&#x27;zingizning joriy ishchi katalogingizga nusxalash:</strong></p>
  <p id="ajE6"><code>scp rocky@arena51.net:/home/rocky/game/data.txt ./</code></p>
  <p id="w4l8"><strong>Faylni bir masofaviy manzildan boshqa bir masofaviy manzilga nusxalash:</strong></p>
  <p id="OfPr"><code>scp mars@universe.org:/beacon/light/bitmap.conf jupiter@universe.org:/beacon/night/</code></p>
  <p id="FfQ8"><strong>Katalogni va barcha quyi kataloglarni nusxalash uchun scp buyrug&#x27;iga <code>-r</code> (rekursiv) opsiyasini qo&#x27;shing:</strong></p>
  <p id="WjBV"><code>scp -r user@192.168.0.4:~/project/* ./workspace/</code></p>
  <hr />
  <h3 id="cKdE">15.2-bo&#x27;lim: Asosiy foydalanish (Basic Usage)</h3>
  <p id="M8uz"><strong>Masofaviy faylni mahalliy katalogga nusxalash:</strong></p>
  <p id="ciJG"><code>scp user@remotehost.com:/remote/path/to/foobar.md /local/dest</code></p>
  <p id="ipqd"><strong>Mahalliy faylni masofaviy katalogga nusxalash:</strong></p>
  <p id="V31b"><code>scp foobar.md user@remotehost.com:/remote/dest</code></p>
  <p id="IwGE"><strong>Kalit fayllardan (PEM) foydalanish (xuddi ssh kabi):</strong></p>
  <p id="8sj0">SSH kalitlari yordamida autentifikatsiya qilish uchun <code>-i</code> bayrog&#x27;idan foydalanishingiz mumkin:</p>
  <p id="LDAC"><code>scp -i my_key.pem foobar.md user@remotehost.com:/remote/dest</code></p>
  <hr />
  <p id="AI1S">Mana 16 va 17-boblarning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="IbKJ">16-bob: GnuPG (GPG)</h1>
  <p id="i3rT"><strong>GnuPG</strong> — ma&#x27;lumotlarni xavfsiz imzolash yoki shifrlash imkonini beruvchi murakkab kalitlarni boshqarish tizimidir. <strong>GPG</strong> — GnuPG kalitlarini yaratish va ulardan foydalanish uchun ishlatiladigan buyruqlar satri vositasi.</p>
  <p id="bETz">GnuPG ko&#x27;pincha SSH ulanishlarini parolsiz va interaktiv autentifikatsiyasiz amalga oshirishda qo&#x27;llaniladi, bu esa xavfsizlik darajasini sezilarli darajada oshiradi.</p>
  <h3 id="sLjh">16.1-bo&#x27;lim: Ochiq kalitni eksport qilish</h3>
  <p id="6Ud6">Ochiq va maxfiy kalitlar juftligidan foydalanish uchun siz ochiq kalitingizni (public key) boshqalar uchun ochiq qilishingiz kerak. <strong>Diqqat:</strong> Hech qachon maxfiy kalitingizni (private key) boshqalar bilan baham ko&#x27;rmang. Ochiq kalitni quyidagi buyruq bilan eksport qilish mumkin:</p>
  <p id="E8GG"><code>gpg --armor --export POCHTA_MANZILI &gt; public_key.asc</code></p>
  <p id="LyBW">Shuningdek, kalitni <code>keys.gnupg.net</code> kabi ochiq kalit serverlariga yuklash mumkin:</p>
  <ol id="YdTC">
    <li id="zjr9">Kalitlar ro&#x27;yxatini ko&#x27;ring: <code>gpg --list-keys</code></li>
    <li id="Mk4D">Kalitning 8 xonali ID raqamini (Primary ID) toping.</li>
    <li id="ZMcS">Serverga yuboring: <code>gpg --send-keys PRIMARY_ID</code></li>
  </ol>
  <h3 id="tKrf">16.2-bo&#x27;lim: GnuPG kalitini tezkor yaratish</h3>
  <p id="hE5Z">Tasodifiy baytlar generatsiyasini tezlashtirish uchun <code>haveged</code> dasturini o&#x27;rnating, so&#x27;ngra:</p>
  <p id="kfPU"><code>gpg --gen-key</code> — kalit yaratish.</p>
  <p id="ipSq"><code>gpg --keyserver pgp.mit.edu --send-keys NNNNNNNN</code> — kalitni nashr qilish.</p>
  <hr />
  <h1 id="T06h">17-bob: Tarmoq konfiguratsiyasi (Network Configuration)</h1>
  <p id="17o8">Linux bir nechta tarmoq qurilmalarini qo&#x27;llab-quvvatlaydi. Qurilma nomlari noldan boshlab raqamlanadi (masalan, <code>eth0</code>, <code>eth1</code>).</p>
  <h3 id="IKcf">17.1-bo&#x27;lim: Mahalliy DNS ruxsati (Local DNS resolution)</h3>
  <p id="El0J"><code>/etc/hosts</code> fayli DNS serverga murojaat qilmasdan, mahalliy darajada aniqlanadigan xostlar ro&#x27;yxatini saqlaydi.</p>
  <p id="S35S">Fayl formati <strong>RFC 952</strong> standarti bilan belgilanadi.</p>
  <h3 id="fiiZ">17.2-bo&#x27;lim: Domen nomlarini aniqlash uchun DNS serverlarini sozlash</h3>
  <p id="nThK"><code>/etc/resolv.conf</code> fayli domen nomlarini IP manzilga aylantirish uchun ishlatiladigan DNS serverlar ro&#x27;yxatini saqlaydi.</p>
  <p id="bmy9"><strong>Namuna:</strong></p>
  <p id="6VHW"><code>nameserver 8.8.8.8</code> — asosiy DNS server.</p>
  <p id="OGoj"><code>nameserver 8.8.4.4</code> — yordamchi DNS server.</p>
  <h3 id="6ecM">17.3-bo&#x27;lim: Yo&#x27;nalishlarni (routes) ko&#x27;rish va boshqarish</h3>
  <p id="5MzN"><strong><code>route</code> buyrug&#x27;i yordamida:</strong></p>
  <ul id="T3ZC">
    <li id="NjJE"><code>route -n</code> — yo&#x27;nalishlar jadvalini tezkor ko&#x27;rish.</li>
    <li id="rDCL"><code>route add default gw 2.2.2.1 eth0</code> — standart shlyuzni (gateway) qo&#x27;shish.</li>
  </ul>
  <p id="nXNL"><strong><code>ip</code> buyrug&#x27;i yordamida:</strong></p>
  <ul id="bajg">
    <li id="IizO"><code>ip route show</code> — yo&#x27;nalishlar jadvalini ko&#x27;rsatish.</li>
    <li id="4zwD"><code>ip route add default via 1.2.3.254</code> — standart shlyuzni sozlash.</li>
  </ul>
  <h3 id="5Zqu">17.4-bo&#x27;lim: Tarmoqdagi boshqa tizim uchun xost nomini sozlash</h3>
  <p id="6DBZ">Tarmoqdagi biror IP manzilga (masalan, <code>192.168.1.44</code>) qisqa nom (masalan, <code>remote_pc</code>) biriktirish uchun <code>/etc/hosts</code> fayliga quyidagi qatorni qo&#x27;shing:</p>
  <p id="jp2H"><code>192.168.1.44 remote_pc</code></p>
  <p id="gOmq">Endi siz ushbu kompyuterga <code>ping remote_pc</code> buyrug&#x27;i orqali murojaat qilishingiz mumkin.</p>
  <h3 id="1SMP">17.5-bo&#x27;lim: Interfeys tafsilotlari</h3>
  <ul id="Dib3">
    <li id="Npqv"><strong><code>ifconfig -a</code></strong>: Barcha mavjud interfeyslarni ko&#x27;rish.</li>
    <li id="sWFU"><strong><code>ethtool eth0</code></strong>: Tarmoq drayveri va apparat sozlamalarini (tezlik, dupleks va h.k.) tekshirish.</li>
    <li id="QQQP"><strong><code>ip link show</code></strong>: Tarmoq interfeyslari holatini ko&#x27;rish.</li>
    <li id="Nsir"><strong><code>ip addr show</code></strong>: Interfeyslarga biriktirilgan IP manzillarni ko&#x27;rish.</li>
  </ul>
  <h3 id="BOwj">17.6-bo&#x27;lim: Interfeysga IP manzil qo&#x27;shish</h3>
  <p id="tlEk"><strong>1. DHCP orqali (Avtomatik):</strong></p>
  <p id="N5ZZ"><code>sudo dhclient eth0</code></p>
  <p id="HOz1"><strong>2. Statik (Doimiy) — <code>/etc/network/interfaces</code> fayli orqali:</strong></p>
  <p id="B0VC">Plaintext</p>
  <pre id="lYPR">auto eth0
iface eth0 inet static
    address 10.10.70.10
    netmask 255.255.0.0
    gateway 10.10.1.1
</pre>
  <p id="1q28"><strong>3. Statik (Vaqtincha) — <code>ifconfig</code> orqali:</strong></p>
  <p id="qoCb"><code>sudo ifconfig eth0 10.10.50.100/16 up</code></p>
  <hr />
  <p id="bGAR">Mana 18-bobning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="B9xp">18-bob: Midnight Commander (mc)</h1>
  <p id="DqTa"><strong>Midnight Commander</strong> yoki qisqacha <strong>mc</strong> — bu konsol (terminal) asosidagi fayl menejeridir. Ushbu mavzu uning funksional imkoniyatlari tavsifi, misollar va undan to&#x27;liq salohiyat bilan foydalanish bo&#x27;yicha maslahatlarni o&#x27;z ichiga oladi.</p>
  <h3 id="BTby">18.1-bo&#x27;lim: Fayllarni ko&#x27;rish (browsing) rejimidagi funksional tugmalar</h3>
  <p id="0JOY">Quyida Midnight Commander-ning fayllarni ko&#x27;rish rejimida klaviaturadagi funksional tugmalar orqali bajariladigan amallar ro&#x27;yxati keltirilgan:</p>
  <ul id="3Gvc">
    <li id="k1rS"><strong>F1</strong>: Yordam oynasini ochish.</li>
    <li id="doZQ"><strong>F2</strong>: Foydalanuvchi menyusini ochish.</li>
    <li id="uHXj"><strong>F3</strong>: Tanlangan fayl mazmunini ko&#x27;rish.</li>
    <li id="RFrd"><strong>F4</strong>: Tanlangan faylni ichki tahrirlagichda (editor) ochish.</li>
    <li id="sgkK"><strong>F5</strong>: Tanlangan faylni ikkinchi paneldagi ochiq katalogga nusxalash (Copy).</li>
    <li id="Lu0e"><strong>F6</strong>: Tanlangan faylni ikkinchi paneldagi ochiq katalogga ko&#x27;chirish (Move).</li>
    <li id="HAH9"><strong>F7</strong>: Joriy paneldagi katalog ichida yangi papka (directory) yaratish.</li>
    <li id="j1dQ"><strong>F8</strong>: Tanlangan fayl yoki katalogni o&#x27;chirish (Delete).</li>
    <li id="nItw"><strong>F9</strong>: Ekranning yuqori qismidagi asosiy menyuga fokusni o&#x27;tkazish.</li>
    <li id="eiqM"><strong>F10</strong>: Midnight Commander dasturidan chiqish.</li>
  </ul>
  <hr />
  <h3 id="xWi8">18.2-bo&#x27;lim: Faylni tahrirlash (editing) rejimidagi funksional tugmalar</h3>
  <p id="1sLL">Midnight Commander-da o&#x27;rnatilgan tahrirlagich mavjud bo&#x27;lib, u ko&#x27;rish rejimida fayl ustida turganda <strong>F4</strong> tugmasini bosish orqali ishga tushadi. Shuningdek, uni alohida rejimda quyidagi buyruq bilan ham chaqirish mumkin:</p>
  <p id="ySef"><code>mcedit &lt;fayl_nomi&gt;</code></p>
  <p id="cOEx">Tahrirlash rejimida ishlaydigan amallar ro&#x27;yxati:</p>
  <ul id="DGvh">
    <li id="3LW2"><strong>F1</strong>: Yordam oynasini ochish.</li>
    <li id="G46H"><strong>F2</strong>: Joriy faylni saqlash.</li>
    <li id="qoYU"><strong>F3</strong>: Matnni belgilash boshlanishini qayd etish. Belgilash uchun kursorni istalgan yo&#x27;nalishda harakatlantiring. Ikkinchi marta bosish belgilash yakunini qayd etadi.</li>
    <li id="7bQX"><strong>F4</strong>: Matnni qidirish va almashtirish (search/replace) muloqot oynasini ochish.</li>
    <li id="e9Z4"><strong>F5</strong>: Tanlangan matnni kursor turgan joyga nusxalash (copy/paste).</li>
    <li id="usGr"><strong>F6</strong>: Tanlangan matnni kursor turgan joyga ko&#x27;chirish (cut/paste).</li>
    <li id="0ZbS"><strong>F7</strong>: Matnni qidirish muloqot oynasini ochish.</li>
    <li id="Ftdt"><strong>F8</strong>: Tanlangan matnni o&#x27;chirish.</li>
    <li id="Fqas"><strong>F9</strong>: Ekranning yuqori qismidagi asosiy menyuga fokusni o&#x27;tkazish.</li>
    <li id="SYjU"><strong>F10</strong>: Tahrirlagichdan chiqish.</li>
  </ul>
  <p id="FKo3">Mana 19 va 20-boblarning 100% to&#x27;liq va akademik tartibdagi o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="lgVn">19-bob: Ildiz katalogni o&#x27;zgartirish (chroot)</h1>
  <p id="N6yQ"><strong>Change root (chroot)</strong> — bu joriy ishlayotgan jarayon va uning barcha quyi (child) jarayonlari uchun ko&#x27;rinadigan ildiz katalogni (<code>/</code>) o&#x27;zgartirish operatsiyasidir. Bunday o&#x27;zgartirilgan muhitda ishga tushirilgan dastur ushbu katalog daraxtidan tashqaridagi fayllar va buyruqlarga kira olmaydi.</p>
  <h3 id="u0Zk">19.1-bo&#x27;lim: Talablar (Requirements)</h3>
  <ul id="X5ga">
    <li id="uXth"><strong>Root imtiyozlari</strong> (administrator huquqi).</li>
    <li id="vKiW"><strong>Boshqa ishchi Linux muhiti</strong> (masalan, Live CD yuklanishi yoki mavjud boshqa distributiv).</li>
    <li id="SbA8"><strong>Arxitektura mosligi</strong>: chroot manbasi va boriladigan joyning arxitekturasi mos kelishi kerak (buni <code>uname -m</code> buyrug&#x27;i bilan tekshiring).</li>
    <li id="V1xq"><strong>Yadro modullari</strong>: chroot muhitida kerak bo&#x27;lishi mumkin bo&#x27;lgan yadro modullari yuklangan bo&#x27;lishi shart (masalan, <code>modprobe</code> yordamida).</li>
  </ul>
  <h3 id="KogH">19.2-bo&#x27;lim: Katalog ichida ildizni qo&#x27;lda o&#x27;zgartirish</h3>
  <ol id="MqL7">
    <li id="kHVH">Barcha talablar bajarilganiga ishonch hosil qiling.</li>
    <li id="JM2h"><strong>Vaqtinchalik API fayl tizimlarini ulang (mount):</strong>Bash<code>cd /yangi/ildiz/joylashuvi mount -t proc proc proc/ mount --rbind /sys sys/ mount --rbind /dev dev/ mount --rbind /run run/ # (ixtiyoriy) </code></li>
    <li id="5Zfc"><strong>Internet ulanishi kerak bo&#x27;lsa, DNS ma&#x27;lumotlarini nusxalang:</strong><code>cp /etc/resolv.conf etc/resolv.conf</code></li>
    <li id="nF4Q"><strong>Ildizni o&#x27;zgartiring (chroot):</strong><code>chroot /yangi/ildiz/joylashuvi /bin/bash</code></li>
    <li id="oS4J"><strong>Mahalliy bash konfiguratsiyasini yuklang:</strong><code>source /etc/profile</code> va <code>source ~/.bashrc</code></li>
    <li id="lQBM"><strong>Muhitni farqlash uchun maxsus buyruq satri (prompt) yarating:</strong><code>export PS1=&quot;(chroot) $PS1&quot;</code></li>
    <li id="pTIR"><strong>Ish yakunlangach, chiqish:</strong><code>exit</code></li>
    <li id="BuG9"><strong>Fayl tizimlarini uzing (unmount):</strong><code>cd /</code> va <code>umount --recursive /yangi/ildiz/joylashuvi</code></li>
  </ol>
  <h3 id="PPsH">19.3-bo&#x27;lim: chroot-dan foydalanish sabablari</h3>
  <p id="LHIg">Chroot odatda tizimga yuklanish yoki kirish imkoni bo&#x27;lmagan holatlarda texnik xizmat ko&#x27;rsatish uchun ishlatiladi.</p>
  <p id="IZSJ"><strong>Asosiy misollar:</strong></p>
  <ul id="1BU9">
    <li id="AbCw">Yuklovchini (bootloader - masalan, GRUB) qayta o&#x27;rnatish.</li>
    <li id="PJiK"><strong>initramfs</strong> obrazini qayta qurish.</li>
    <li id="JJmG">Paketlarni yangilash yoki eski versiyaga qaytarish (upgrade/downgrade).</li>
    <li id="UEjY">Unutilgan parolni tiklash.</li>
    <li id="Ojbn">Dasturiy ta&#x27;minotni toza muhitda yaratish (build).</li>
  </ul>
  <hr />
  <h1 id="jeyT">20-bob: Paket menejerlari (Package Managers)</h1>
  <h3 id="Ihlt">20.1-bo&#x27;lim: apt yordamida paketlarni yangilash</h3>
  <p id="4vOt"><strong>Advanced Package Tool (apt)</strong> — Debian, Ubuntu va shunga o&#x27;xshash distributivlarda dasturlarni o&#x27;rnatish va o&#x27;chirishni boshqaradi.</p>
  <ul id="WPt5">
    <li id="wdvv"><strong>update</strong>: Paketlar haqidagi yangi ma&#x27;lumotlarni (<code>Packages.gz</code>) yuklaydi.<code>sudo apt-get update</code></li>
    <li id="SLtx"><strong>upgrade</strong>: Tizimdagi barcha o&#x27;rnatilgan paketlarning eng yangi versiyalarini o&#x27;rnatadi.<code>sudo apt-get upgrade</code></li>
    <li id="BuCe"><strong>dist-upgrade</strong>: <code>upgrade</code> funksiyasidan tashqari, paketlarning yangi versiyalari bilan bog&#x27;liq qaramliklar (dependencies) o&#x27;zgarishini aqlli boshqaradi.<code>sudo apt-get dist-upgrade</code></li>
  </ul>
  <h3 id="G2Pg">20.2-bo&#x27;lim: pacman yordamida paket o&#x27;rnatish</h3>
  <p id="6zIE"><strong>Pacman</strong> — Arch Linux va uning hosilalarida ishlatiladi.</p>
  <ul id="fAFc">
    <li id="8bHK"><strong>Qidiruv</strong>: <code>pacman -Ss qidirilayotgan_soz</code></li>
    <li id="fSZ3"><strong>O&#x27;rnatish</strong>: <code>sudo pacman -S paket_nomi</code></li>
  </ul>
  <h3 id="Na8x">20.3-bo&#x27;lim: pacman yordamida paketlarni yangilash</h3>
  <ul id="P5R6">
    <li id="yl2P">Muayyan dasturni yangilash: <code>sudo pacman -S dastur_nomi</code></li>
    <li id="nXK0">Butun tizimni yangilash: <code>sudo pacman -Syu</code></li>
  </ul>
  <h3 id="asn3">20.4-bo&#x27;lim: yum yordamida paketlarni yangilash</h3>
  <p id="iy0b"><strong>Yum</strong> (Yellowdog Updater, Modified) — Red Hat, Fedora va CentOS tizimlarida qo&#x27;llaniladi.</p>
  <ul id="pPrP">
    <li id="p5NS"><strong>search</strong>: Kerakli dasturni repozitoriyalardan qidiradi.<code>yum search qidiruv_sozi</code></li>
    <li id="clCf"><strong>install</strong>: Dasturni va uning barcha kerakli qaramliklarini avtomatik topib o&#x27;rnatadi.<code>sudo yum install paket_nomi</code></li>
    <li id="tLD3"><strong>update</strong>: O&#x27;rnatilgan paketlarni eng so&#x27;nggi versiyaga yangilaydi.<code>sudo yum update</code></li>
  </ul>
  <p id="SRR4"><code>apt</code>-dan farqli o&#x27;laroq, <code>yum</code> buyruqlari har qanday operatsiyadan oldin repozitoriya metama&#x27;lumotlarini avtomatik tekshiradi.</p>
  <hr />
  <p id="2lV0">Mana ushbu kitobning so&#x27;nggi bobi va mualliflar ro&#x27;yxatining 100% to&#x27;liq o&#x27;zbekcha tarjimasi:</p>
  <hr />
  <h1 id="DvU2">21-bob: Linux yadrosini (kernel) kompilyatsiya qilish</h1>
  <h3 id="EEMx">21.1-bo&#x27;lim: Ubuntu tizimida Linux yadrosini kompilyatsiya qilish</h3>
  <p id="QpKP"><strong>Ogohlantirish:</strong> Diskingizda kamida 15 GB bo&#x27;sh joy borligiga ishonch hosil qiling.</p>
  <p id="r8aJ">Ubuntu &gt;= 13.04 versiyalarida kompilyatsiya qilish:</p>
  <h4 id="Jick">A varianti) Git-dan foydalanish</h4>
  <p id="0MGn">Agar siz doimiy ravishda Ubuntu yadrosining so&#x27;nggi manbalari bilan sinxron bo&#x27;lishni xohlasangiz, Git-dan foydalaning. Batafsil ko&#x27;rsatmalarni &quot;Kernel Git Guide&quot; qo&#x27;llanmasidan topishingiz mumkin. Git repozitoriyasi kerakli boshqaruv fayllarini o&#x27;z ichiga olmaydi, shuning uchun ularni quyidagi buyruq bilan yaratishingiz kerak:</p>
  <p id="uTgO"><code>fakeroot debian/rules clean</code></p>
  <h4 id="a7JU">B varianti) Manba arxivi (source archive) yuklab olish</h4>
  <p id="K8W8">Bu variant standart Ubuntu paketlarini qo&#x27;shimcha tuzatishlar (patches) bilan qayta qurmoqchi bo&#x27;lgan foydalanuvchilar uchun. Quyidagi buyruq yordamida qurish qaramliklarini (dependencies) o&#x27;rnating va manbani joriy katalogga chiqaring:</p>
  <ol id="mCbM">
    <li id="mq4l">Quyidagi paketlarni o&#x27;rnating:<code>sudo apt-get build-dep linux-image-</code>uname -r&#x60;&#x60;</li>
  </ol>
  <h4 id="SjYd">C varianti) Manba paketini yuklab olish va qurish</h4>
  <p id="yJEl">Bu variant Ubuntu tomonidan tahrirlangan yadro manbasini o&#x27;zgartirish yoki u bilan tajriba o&#x27;tkazishni xohlovchilar uchun.</p>
  <ol id="g8a3">
    <li id="2Qwd">Eng so&#x27;nggi yadro manbasini <code>kernel.org</code> saytidan yuklab oling.</li>
    <li id="Vvx9">Arxivni katalogga chiqaring va uning ichiga kiring:Bash<code>tar xf linux-*.tar.xz cd linux-* </code></li>
    <li id="4qSZ"><strong>ncurses</strong> konfiguratsiya interfeysini quring:<code>make menuconfig</code></li>
    <li id="zJsg">Standart konfiguratsiyani qabul qilish uchun yo&#x27;nalish tugmalari yordamida <code>&lt; Exit &gt;</code> yozuvini belgilang va <strong>Enter</strong> ni bosing.</li>
    <li id="ukvN">Konfiguratsiyani saqlash uchun yana bir bor <strong>Enter</strong> ni bosing.</li>
    <li id="FQy8">Yadroni qurish uchun <code>make</code> buyrug&#x27;idan foydalaning:<code>make</code><em>Eslatma: Bir nechta protsessor yadrolaridan foydalanish va fayllarni parallel kompilyatsiya qilish uchun <code>-j</code> bayrog&#x27;idan (masalan, <code>make -j4</code>) foydalanishingiz mumkin.</em></li>
  </ol>
  <p id="3vja">Siqilgan yadro obrazi (compressed kernel image) quyidagi manzilda joylashgan bo&#x27;ladi: <code>arch/[arxitektura]/boot/bzImage</code>. Bu yerda <code>[arxitektura]</code> sizning tizimingiz turiga (masalan, x86) teng.</p>
  <hr />
  <h1 id="sDLU">Minnatdorchilik (Credits)</h1>
  <p id="twDY">Ushbu kontentni taqdim etishda yordam bergan <strong>Stack Overflow Documentation</strong> hamjamiyatining barcha a&#x27;zolariga o&#x27;z minnatdorchiligimizni bildiramiz. Yangi kontent yoki o&#x27;zgarishlar bo&#x27;yicha takliflarni <code>web@petercv.com</code> manziliga yuborishingiz mumkin.</p>
  <p id="MKSE"><strong>Mualliflar va hissa qo&#x27;shganlar (ba&#x27;zilari):</strong></p>
  <ul id="SXfI">
    <li id="oHtF"><strong>Léo Léopold Hertz 준영</strong> — 21-bob</li>
    <li id="Lvyl"><strong>Nathan Osman</strong> — 21-bob</li>
    <li id="gLyU"><strong>BrightOne</strong> — 9, 13, 14 va 19-boblar</li>
    <li id="N6rd"><strong>Philip Kirkbride</strong> — 4, 7, 12 va 20-boblar</li>
    <li id="7FNP"><strong>Sava</strong> — 1, 4, 14 va 18-boblar</li>
    <li id="bxe7"><strong>Y4Rv1K</strong> — 6 va 17-boblar</li>
    <li id="wW1A"><em>(Va ro&#x27;yxatda keltirilgan o&#x27;nlab boshqa ko&#x27;ngillilar)</em></li>
  </ul>
  <hr />
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="HqDT" data-align="center"><strong>Tabriklayman! Biz Linux bo&#x27;yicha professional qaydlar kitobining barcha asosiy qismlarini tarjima qilib tugatdik. <br /><br />Kitob Ingiliz tilidan tarjima qilindi: <br />Asl kitob bu havola orqali yuklab olishingiz mumkin:</strong>  <br />https://goalkicker.com/LinuxBook/</p>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@snrg_py/5aqOCoe0dTD</guid><link>https://teletype.in/@snrg_py/5aqOCoe0dTD?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/5aqOCoe0dTD?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>Arduino Amaliy:                                          (tosh qog'oz qaychi )</title><pubDate>Thu, 25 Dec 2025 21:17:41 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/bc/b5/bcb53444-9f9d-4f96-8f31-aa76281d084c.png"></media:content><description><![CDATA[<img src="https://ibles-content.tinkercad.com/F5E/KC92/LEMTZAXH/F5EKC92LEMTZAXH.jpg?width=620&amp;height=620&amp;fit=bounds"></img>Salom ijodkorlar! Ushbu ko'rsatmalarda men sizga tosh qog'oz qaychi o'yinini qanday qilganimni ko'rsataman, Ha siz buni to'g'ri eshitdingiz!]]></description><content:encoded><![CDATA[
  <figure id="AFP6" class="m_original">
    <img src="https://ibles-content.tinkercad.com/F5E/KC92/LEMTZAXH/F5EKC92LEMTZAXH.jpg?width=620&height=620&fit=bounds" width="620" />
  </figure>
  <figure id="8lSt" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FLA/0PCB/LEMTZBBM/FLA0PCBLEMTZBBM.jpg?width=620&height=620&fit=bounds" width="620" />
  </figure>
  <p id="E7p2">https://meet.google.com/jta-hitg-tfe?authuser=0<br /><br />Salom ijodkorlar! Ushbu ko&#x27;rsatmalarda men sizga tosh qog&#x27;oz qaychi o&#x27;yinini qanday qilganimni ko&#x27;rsataman, Ha siz buni to&#x27;g&#x27;ri eshitdingiz!</p>
  <p id="Xflj">Qaror qabul qilish uchun tosh qog&#x27;oz qaychi o&#x27;ynagan kunlarni eslaysizmi?</p>
  <p id="u3xd">O&#x27;sha yaxshi kunlar qanday edi, o&#x27;sha kunlar unutilmas, keksayganimiz sayin bizda bir nechta do&#x27;stlar qoladi, ba&#x27;zilari esa do&#x27;stlarsiz tugaydi.</p>
  <p id="3wmO">Bu kulgili tuyulishi mumkin, lekin u qattiq haqdir va ularning ko&#x27;plari allaqachon bu tajribali bo&#x27;lishi mumkin.</p>
  <p id="a6GX">Endi siz so&#x27;rashingiz mumkin, nega men bularning barchasini aytyapman? Javob ushbu loyihada yotadi.</p>
  <p id="4Gk4">Men introverts yoki zerikish bilan urdi, kim bir necha uchun, shuningdek, interaktiv loyiha sifatida bu qildi.</p>
  <p id="5dPW">&#x27;Bu hech qachon qaror qabul qilish, aks holda do&#x27;stlaringiz uchun ishlatiladigan xiyla kim siz uchun bir do&#x27;stim! ular tosh qog&#x27;oz qaychi o&#x27;ynaganda.</p>
  <p id="y8Ch"><strong>Ushbu loyihaning rejasi</strong></p>
  <p id="IW5D">Ushbu loyiha uchun ushbu sxema Tinkercad <strong>sxemalari yordamida, so&#x27;ngra xuddi shu dastur yordamida simulyatsiya qilingan</strong></p>
  <p id="Nta7"><strong>Simulyatsiyaning afzalliklari</strong></p>
  <p id="lNK4">Hech qanday virtual sinovsiz quradigan loyihani o&#x27;ylab ko&#x27;ring, oxirida, agar loyiha muvaffaqiyatsiz bo&#x27;lsa, jarayonda vaqtni behuda sarflashingiz mumkin.</p>
  <p id="0QiW">Ushbu dramalarni yo&#x27;q qilish uchun men simulyatorlardan foydalanishni taklif qilaman.</p>
  <p id="PR6A">Ushbu loyihada men sxemani qurish va sinab ko&#x27;rish uchun Tinkercad Circuits simulyatoridan foydalandim, keyinchalik ushbu virtual loyihani haqiqiy elektron komponentlar yordamida jismoniy loyihaga aylantirdim.</p>
  <p id="12CD">Bu vaqt va pulni tejash uchun loyihaning 100% mukammal ishlashini ta&#x27;minlaydi.</p>
  <p id="bSV9"><strong>Eslatma:</strong> rahmat WWW.LETSMAKEPROJECTS.COM arduino kodlari uchun</p>
  <p id="qMtG"><strong>Bizning loyihamiz nima qiladi?</strong></p>
  <p id="N0E0">Yuqorida aytib o&#x27;tilganidek, rok qog&#x27;oz qaychi o&#x27;yinni o&#x27;ynash uchun 2 kishiga muhtoj, bu erda siz bitta odamsiz, ikkinchisi esa ushbu qurilma.</p>
  <p id="ki3a"><strong>Rahmat NextPCB:</strong></p>
  <p id="sMOU">Ushbu loyiha NextPCB ko&#x27;magi tufayli ajoyib muvaffaqiyat bilan yakunlandi. Agar sizda PCB loyihalari bo&#x27;lsa, jozibador chegirmalar olish uchun ularning veb-saytiga tashrif buyuring.</p>
  <ul id="D9Gn">
    <li id="mDG1">0-5pcs PCB prototiplari uchun faqat 10$. <a href="https://www.nextpcb.com/?code=Romeohacker" target="_blank">Nextpcb.com/pcbprototype</a></li>
    <li id="VoHQ">Ro&#x27;yxatdan o&#x27;ting va NextPCB dan $100 oling: <a href="https://www.nextpcb.com/register?code=Romeohacker" target="_blank">Nextpcb.com/coupon</a></li>
  </ul>
  <p id="MBr6">Nima Uchun NextPCB</p>
  <ul id="OgFp">
    <li id="9EFs">Eng samarali, iqtisodiy, innovatsion PCB echimlari</li>
    <li id="NQ1n">Yuqori Sifat</li>
    <li id="RFkQ">Arzonroq Narx</li>
    <li id="JN2q">Tezroq Yetkazib Berish</li>
  </ul>
  <p id="6NcW"><strong>Bu interaktiv qurilma va bu ajoyib oilaviy vaqt o&#x27;tkazish uchun ishlatilishi mumkin!</strong></p>
  <p id="Itwy">Bu sizning do&#x27;stingiz uchun mukammal o&#x27;rinbosar sifatida ishlaydi!(hazil)</p>
  <p id="dUMt">Faqat ushbu qurilma oldida belgilaringizni ko&#x27;rsating va mashina nima berishini ko&#x27;ring.</p>
  <p id="tnvp">Servolar tasodifiy ko&#x27;rinishi uchun kodlanganligi sababli qurilma oxiridan aldash imkoniyati yo&#x27;q.</p>
  <p id="nW6O">Bu bilan bizga bu loyihani qurish tomon bosh qilaylik dedi etilmoqda.</p>
  <h2 id="xg9R">Materiallar</h2>
  <figure id="SidY" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FLB/NE3I/LEMTZC07/FLBNE3ILEMTZC07.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="qkVU" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FTW/DD1J/LEMTZBTL/FTWDD1JLEMTZBTL.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <p id="w1Jh">Bu yerda siz ham men sotib yo&#x27;nalishlarga bergan bu loyihani qurish kerak bo&#x27;ladi materiallar ro&#x27;yxati</p>
  <ul id="zTzf">
    <li id="SY4V">Tinkercad</li>
    <li id="4I8k">Arduino IDE</li>
    <li id="YzFs">Internetga ulangan kompyuter/noutbuk</li>
    <li id="yieK">Ramka yasash uchun karton</li>
    <li id="XPui">Arduino UNO bu <strong>yerdan</strong> oling (havola olib tashlandi)</li>
    <li id="93lH">dasturlash kabeli</li>
    <li id="LJjV">Plastik Servos x 3 bu <strong>yerdan</strong> (havola olib tashlandi)</li>
    <li id="oEdO">Oddiy o&#x27;chirish tugmasi</li>
    <li id="qza0">Qayta zaryadlanuvchi batareyalar/18650 yoki lityum-ion batareyalar</li>
    <li id="XCfj">Batareya ushlagichi</li>
    <li id="cR5P">Kichik Non Taxtasi</li>
    <li id="8L9n">Jumper simlari</li>
    <li id="7IhF">Bu <strong>yerdan</strong> ultratovush sensori va o&#x27;tish simlari (havola olib tashlandi)</li>
    <li id="C3GA">Issiq elim</li>
    <li id="jbla">Super elim</li>
    <li id="Nlo1">Qora mato bo&#x27;yoq</li>
    <li id="CZ7J">Shaffof lenta</li>
  </ul>
  <p id="rOly">Siz mahsulotni yuqoridagi havolalarimdan olishingiz mumkin, shunda siz meni qo&#x27;shimcha xarajatlarsiz qo&#x27;llab-quvvatlaysiz.</p>
  <h2 id="anEb">1-Qadam: Tinkercad Circuits Muharriri Yordamida Simulyatsiya</h2>
  <figure id="8lWi" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FSZ/20WC/LEMTZKW3/FSZ20WCLEMTZKW3.png?width=620&height=620&fit=bounds" width="620" />
  </figure>
  <p id="cH4g">Haqiqiy modelni qurishdan oldin men sxemani yaratish uchun Tinkercard-dan foydalanardim.</p>
  <p id="j12H"><strong>VIDEO:</strong> men simulyatsiya videosini yozib oldim va uning funktsiyalari haqida aniq tasavvurga ega bo&#x27;lishingiz uchun uning qanday ishlashini ko&#x27;rsatish uchun ushbu bosqichning oxiriga biriktirdim.</p>
  <p id="3Npo">Chalkashlik uchun biron bir xonani oldini olish uchun men sxemani qurgandan keyin simulyatordan foydalanish videosini qo&#x27;shdim.</p>
  <p id="hjS0">Sxemani qurish juda oddiy va oson, buning uchun komponentlarni sudrab olib tashlash, ularni rangli simlar bilan ulash va kodni matn shaklida yuklash kifoya.</p>
  <p id="h3As">Men allaqachon kodni yozdim va faqat ushbu kodni berdim.</p>
  <p id="KJZq">Kod ishlayotganligini tekshirish uchun simulyatorni yoqing.</p>
  <p id="PZal">Kodi mukammal yaxshi ishlaydi va siz bilan o&#x27;ynash uchun, men bir xil kodlari bergan.</p>
  <p id="3CXQ">Kod uchun quyidagi amallarni bajaring.</p>
  <p id="Z8GT">Kodga ko&#x27;ra, servo harakati tasodifiydir, shuning uchun servo keyingi harakatini aniqlab bo&#x27;lmaydi.</p>
  <ul id="fWcl">
    <li id="9ner">Tinkercad sxemalari va Arduino yordamida tosh qog&#x27;oz qaychi-1-qadam<a href="https://ibles-content.tinkercad.com/F7Y/4RJK/LEMTZI90/F7Y4RJKLEMTZI90.mp4" target="_blank">Yuklash</a></li>
  </ul>
  <h2 id="dcjS">2-Qadam: Tosh Qog&#x27;oz Qaychi Sxemasi</h2>
  <figure id="EyzP" class="m_original">
    <img src="https://ibles-content.tinkercad.com/F8L/NRET/LEMTZIO3/F8LNRETLEMTZIO3.png?width=620&height=620&fit=bounds" width="620" />
  </figure>
  <p id="sqd9">Ushbu loyihani amalga oshirish uchun ishlatiladigan sxema yuqorida ko&#x27;rsatilgan</p>
  <p id="6fVE">Bu oddiy va oson, agar siz sxemani o&#x27;qishda qiyinchiliklarga duch kelsangiz, bu erda elektron qurish uchun yozma tushuntirish mavjud</p>
  <p id="4QMp"><strong>Ultrasonik yoki HC-SR04 sensor ulanishlari</strong></p>
  <p id="P5gJ">Bu bor 4 Gnd bor ignalar majmui, Trig, Echo va Vcc</p>
  <p id="th1e">Gnd va Vcc salbiy va ijobiy elektr ta&#x27;minoti uchun va bu bevosita ulangan-va + bir breadboard haqida relslar</p>
  <p id="CeT5">Trig Uno kuni D11 pin ulangan</p>
  <p id="3EUW">Echo d10 piniga ulangan</p>
  <p id="mP2P"><strong>Arduino uno ulanishlari</strong></p>
  <p id="x9R0">Barcha qismlarga elektr ta&#x27;minoti BMT kengashi tomonidan taqdim etiladi</p>
  <p id="75rV">Shunday qilib, biz BMT Gnd - ni breadboard-ga ulaymiz</p>
  <p id="hB0n">5v uchun Uno + breadboard temir</p>
  <p id="BC1I">Arduino ning Gnd va Vin pinlari batareyadan tashqi quvvat manbai uchun ishlatiladi</p>
  <p id="yMJZ"><strong>Mikro servo ulanishlar</strong></p>
  <p id="HiXp"><strong>Ushbu loyihada biz 3 mikro servosidan foydalanamiz</strong></p>
  <p id="BgOj"><strong>Har bir mikro servo 3 kirish piniga ega</strong></p>
  <p id="Nla5">Ijobiy, salbiy va Signal pimi</p>
  <p id="Y8Qp">Barcha 3 servolarning ijobiy va salbiy pinlari breadboardning + va-relslariga ulanadi</p>
  <p id="UDxM">Servo signal pin D3 ulangan bo&#x27;ladi-da, Uno haqida D6 va D9 Pim</p>
  <p id="qQvC">Bu sxemani yakunlaydi</p>
  <h2 id="4Vy3">3-Qadam: Ulanishlarni O&#x27;rnatish</h2>
  <figure id="Epjw" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FEY/993D/LEMTZC39/FEY993DLEMTZC39.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="l5GZ" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FP6/UQP0/LEMTZC5O/FP6UQP0LEMTZC5O.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="6He7" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FR2/LQFW/LEMTZC8D/FR2LQFWLEMTZC8D.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <p id="htMi"><a href="true">Ko&#x27;rish 1 ko&#x27;proq</a></p>
  <p id="3YZO">Biz allaqachon simulyatsiya va sxemani qurishdan o&#x27;tganimizdek, sxema hech qanday qiyin ish bo&#x27;lmaydi</p>
  <p id="9mKH">Jumper simlarini komponentlarga ulashdan, so&#x27;ngra non taxtasi bilan ulanishdan boshlang</p>
  <p id="eiBc">Ulanish paytida bo&#x27;shashgan o&#x27;tish simlarini ishlatishdan saqlaning, chunki agar shunday qilsangiz va oxirida, agar biron bir komponent ishlamasa, vaqtni behuda sarflashga olib keladigan aniq joyni topish qiyin ish</p>
  <p id="ltVj">Barcha komponentlar orasidagi aloqalarni o&#x27;rnatganingizdan so&#x27;ng biz kodni yuklashga tayyormiz</p>
  <h2 id="S8Fx">4-qadam: tosh qog&#x27;oz qaychi uchun Arduino kodi</h2>
  <figure id="Z0e1" class="m_original">
    <img src="https://ibles-content.tinkercad.com/F2N/PCM2/LEMTZCBG/F2NPCM2LEMTZCBG.jpg?width=620&height=620&fit=bounds" width="620" />
  </figure>
  <figure id="snlf" class="m_original">
    <img src="https://ibles-content.tinkercad.com/F81/0IL8/LEMU0ZAH/F810IL8LEMU0ZAH.jpg?width=620&height=620&fit=bounds" width="620" />
  </figure>
  <p id="tzat">Mana, <a href="https://drive.google.com/file/d/1T0LncaEpSd0mXs4OAsLF_dOtke5KIPC0/view?usp=share_link" target="_blank"><strong>tosh qog&#x27;oz qaychi uchun Arduino kodi</strong></a> simulyatorda xuddi shu kod ishlatilgan</p>
  <p id="9ZMg">Siz ushbu kodni yuklab olishingiz va Arduino IDE-da ochishingiz mumkin</p>
  <p id="VMw0">UNO platasini dasturlash kabeli bilan ulang va menyu-asboblar-portga o&#x27;tib, IDE ichidagi to&#x27;g&#x27;ri portni tekshiring</p>
  <p id="MG0H">Portni tanlang, taxta turini tanlang va yuklash-ni bosing</p>
  <p id="JXm6">Kengash kod bilan yuklangandan so&#x27;ng biz sxemani sinab ko&#x27;rishimiz mumkin</p>
  <p id="LOAH"><strong>Eslatma:</strong> Arduino USB quvvatidan foydalanmaslikni tavsiya qilaman, aksincha batareyadan bo&#x27;lgani kabi alohida quvvat manbaidan foydalaning</p>
  <p id="nYPj">ushbu bosqichdagi ikkinchi rasmda mikro servolarga ajratilgan pinlar ko&#x27;rsatilgan</p>
  <h2 id="W6PE">5-Qadam: Ramka Yasash</h2>
  <figure id="8j9D" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FC2/V2IE/LEMTZBUY/FC2V2IELEMTZBUY.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="tlBR" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FR1/ZBLU/LEMTZBVD/FR1ZBLULEMTZBVD.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="JDTG" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FHC/4CNY/LEMTZBWH/FHC4CNYLEMTZBWH.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <p id="CQ9w"><a href="true">Yana 3 ni ko&#x27;rish</a></p>
  <p id="rHvL">Barcha elektronikalarni ushlab turish uchun men kartondan kassa yasadim, chunki elektron komponentlar standart o&#x27;lchamlarda bo&#x27;ladi, siz ushbu o&#x27;lchamlardan mos keladigan muammolar haqida qayg&#x27;urmasdan foydalanishingiz mumkin.</p>
  <p id="fy2f">Men ushbu o&#x27;lchamlarning qismlarini ishlatdim</p>
  <p id="6QzP">Baza va yuqori 2 dona 15 x 8cm uchun</p>
  <p id="DXX7">Tomonlar uchun 2 dona 15 x 4 sm va qirralarning 8 x 4 sm</p>
  <p id="SHbL">Siz ushbu kartondan foydalanishingiz mumkin, ammo unga yanada jozibali ko&#x27;rinish berish uchun ularni mato bo&#x27;yoqlari yordamida qora rangga bo&#x27;yadim</p>
  <p id="OKza"><strong>Bilasizmi?</strong></p>
  <p id="iCgD">Agar sizda kartonni bo&#x27;yash uchun bo&#x27;yoq cho&#x27;tkasi va vatingiz bo&#x27;lmasa, siz quloqchinlar / quloq tamponlaridan foydalanishingiz mumkin, ular kartonni bo&#x27;yash uchun juda yaxshi ishlaydi</p>
  <h2 id="ixzj">6-Qadam: Qurilish Ramkasi</h2>
  <figure id="KejD" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FQ0/A47Z/LEMTZCDN/FQ0A47ZLEMTZCDN.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="DkFp" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FKL/ESGV/LEMTZCF4/FKLESGVLEMTZCF4.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="V3WM" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FWG/TNPM/LEMTZCFV/FWGTNPMLEMTZCFV.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <p id="bD44"><a href="true">Yana 3 ni ko&#x27;rish</a></p>
  <p id="iNRh">Karton bilan bo&#x27;yalgan joylar quriganidan keyin biz ularni yig&#x27;ishimiz mumkin, men sizga yopishtirish uchun super elim ishlatishni maslahat bermayman, chunki agar siz superglue qo&#x27;llaganingizdan keyin biron bir joyni o&#x27;tkazib yuborsangiz, sirt juda qattiq bo&#x27;ladi va yana elim surtsangiz, xuddi shu joy yaxshiroq xizmat qilmaydi</p>
  <p id="oYvP">Men issiq elimdan foydalanishni maslahat beraman, bu erda taqdim etilgan bosqichlardagi rasmlarni kuzatib boring, keyinchalik qirralar bilan boshlang</p>
  <p id="YbXL">Kuchni oshirish uchun burchaklar uchun ham issiq elim qo&#x27;shing</p>
  <h2 id="IuHT">7-Qadam: Ramka Ichiga Komponentlarni Qo&#x27;shish</h2>
  <figure id="oLFl" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FMX/4LR8/LEMTZCL9/FMX4LR8LEMTZCL9.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="s4Zc" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FW5/DFDN/LEMTZCME/FW5DFDNLEMTZCME.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="2RJx" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FD7/67XV/LEMTZCQ4/FD767XVLEMTZCQ4.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <p id="vWMm"><a href="true">Ko&#x27;rish 2 ko&#x27;proq</a></p>
  <p id="hNxH">Ramkamiz tayyor bo&#x27;lgandan so&#x27;ng, biz ilgari yig&#x27;ilgan elektronikani qo&#x27;shishimiz mumkin.</p>
  <p id="Ex0Z">Ramka ichidagi komponentlarni mahkamlashdan oldin sxemani ishlash uchun sinab ko&#x27;ring, agar biror narsani o&#x27;tkazib yuborsangiz, avval uni tuzating.</p>
  <p id="Nxda">Har qanday komponentni siljitmaslik uchun komponentlarni taglikka joylashtirishdan oldin oz miqdorda superglue ishlating.</p>
  <p id="H1L7">Arduino kichik breadboard ustiga o&#x27;tiradi, holbuki, men bazasiga bir batareya saqlovchi va breadboard qo&#x27;shib bo&#x27;ladi.</p>
  <p id="gWRE">Batareya va Arduino platasi o&#x27;rtasida kalitni qo&#x27;shing, bu oddiy kalit tugmani bosish orqali quvvatni ta&#x27;minlashi kerak</p>
  <p id="XLmD">Ushbu bosqichning oxirgi rasmida qutidagi barcha komponentlarning qushlarning ko&#x27;rinishi ko&#x27;rsatilgan.</p>
  <p id="gOOZ">Endi asosiy qism o&#x27;qiladi, biz keyingi bosqichda yuqori qism ustida ishlaymiz.</p>
  <h2 id="1Vl7">8-Qadam: Yuqori Qismni O&#x27;rnating</h2>
  <figure id="H3ew" class="m_original">
    <img src="https://ibles-content.tinkercad.com/F5N/AVDG/LEMTZCSJ/F5NAVDGLEMTZCSJ.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="wPuD" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FOV/6IN0/LEMTZCTD/FOV6IN0LEMTZCTD.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="30Xz" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FLR/XLK3/LEMTZCTS/FLRXLK3LEMTZCTS.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <p id="dztC"><a href="true">Ko&#x27;rish 4 ko&#x27;proq</a></p>
  <p id="WTep">Yuqori qismda servo kabi barcha ishlaydigan komponentlar mavjud, bu bizning loyihamizning eng muhim qismidir</p>
  <p id="RjZ8">Biz birinchi navbatda yuqori qopqoqqa ultrasonik sensorni qo&#x27;shamiz (ilgari kartondan qilingan)</p>
  <p id="Grt4">Men ushbu sensorni qo&#x27;shish uchun kartonda kichik bir uyani yasadim, uni aniq joyga qo&#x27;yishingiz mumkin</p>
  <p id="lDeG">Hammasini birlashtirish uchun issiq elimdan foydalaning</p>
  <p id="2wdB">Endi bizning yuqori qismimiz tayyor, avval qurilmadagi yuqori kalitdagi servolarni yopishtirishdan oldin va servo harakatlarini tekshiring</p>
  <p id="q6jl">Siz bu qismni o&#x27;tkazib yubora olmaysiz va uni to&#x27;g&#x27;ridan-to&#x27;g&#x27;ri yopishtira olmaysiz, chunki servo noto&#x27;g&#x27;ri joylashishi noto&#x27;g&#x27;ri harakatlarga olib keladi</p>
  <p id="43KX">harakatlarni tekshiring va servolarni tepaga yopishtiring</p>
  <p id="kbu8">Ushbu jarayonning oxiri bizda deyarli loyihani tugatishga tayyormiz</p>
  <h2 id="oUV9">9-Qadam: Tugatish</h2>
  <figure id="K4Kq" class="m_original">
    <img src="https://ibles-content.tinkercad.com/F34/HXBE/LEMTZCUN/F34HXBELEMTZCUN.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="3Wzr" class="m_original">
    <img src="https://ibles-content.tinkercad.com/F22/NKJF/LEMTZCUO/F22NKJFLEMTZCUO.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="VAr8" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FXQ/88K0/LEMTZCUP/FXQ88K0LEMTZCUP.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <p id="9Arz"><a href="true">Ko&#x27;rish 4 ko&#x27;proq</a></p>
  <p id="izhw">Bilasizmi va men bilamanki, ushbu loyihada ko&#x27;plab o&#x27;tish simlari ishlatilgan va ularni tashqarida qoldirish loyihani tartibsiz ko&#x27;rinishga olib keladi.</p>
  <p id="QrXp">Shunday qilib, tugatish bu ko&#x27;rinishni ancha toza qiladi.</p>
  <p id="6euu">Ushbu qurilmadan uzoq vaqt foydalanganimizdan keyin qayta zaryadlanuvchi batareyalardan foydalanayotganimiz sababli batareyani zaryadlash kerak, buning uchun ramkani ochish va yopish uchun tizim kerak</p>
  <p id="7uR0">Shu maqsadda, orqa ramkaning bir tomoni shaffof lenta / yopishqoq lenta yordamida birlashtiriladi, shunda biz kerak bo&#x27;lganda batareyaga va kontaktlarning zanglashiga kirishimiz mumkin</p>
  <p id="G0yb">Yuqoridagi rasmlarda ko&#x27;rsatilgan kalitlarni joylashtirishni ko&#x27;rib chiqing</p>
  <h2 id="k3pT">10-Qadam: Belgilarni Qo&#x27;shish</h2>
  <figure id="OAfH" class="m_original">
    <img src="https://ibles-content.tinkercad.com/F73/72KQ/LEMTZCXP/F7372KQLEMTZCXP.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="Riho" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FRQ/3975/LEMTZCYO/FRQ3975LEMTZCYO.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="DWLG" class="m_original">
    <img src="https://ibles-content.tinkercad.com/F8M/RN07/LEMTZCYP/F8MRN07LEMTZCYP.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <p id="mMFI"><a href="true">Ko&#x27;rish 1 ko&#x27;proq</a></p>
  <p id="4zZ9">Men micro servo shoxi qo&#x27;shiladi 1cm x 11cm bo&#x27;lgan karton chiziqlar kesib qilgan, men bu loyiha uchun buyumlar eng chop 3D bir rejasi bor edi, lekin ularning ko&#x27;plari o&#x27;z uyida bir 3D printer yo&#x27;q, deb men karton yordamida qilgan.</p>
  <p id="aNP3">Endi buni har kim amalga oshirishi mumkin, chunki hamma kartonga kirish huquqiga ega</p>
  <p id="GrwO">Tosh, qog&#x27;oz va qaychi belgilari/ramzlari men qog&#x27;ozga qo&#x27;l bilan chizganman</p>
  <p id="tYfC">Ushbu belgilarni karton chiziqlar uchiga yopishtiring, endi superglue yordamida bu chiziqlarni mikro servo shoxlariga ulang</p>
  <p id="69kQ">agar elim butunlay quruq sinov, bu qurilma bor bir marta, shubhasiz, u har qanday masalalar holda ishlashi kerak</p>
  <h2 id="kTPM">11-qadam: qanday foydalanish</h2>
  <figure id="dQS0" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FB0/28XC/LEMTZD0V/FB028XCLEMTZD0V.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <figure id="IKgw" class="m_original">
    <img src="https://ibles-content.tinkercad.com/FYT/ZIX2/LEMTZD1G/FYTZIX2LEMTZD1G.png?width=620&height=620&fit=bounds" width="593" />
  </figure>
  <p id="43mb">Ushbu qurilmadan foydalanish juda oddiy</p>
  <ul id="jvMn">
    <li id="r9ys">Faqat tugmani yoqing va 2 soniya kuting.</li>
    <li id="7KFo">Endi qo&#x27;llaringizni sensorga yaqinlashtiring va tosh qog&#x27;oz yoki qaychi belgilarini yasashni boshlang</li>
    <li id="8VLh">Qurilma o&#x27;z belgilarini ko&#x27;rsatadi</li>
    <li id="hKwX">Endi sizda qattiq raqobatchi bor!</li>
    <li id="mXJq">Qurilmadagi belgilar tasodifiy bo&#x27;ladi, shuning uchun siz keyingi harakatni taxmin qila olmaysiz</li>
    <li id="fbel">Ushbu qurilmani taassurot qoldirish uchun oilaviy vaqt partiyalariga yoki do&#x27;stingizning uyiga olib boring.</li>
  </ul>
  <p id="OkVK">Maza qiling!</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@snrg_py/sAfFsZIyKZ8</guid><link>https://teletype.in/@snrg_py/sAfFsZIyKZ8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py</link><comments>https://teletype.in/@snrg_py/sAfFsZIyKZ8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=snrg_py#comments</comments><dc:creator>snrg_py</dc:creator><title>Xotira o'yini (Memory Game / Memo) - Flet bilan</title><pubDate>Wed, 10 Dec 2025 05:11:46 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/43/ad/43ad2d2b-0c21-49b1-af6d-422597e6bea3.png"></media:content><description><![CDATA[<img src="https://screens.cdn.wordwall.net/400/cf84fc1b62934f5ca89e600d090600d1_0"></img>O'yin kodini ishga tushirganingizda, u quyidagi kabi ko'rinadi: Boshida kartalar teskari (orqa tomoni ko'rinadi), siz kartalarni bosib ochasiz va juftlarini topasiz. Bu yerda umumiy xotira o'yini misollari (Flet versiyasi o'xshash):]]></description><content:encoded><![CDATA[
  <pre id="z0s5" data-lang="python"># Xotira o&#x27;yini (Memory Game / Memo) - Flet bilan
# Bu kod Flet kutubxonasi yordamida xotira o&#x27;yini yaratadi.
# O&#x27;yinchi kartalarni teskari qilib, juftlarini topishi kerak.
# Ishga tushirish: &#x60;pip install flet&#x60; so&#x27;ng &#x60;python memory_game.py&#x60;
# O&#x27;yin: Kartalarni juftlashtiring, vaqtni o&#x27;lchang!

import flet as ft  # Flet - veb va desktop ilovalar uchun Python UI kutubxonasi
import random     # Tasodifiy sonlar va aralashtirish uchun
import time       # Vaqtni o&#x27;lchash va kechikishlar uchun

def main(page: ft.Page):
    # Asosiy funksiya: Sahifani sozlash va o&#x27;yin logikasini boshqarish
    page.title = &quot;Xotira o&#x27;yini - Flet&quot;  # Sahifa sarlavhasi
    page.window_height = 710             # Oyna balandligi
    page.window_width = 910              # Oyna kengligi

    number_of_single_cards: int = 20     # Har bir juftdan nechta (umumiy 40 karta)

    global idx_of_cards                  # Kartalar ro&#x27;yxati global o&#x27;zgaruvchi
    list_of_pairs = []                   # Tanlangan kartalar juftligi
    find = []                            # Topilgan juftlar
    image_page = &quot;https://picsum.photos/id/&quot;  # Rasmlar uchun URL (tasodifiy rasmlar)

    def make_cards(number_of_single_cards):
        # Kartalarni yaratish: Har bir raqamdan ikkita nusxa (A va B)
        card_deck_with_duplicates = \
            [f&quot;{i}_A&quot; for i in range(number_of_single_cards)] + \
            [f&quot;{i}_B&quot; for i in range(number_of_single_cards)]
        random.shuffle(card_deck_with_duplicates)  # Aralashtirish
        return card_deck_with_duplicates

    idx_of_cards = make_cards(number_of_single_cards)  # Kartalarni yaratish va aralashtirish

    def start_game(e):
        # O&#x27;yinni boshlash funksiyasi
        start_button.disabled = True  # Tugmani o&#x27;chirish

        global start_time
        start_time = time.time()      # Vaqtni boshlash

        # Orqa tomonlarni qo&#x27;yish: Barcha kartalarni teskari qilish
        for i in range(len(idx_of_cards)):
            row_board.controls[i].content = None            # Rasmlarni yashirish
            row_board.controls[i].bgcolor = ft.colors.AMBER # Orqa rang
            row_board.controls[i].border_radius = \
                ft.border_radius.all(10)                    # Burchaklarni yumaloq qilish
            page.update()                                   # Sahifani yangilash

    def match_pairs(e):
        # Kartalarni juftlashtirish funksiyasi (klik bo&#x27;lganda ishlaydi)
        if len(list_of_pairs) == 2:  # Ikki karta tanlangan bo&#x27;lsa, qaytish
            return

        if start_button.disabled:    # O&#x27;yin boshlangan bo&#x27;lsa
            num = e.control.data     # Bosilgan karta indeksi

            idx = idx_of_cards[num].split(&#x27;_&#x27;)[0]  # Kartaning raqami (masalan, 5)
            index_a = idx_of_cards.index(str(idx)+&#x27;_A&#x27;)  # A nusxasi indeksi
            index_b = idx_of_cards.index(str(idx)+&#x27;_B&#x27;)  # B nusxasi indeksi
            index_of_image_ = idx_of_cards[num].split(&quot;_&quot;)[0]  # Rasm indeksi

            if len(list_of_pairs) &lt; 2:
                # Kartani ochish: Rasmini ko&#x27;rsatish
                row_board.controls[num].content = ft.Image(src=f&quot;{image_page+&#x27;1&#x27;+index_of_image_}/100&quot;,
                                                           border_radius=ft.border_radius.all(10))
                if idx_of_cards[num] not in list_of_pairs:
                    list_of_pairs.append(idx_of_cards[num])  # Tanlanganlarga qo&#x27;shish

            page.update()  # Sahifani yangilash

            if len(list_of_pairs) == 2:
                # Ikki karta tanlangan: Juftligini tekshirish
                a = int(list_of_pairs[0].split(&#x27;_&#x27;)[0])
                b = int(list_of_pairs[1].split(&#x27;_&#x27;)[0])

                if a == b:
                    # Juft: Muvaffaqiyatli
                    time.sleep(.4)  # Qisqa pauza

                    for index in (index_a, index_b):
                        row_board.controls[index].disabled = True  # Kartalarni o&#x27;chirish
                        row_board.controls[index].content = None   # Rasmlarni olib tashlash
                        row_board.controls[index].bgcolor = ft.colors.BLACK  # Qora rang

                    find.append(index_a)  # Topilganlarga qo&#x27;shish

                    if len(find) == number_of_single_cards:
                        # O&#x27;yin tugadi: Barcha juftlar topildi
                        stop_time = time.time()
                        start_button.text = &quot;Vaqt: \n{} soniya&quot;.format(
                            str(round(stop_time - start_time, 0)))  # Vaqtni ko&#x27;rsatish
                        page.update()

                    page.update()
                    list_of_pairs.clear()  # Tanlanganlarni tozalash
                else:
                    # Juft emas: Qayta teskari qilish
                    time.sleep(1)  # Pauza
                    flip_a = idx_of_cards.index(list_of_pairs[0])
                    flip_b = idx_of_cards.index(list_of_pairs[1])

                    for index in (flip_a, flip_b):
                        row_board.controls[index].content = None
                        row_board.controls[index].bgcolor = ft.colors.AMBER

                    list_of_pairs.clear()
                    page.update()

            page.update()

    def board(idx_of_cards):
        # O&#x27;yin taxtasini yaratish: Kartalarni konteynerlar sifatida
        card_images = []

        for num in range(len(idx_of_cards)):
            index_of_image = idx_of_cards[num].split(&quot;_&quot;)[0]

            card_images.append(
                ft.Container(
                    width=100,                  # Karta kengligi
                    height=100,                 # Karta balandligi
                    bgcolor=ft.colors.AMBER,    # Boshlang&#x27;ich rang
                    border_radius=ft.border_radius.all(10),  # Burchaklar
                    data=num,                   # Indeks saqlash
                    on_click=match_pairs        # Klik hodisasi
                )
            )
        return card_images

    row_board = ft.Row(wrap=True, controls=board(idx_of_cards), spacing=10)  # Kartalarni satrga joylash
    start_button = ft.ElevatedButton(text=&quot;O&#x27;yinni boshlash&quot;, width=200, height=50, on_click=start_game)  # Boshlash tugmasi
    
    page.add(
        ft.Column([
            ft.Text(&quot;Xotira o&#x27;yini: Kartalarni juftlashtiring!&quot;, size=24, weight=ft.FontWeight.BOLD),  # Sarlavha
            row_board,  # O&#x27;yin taxtasi
            start_button  # Tugma
        ], horizontal_alignment=ft.CrossAxisAlignment.CENTER)  # Markazga joylash
    )

ft.app(target=main)  # Ilovani ishga tushirish</pre>
  <p id="Fusz">O&#x27;yin kodini ishga tushirganingizda, u quyidagi kabi ko&#x27;rinadi: Boshida kartalar teskari (orqa tomoni ko&#x27;rinadi), siz kartalarni bosib ochasiz va juftlarini topasiz. Bu yerda umumiy xotira o&#x27;yini misollari (Flet versiyasi o&#x27;xshash):</p>
  <figure id="UnUm" class="m_original">
    <img src="https://screens.cdn.wordwall.net/400/cf84fc1b62934f5ca89e600d090600d1_0" width="400" />
  </figure>
  <p id="3JGY"><a href="https://wordwall.net/en-mx/community/memory-game" target="_blank">wordwall.net</a></p>
  <figure id="GKeZ" class="m_original">
    <img src="https://images.sftcdn.net/images/t_app-cover-s,f_auto/p/441ece4a-9b38-11e6-b257-00163ec9f5fa/1517048909/memory-games-screenshot.png" width="340" />
  </figure>
  <p id="BDrN"><a href="https://memory-games.en.softonic.com/" target="_blank">memory-games.en.softonic.com</a></p>
  <figure id="SjJR" class="m_original">
    <img src="https://www.memozor.com/templates/memoire/images/zoom/free_memory_games_online_adults.jpg" width="1800" />
  </figure>
  <p id="4Oo3"><a href="https://www.memozor.com/memory-games/for-adults" target="_blank">memozor.com</a></p>
  <figure id="Cy35" class="m_original">
    <img src="https://www.mindgames.com/uploaded/game/screenshot/3d-memory-matching-800.webp" width="800" />
  </figure>
  <p id="DgiX"><a href="https://www.mindgames.com/game/3D+Memory+Matching" target="_blank">mindgames.com</a></p>
  <p id="8oRV">Kodda rasmlar tasodifiy (picsum.photos dan), shuning uchun sizda turli rasmlar chiqishi mumkin, lekin mexanizm bir xil. Agar o&#x27;zingiz ishga tushirib ko&#x27;rmoqchi bo&#x27;lsangiz, python memory_game.py buyruq bilan bajaring!</p>

]]></content:encoded></item></channel></rss>