Mundarija (31)
- Bu darsda
- 1. Nega bu kerak?
- 2. Buyruq anatomiyasi: uch bo'lak
- 2.1 Gap kabi
- 2.2 Bo'sh joy — ajratuvchi
- 2.3 Katta-kichik harf
- 3. Flaglar: qisqa va uzun
- 3.1 Qisqa flag
- 3.2 Uzun flag
- 3.3 Qiymat oladigan flag
- 3.4 Bir harf — har xil ma'no
- 4. Ichki (builtin) va tashqi buyruqlar
- 4.1 Ikki tur
- 4.2 Nega cd ichki bo'lishi shart?
- 5. Yordam olish
- 5.1 --help: buyruqning o'z yo'riqnomasi
- 5.2 man: to'liq qo'llanma
- 5.3 tldr: eng kerakli misollar
- 5.4 Boshqa yordamchilar
- 6. Ko'p uchraydigan xatolar
- 6.1 Uzun flagga bitta chiziqcha
- 6.2 Bo'sh joyli nomni qo'shtirnoqsiz yozish
- 6.3 Git Bash'da man qidirish
- 6.4 PowerShell'dagi type
- 6.5 man yoki --help ichida "qotib qolish"
- 7. Mashqlar
- 1-mashq (oson): Bo'laklang
- 2-mashq (o'rta): Qisqasini va uzunini yozing
- 3-mashq (qiyin): Yordamdan o'zingiz toping
- 8. Real ishda
- Xulosa
Buyruq anatomiyasi va yordam olish
Qisqacha: Har bir terminal buyrug'i uch qismdan iborat: buyruq nomi (nima qilish), flaglar (qanday qilish:
-l,--all) va argumentlar (nima ustida: fayl yoki papka nomi). Masalan,ls -l rasmlar. Qismlar bo'sh joy bilan ajratiladi. Dasturchilar flaglarni yodlamaydi: kerak bo'lgandals --help,man lsyokitldr lsdan qarab oladi.
Bu darsda
- Istalgan buyruqni nom, flag va argumentga ajrata olasiz.
- Qisqa (
-a) va uzun (--all) flaglarni yozasiz, qisqa flaglarni birlashtirasiz (-la). - Nomida bo'sh joy bor faylni buyruqqa to'g'ri berasiz.
- Shell ichidagi (builtin) buyruq bilan alohida dasturni farqlaysiz va nega
cdichki bo'lishi shartligini tushunasiz. --helpnatijasini o'qiy olasiz vaman,tldrdan foydalana olasiz.
Oldin bilishingiz kerak: Terminal, shell va prompt, Dastur o'rnatish va paket menejerlari (PATH qismi).
1. Nega bu kerak?
Terminalda yuzlab buyruq bor, har birining o'nlab sozlamasi. Birinchi ko'rganda "bularning hammasini qanday yodlayman?" degan qo'rquv tug'ilishi tabiiy.
Yaxshi xabar: dasturchilar ularni yodlamaydi. Ular ikki narsani biladi:
- Buyruqlar qanday tuzilishi — bu hamma buyruq uchun bir xil.
- Unutilgan narsani qayerdan qarash kerakligi.
Til o'rganishni eslang. Har bir gapni yodlamaysiz — grammatikani bilasiz va lug'atga qaraysiz. Bu dars — terminalning grammatikasi va lug'ati.
2. Buyruq anatomiyasi: uch bo'lak
2.1 Gap kabi
Oddiy gapni olaylik: "Jasur, tezda nonni olib kel". Unda nima qilish (olib kel), qanday qilish (tezda) va nima ustida (nonni) bor. Terminal buyrug'i ham xuddi shunday tuzilgan:
ls -l rasmlarls — papkadagi fayllar ro'yxatini chiqaradigan buyruq (uni keyingi darsda batafsil ishlatamiz). Endi bo'laklaymiz:
| Bo'lak | Misolda | Savol | Gapda |
|---|---|---|---|
| Buyruq (command) | ls |
Nima qilish? | olib kel |
| Flag (option) | -l |
Qanday qilish? | tezda |
| Argument | rasmlar |
Nima ustida? | nonni |
- Buyruq — ishga tushadigan dastur nomi. Doim birinchi turadi.
- Flag (option, "parametr" ham deyiladi) — buyruqning ishlash usulini o'zgartiradi. Chiziqcha (
-) bilan boshlanadi.-l— "batafsil ro'yxat ko'rinishida". - Argument — buyruq nima bilan ishlashi: fayl, papka, matn.
rasmlar— qaysi papkani ko'rsatish.
Flag ham, argument ham majburiy emas. Shunchaki ls ham ishlaydi — u joriy papkani oddiy ro'yxat qilib ko'rsatadi.
2.2 Bo'sh joy — ajratuvchi
Shell buyruqni bo'sh joylar bo'yicha bo'laklarga ajratadi. Shuning uchun bo'sh joy muhim:
ls mening rasmimShell buni "ikki argument: mening va rasmim" deb tushunadi. Natija (biz Git Bash'da ishga tushirdik):
ls: cannot access 'mening': No such file or directory
ls: cannot access 'rasmim': No such file or directory"mening ga kirib bo'lmadi: bunday fayl yoki papka yo'q" — va xuddi shunday rasmim uchun. Bitta nom ikkiga bo'linib ketdi.
Nomda bo'sh joy bo'lsa, uni qo'shtirnoqqa oling:
ls "mening rasmim"Endi shell butun mening rasmim ni bitta argument deb biladi. Mana nega Fayl va papka nomlash qoidalari darsida bo'sh joyli nomlardan qochishni maslahat bergan edik.
2.3 Katta-kichik harf
Buyruq nomlari va flaglar katta-kichik harfni farqlaydi. Linux'da ls ishlaydi, LS esa command not found beradi.
Maslahat: Git Bash'da
LSham ishlab ketishi mumkin — biz tekshirdik, ishladi. Sababi: Windows fayl tizimi katta-kichik harfni farqlamaydi vals.exeni baribir topadi. Lekin bu odatga aylanmasin: serverda (Linux'da) bunday buyruq ishlamaydi. Doim kichik harf bilan yozing.
Tekshirib ko'ring:
cp -r rasmlar zaxirabuyrug'ida qaysi qism buyruq, qaysi flag, qaysilari argument?
Javob
cp — buyruq (nusxalash dasturi), -r — flag (chiziqcha bilan boshlangan), rasmlar va zaxira — ikki argument: nimani nusxalash va qayerga. Argument bir nechta bo'lishi mumkin.
3. Flaglar: qisqa va uzun
3.1 Qisqa flag
Bitta chiziqcha va bitta harf:
-l— batafsil ro'yxat (long);-a— hammasi, yashirin fayllar ham (all);-h— hajmni odam o'qiydigan ko'rinishda:4.0K,2.4M(human-readable).
Bir nechta qisqa flagni bitta chiziqcha ostida birlashtirsa bo'ladi. Bu uch yozuv bir xil ishlaydi:
ls -l -a -h
ls -lah
ls -halHarflar tartibi odatda muhim emas.
Qisqa flagda harf kattaligi muhim. ls -r — ro'yxatni teskari tartibda chiqaradi (reverse). ls -R — ichki papkalarni ham ko'rsatadi (recursive). Bitta harf, butunlay boshqa ish.
3.2 Uzun flag
Ikkita chiziqcha va to'liq so'z:
ls --all
ls --human-readableKo'p qisqa flagning uzun jufti bor: -a va --all bir xil ish qiladi. Uzun flag o'qish uchun qulay: bir oydan keyin skriptni ochganingizda --recursive nima ekanini darhol tushunasiz, -R esa esingizdan chiqqan bo'lishi mumkin.
3.3 Qiymat oladigan flag
Ba'zi flaglar o'zidan keyin qiymat kutadi. Masalan, head fayl boshini ko'rsatadi, -n esa nechta qatorligini aytadi:
head -n 5 royxat.txt
head --lines=5 royxat.txtIkkalasi ham "royxat.txt ning dastlabki 5 qatorini ko'rsat" degani. Qisqa flagda qiymat bo'sh joy bilan, uzun flagda ko'pincha = bilan yoziladi.
3.4 Bir harf — har xil ma'no
Flag harfining ma'nosini har bir buyruq o'zi belgilaydi. ls da -h — "hajmni qulay ko'rsat". Ko'p boshqa buyruqlarda esa -h — "yordam" (help). Shuning uchun "-r doim shuni qiladi" deb o'ylamang — har buyruqning yordamiga qarang.
Tekshirib ko'ring:
ls -a -lni qisqaroq qilib ikki xil usulda yozing.
Javob
ls -al va ls -la. Qisqa flaglar bitta chiziqcha ostida birlashtiriladi, harflar tartibi farq qilmaydi.
4. Ichki (builtin) va tashqi buyruqlar
4.1 Ikki tur
Buyruq nomini yozganingizda shell uni ikki joydan izlaydi:
- Ichki buyruq (shell builtin) — shell'ning o'zi ichiga yozilgan. Masalan:
cd,pwd,echo,type,exit. - Tashqi dastur — diskda alohida fayl bo'lib yotadi. Shell uni PATH papkalaridan topadi. Masalan:
ls,mkdir,cp,git,node.
Shell qidirishni shu tartibda olib boradi:
flowchart TD
A["Siz yozdingiz: buyruq nomi"] --> B{"Shell'ning ichki<br/>buyrug'imi?"}
B -- ha --> C["Shell o'zi bajaradi<br/>(cd, pwd, echo)"]
B -- "yo'q" --> D{"PATH papkalarida<br/>shunday dastur bormi?"}
D -- ha --> E["Yangi jarayon bo'lib<br/>ishga tushadi (ls, git)"]
D -- "yo'q" --> F["command not found"]Qaysi biri ekanini type buyrug'i aytadi. Biz Git Bash'da ishga tushirdik:
type cd
type lscd is a shell builtin
ls is /usr/bin/ls"cd — shell'ning ichki buyrug'i". "ls — /usr/bin/ls da turgan dastur". Ubuntu'da type ls ko'pincha ls is aliased to 'ls --color=auto' deydi. Bu ls ga rang qo'shadigan qisqartma (alias) — ularni muhit o'zgaruvchilari darsida ko'ramiz.
4.2 Nega cd ichki bo'lishi shart?
cd — joriy papkani almashtiradigan buyruq. OS darsida har bir dastur alohida jarayon bo'lib ishlashini va har jarayonning o'z "holati" borligini ko'rgan edik. Joriy papka ham shu holatning bir qismi.
Faraz qilaylik, cd alohida dastur bo'lsin:
- Shell
cddasturini yangi jarayon qilib ishga tushiradi. cdo'zining joriy papkasini almashtiradi.cdishini tugatadi va jarayon yopiladi.- Shell'ning joriy papkasi esa o'zgarmay qoladi.
Ya'ni cd hech narsa qilmagandek bo'lardi. Qo'shningizga "uyingni ko'chir" deysiz — u ko'chadi, siz esa joyingizda qolasiz. Shu sababli cd shell'ning ichida yashaydi va shell'ning o'z papkasini almashtiradi.
Tekshirib ko'ring:
type gityozilsa, natija "shell builtin" bo'ladimi yoki yo'lmi? Nega?
Javob
Yo'l bo'ladi — masalan git is /mingw64/bin/git yoki git is /usr/bin/git. Git — alohida o'rnatilgan dastur, u shell ichiga yozilmagan. Shell uni PATH'dagi papkalardan topadi.
5. Yordam olish
5.1 --help: buyruqning o'z yo'riqnomasi
Deyarli har bir buyruq --help flagini tushunadi:
ls --helpNatijaning boshi (Git Bash'da):
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).Birinchi qator — foydalanish sxemasi (usage). Uni o'qish qoidasi:
| Belgi | Ma'nosi |
|---|---|
[OPTION] |
Kvadrat qavs ichidagi narsa ixtiyoriy |
... |
Bir nechta bo'lishi mumkin |
| Katta harfdagi so'z | Uning o'rniga o'zingiz nimadir yozasiz |
Demak ls [OPTION]... [FILE]... — "ls, keyin istasangiz bir nechta flag, keyin istasangiz bir nechta fayl nomi". Ikkinchi qator: "FILE'lar haqida ma'lumot chiqaradi (sukut bo'yicha — joriy papka)".
Pastroqda flaglar ro'yxati keladi:
-a, --all do not ignore entries starting with .
-l use a long listing format
-S sort by file size, largest firstChapda flag (qisqa va uzun shakli), o'ngda qisqa izohi. -S — "hajm bo'yicha tartibla, eng kattasi birinchi".
Ichki buyruqlar uchun bash'da help buyrug'i bor: help cd.
5.2 man: to'liq qo'llanma
Linux va macOS'da har bir buyruqning to'liq qo'llanmasi (manual) bor:
man lsQo'llanma butun oynani egallaydi. Boshqaruv:
| Tugma | Nima qiladi |
|---|---|
↓ / ↑ |
Bir qator pastga / yuqoriga |
Space |
Keyingi sahifa |
/so'z va Enter |
Matndan so'z ni qidiradi, n — keyingisi |
q |
Chiqish |
Diqqat: Git Bash'da
manyo'q —bash: man: command not foundchiqadi (biz tekshirdik). Windows'da--helpdan foydalaning yokimanni WSL ichida oching.
5.3 tldr: eng kerakli misollar
man sahifalari uzun va inglizcha. Shuning uchun hamjamiyat tldr loyihasini yaratgan. Nomi internet iborasidan: "Too Long; Didn't Read" — "juda uzun, o'qimadim". U har buyruq uchun eng ko'p ishlatiladigan 5–8 ta tayyor misolni ko'rsatadi.
tldr alohida o'rnatiladi: macOS'da brew install tlrc, boshqa tizimlarda ham paket menejerlari orqali. O'rnatmasdan ham ishlatsa bo'ladi: tldr.sh saytida buyruq nomini qidiring.
tldr ls5.4 Boshqa yordamchilar
- explainshell.com — buyruqni to'liqligicha joylaysiz, sayt har bir bo'lagini alohida tushuntiradi.
- PowerShell'da:
Get-Help Get-ChildItemyokiwinget --help. - Xato matnini qidirish. Xatoni aynan nusxalab qidiruvga bering — kimdir uni allaqachon hal qilgan bo'ladi. Buni Dasturchi ingliz tili darsida mashq qilamiz.
Tekshirib ko'ring:
mkdir --helpning birinchi qatoriUsage: mkdir [OPTION]... DIRECTORY.... Papka nomini berish majburiymi?
Javob
Ha, majburiy. DIRECTORY kvadrat qavsda emas — demak uni tashlab ketib bo'lmaydi. Oxiridagi ... esa bir nechta papka nomini birdaniga berish mumkinligini bildiradi. [OPTION]... — flaglar ixtiyoriy.
6. Ko'p uchraydigan xatolar
6.1 Uzun flagga bitta chiziqcha
ls -helpGit Bash'da:
ls: unknown option -- e
Try 'ls --help' for more information.Linux'da xuddi shu xato ls: invalid option -- 'e' ko'rinishida chiqadi. Tarjimasi: "noma'lum flag: e". Nega aynan e? Bitta chiziqcha bo'lgani uchun ls -help ni to'rtta qisqa flag deb o'qidi: -h, -e, -l, -p. -h unga tanish, e esa yo'q — birinchi notanish harfda to'xtadi. Qoida: xatodagi bitta harf — ko'pincha "ikki chiziqcha qo'yishni unutdingiz" degani. To'g'risi: ls --help.
git da ham shunday: git -help → unknown option: -help. To'g'risi: git --help.
Maslahat:
ls -allham xato —--allbo'lishi kerak edi. Lekin u tasodifan ishlaydi:lsuni-a,-l,-ldeb o'qiydi. Ishladi deb aldanmang — boshqa buyruqda bunday omad bo'lmaydi.
6.2 Bo'sh joyli nomni qo'shtirnoqsiz yozish
ls mening rasmim — ikki alohida argument va ikki xato. Qo'shtirnoqqa oling: ls "mening rasmim". Yaxshisi — nomlarda bo'sh joy ishlatmang.
6.3 Git Bash'da man qidirish
bash: man: command not found — Git Bash'da man yo'q. ls --help ishlating.
6.4 PowerShell'dagi type
PowerShell'da type — butunlay boshqa buyruq: u faylning ichini chiqaradi (Get-Content ning qisqa nomi). type cd yozsangiz, cd degan faylni qidiradi. PowerShell'da buyruq turini bilish uchun Get-Command cd ishlatiladi. Bu farqlarni PowerShell darsida to'liq ko'ramiz.
6.5 man yoki --help ichida "qotib qolish"
Qo'llanma oynani to'liq egalladi va prompt yo'q. Qo'rqmang — q tugmasini bosing.
7. Mashqlar
1-mashq (oson): Bo'laklang
head -n 3 menyu.txt buyrug'ida:
- buyruq —
- flag —
- flagning qiymati —
- argument (fayl) —
Yechim
head — buyruq (fayl boshini ko'rsatadi). -n — "nechta qator" flagi, u o'zidan keyin qiymat oladi — 3. menyu.txt — qaysi fayl. Natija: menyu.txt ning dastlabki 3 qatori.
2-mashq (o'rta): Qisqasini va uzunini yozing
ls --help natijasidan olingan qatorlar:
-a, --all do not ignore entries starting with .
-r, --reverse reverse order while sorting
-R, --recursive list subdirectories recursivelyls -a -rni uzun flaglar bilan yozing.- Xuddi shuni birlashtirilgan qisqa flag bilan yozing.
ls -Rnima qiladi vals -rdan farqi nima?
Yechim
ls --all --reversels -ar(yokils -ra)ls -Richki papkalarni ham ichma-ich ko'rsatadi (recursive).ls -resa ro'yxatni teskari tartibda chiqaradi (reverse). Harf bir xil, faqat kattaligi farq qiladi — va ma'nosi butunlay boshqa.
3-mashq (qiyin): Yordamdan o'zingiz toping
Git Bash, WSL yoki macOS terminalida ls --help ni oching (macOS'da man ls). Quyidagi ikki flagni toping:
- fayllarni hajm bo'yicha tartiblaydigan flag;
- fayllarni o'zgartirilgan vaqti bo'yicha tartiblaydigan flag (eng yangisi birinchi).
Keyin joriy papkadagi hamma fayllarni (yashirinlari bilan) batafsil ro'yxatda, eng yangisi birinchi turadigan qilib chiqaradigan buyruqni yozing. Ishora: kerakli flaglar sort by so'zlari bilan boshlanadigan izohlarda.
Yechim
Yordamda shunday qatorlar bor:
-S sort by file size, largest first
-t sort by time, newest first; see --timeHajm bo'yicha — -S, vaqt bo'yicha — -t. Kerakli buyruq:
ls -lat-l — batafsil, -a — yashirinlari bilan, -t — eng yangisi birinchi. Bu mashqning asosiy maqsadi — flagni yodlash emas, uni yordamdan topa olish.
8. Real ishda
- Yangi vosita. Loyihaga yangi vosita qo'shilganda dasturchi avval
vosita --helpni ochadi. Masalan,git --help,npm --help,docker --help. Qolgani — tajriba. - Yo'riqnomalar. Loyiha hujjatlarida
npm run build -- --watchkabi uzun buyruqlar uchraydi. Anatomiyani bilsangiz, ularni bo'laklab tushunasiz, ko'r-ko'rona nusxalamaysiz. - Skriptlar. Jamoa skriptlarida uzun flaglar afzal ko'riladi (
--recursive,--force): kodni keyin o'qiydigan hamkasb uchun tushunarli. - Intervyu. "Buyruqning qaysi flagi nima qilishini bilmasangiz, nima qilasiz?" — yaxshi javob: "
--help,manyokitldrga qarayman". Hamma narsani yoddan bilish shart emas.
Xulosa
- Buyruq = nom + flaglar + argumentlar, ular bo'sh joy bilan ajratiladi.
- Qisqa flag:
-l, birlashtirsa bo'ladi (-lah); uzun flag:--all. Harf kattaligi muhim:-r≠-R. - Nomda bo'sh joy bo'lsa — qo'shtirnoq:
"mening rasmim". cd,pwd,echo— shell ichidagi buyruqlar;ls,git,node— PATH'dan topiladigan dasturlar. Bunitypeko'rsatadi.- Yordam:
--help(hamma joyda),man(Linux, macOS; chiqish —q),tldr(tayyor misollar). unknown option -- ekabi xato — ko'pincha uzun flagga bitta chiziqcha qo'yilgan.
Keyingi dars: Terminalda harakatlanish — pwd, ls va cd bilan papkalar bo'ylab yurishni va Tab tugmasi bilan tez yozishni o'rganamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!