Terminal va shell — buyruq tuzilishi, bayroqlar, tarix
Muammodan boshlaylik
Terminalni ochdingiz:
otabek@DESKTOP-ABC123:~$
Bu nima? ~ nima, $ nima? Va eng muhimi — bu yerga nima yozish kerak? Ko'p yangi boshlovchilar shu nuqtada qo'rqib, oynani yopadi. Aslida qoidalar juda oddiy va izchil — ularni bir marta tushunsangiz, har qanday buyruqni o'qiy olasiz.
Terminal va shell — farqi
- Terminal — oyna: matnni ko'rsatadi va klaviaturani qabul qiladi (Windows Terminal, GNOME Terminal, iTerm)
- Shell — shu oyna ichida ishlaydigan dastur: buyruqlaringizni o'qiydi, tushunadi va bajaradi
Eng keng tarqalgan shell — bash. macOS da — zsh (bash ga juda o'xshash). Qaysi shell ishlayotganini bilish:
echo $SHELL
/bin/bash
Prompt — taklif qatori
otabek@DESKTOP-ABC123:~/projects$
└──┬─┘ └─────┬─────┘ └────┬───┘│
foydalanuvchi kompyuter papka belgi
~— uy papkangiz (/home/otabek)$— oddiy foydalanuvchi#— root (administrator) — ehtiyot bo'ling! (19-dars)
[!INFO] Hujjatlar va qo'llanmalarda
$ ls -lakabi yozuvlarni ko'rasiz.$— prompt ni bildiradi, uni yozmaysiz. Faqatls -lani yozasiz.
Buyruq tuzilishi
Har bir buyruq bir xil shaklga ega:
buyruq [bayroqlar] [argumentlar]
ls -l -a /etc
ls— buyruq (dastur nomi)-l -a— bayroqlar (options/flags) — buyruq qanday ishlashini o'zgartiradi/etc— argument — buyruq nima bilan ishlashini aytadi
Bo'shliq — ajratuvchi. Shuning uchun bo'shliqli nomlar qo'shtirnoqqa olinadi:
mkdir "Mening fayllarim"
Bayroqlar
Qisqa — bitta chiziqcha va bitta harf; birlashtirish mumkin:
ls -l -a -h
ls -lah # xuddi shu
Uzun — ikkita chiziqcha va so'z; o'qish oson, skriptlarda yaxshiroq:
ls --all --human-readable
Ko'p bayroqlar ikkala shaklda bor: -a = --all, -h = --human-readable.
Ba'zi bayroqlar qiymat oladi:
head -n 5 fayl.txt
head --lines=5 fayl.txt
Katta-kichik harf muhim
Linux da hamma narsa registrga sezgir:
ls # ✅
LS # ❌ command not found
Fayl.txt va fayl.txt — ikki turli fayl. -r va -R — turli bayroqlar.
Tarix va tezlashtirish
Hech kim buyruqlarni har safar to'liq yozmaydi.
| Tugma / buyruq | Nima qiladi |
|---|---|
| Tab | Avtoto'ldirish — buyruq, fayl, papka nomi. Eng muhim tugma! |
| Tab Tab | Barcha variantlarni ko'rsatish |
| ↑ / ↓ | Oldingi / keyingi buyruq |
| Ctrl + R | Tarixdan qidirish (yozing — topadi; yana Ctrl+R — keyingisi) |
history |
Barcha buyruqlar tarixi |
!! |
Oxirgi buyruqni takrorlash |
!45 |
Tarixdagi 45-buyruq |
apt update
# Permission denied...
sudo !! # = sudo apt update
[!TIP] Tab ni doim bosing. U yozishni tezlashtiradi va xatolarni oldini oladi: agar Tab nomni to'ldirmasa — demak bunday fayl yo'q yoki yo'l noto'g'ri.
Tahrirlash tugmalari
| Tugma | Nima |
|---|---|
| Ctrl + A / Ctrl + E | Qator boshiga / oxiriga |
| Ctrl + U | Kursordan oldingi hammasini o'chirish |
| Ctrl + W | Oldingi so'zni o'chirish |
| Ctrl + L | Ekranni tozalash (yoki clear) |
| Ctrl + C | Ishlayotgan buyruqni to'xtatish |
| Ctrl + D | Kiritishni tugatish / shelldan chiqish |
Ctrl + C — terminalda "nusxa olish" emas: u ishlayotgan dasturni to'xtatadi. Nusxa olish — Ctrl + Shift + C, qo'yish — Ctrl + Shift + V (Windows Terminal da sichqonchaning o'ng tugmasi ham).
Bir qatorda bir nechta buyruq
mkdir loyiha ; cd loyiha # ketma-ket, natijadan qat'i nazar
mkdir loyiha && cd loyiha # birinchisi muvaffaqiyatli bo'lsa
cd yoq-papka || echo "Papka yo'q" # birinchisi xato bo'lsa
&& — eng ko'p ishlatiladi: "agar oldingisi ishlasa, keyingisini bajar".
Har bir buyruq tugaganda chiqish kodi qaytaradi: 0 — muvaffaqiyat, boshqa son — xato:
ls /yoq
echo $?
ls: cannot access '/yoq': No such file or directory
2
&& va || aynan shu kodga qaraydi. Bu skriptlarda juda muhim (39-dars).
Xato xabarlarini o'qish
bash: gti: command not found
Buyruq nomida xato (git o'rniga gti) yoki dastur o'rnatilmagan.
ls: cannot access 'fayl.txt': No such file or directory
Yo'l noto'g'ri yoki fayl yo'q.
mkdir: cannot create directory '/opt/app': Permission denied
Ruxsat yo'q — 20-dars.
Xato xabarlarini o'qing — ular deyarli har doim nima noto'g'ri ekanini aniq aytadi.
Nima uchun shunday?
Nima uchun terminal muvaffaqiyatli buyruqdan keyin hech narsa yozmaydi?
Bu UNIX ning "jimlik qoidasi": aytadigan qiziq narsa bo'lmasa — jim tur. mkdir papka muvaffaqiyatli bo'lsa, "Papka muvaffaqiyatli yaratildi!" deb yozmaydi — shunchaki yangi prompt chiqadi. Bu boshida g'alati tuyuladi, lekin buyruqlarni zanjirga ulaganda (13-dars) juda muhim: bir dasturning chiqishi boshqasining kirishi bo'ladi, va keraksiz "muvaffaqiyat" xabarlari bu oqimni buzardi. Jimlik = hammasi joyida. Xato bo'lsa — albatta aytadi.
Xulosa
Eslab qoling:
- Terminal — oyna; shell (bash, zsh) — buyruqlarni bajaruvchi
- Prompt:
foydalanuvchi@kompyuter:papka$;~— uy papka;#— root - Buyruq:
buyruq -bayroqlar argumentlar; qisqa-la, uzun--all - Registr muhim:
Fayl≠fayl - Tab — avtoto'ldirish; ↑ — tarix; Ctrl+R — qidirish; Ctrl+C — to'xtatish
&&— oldingisi muvaffaqiyatli bo'lsa;$?— chiqish kodi (0 = OK)- Jimlik — muvaffaqiyat belgisi
Keyingi dars
4-dars: Yordam olish — man, --help, tldr, type