Terminal va shell — buyruq tuzilishi, bayroqlar, tarix

~12 daq · Linux · Kirish

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 -la kabi yozuvlarni ko'rasiz. $ — prompt ni bildiradi, uni yozmaysiz. Faqat ls -la ni 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