IlmHamroh
JavaScript Full-stack/1-qism. Kompyuter, fayllar va terminal29/40-dars16 daqiqa
Mundarija (31)

Zamonaviy CLI vositalari: bat, eza, zoxide, fzf, jq va Starship

Qisqacha: Zamonaviy CLI vositalari — klassik buyruqlarning qulayroq "yangi avlodi". bat faylni rangli ko'rsatadi (cat o'rniga), eza — rangli ro'yxat va daraxt (ls o'rniga), zoxide papkaga bitta so'z bilan sakraydi (cd o'rniga). Yana fzf taxminiy yozilgan nomni topadi, jq JSON'ni o'qiydi, Starship esa promptni foydali qiladi. Ular paket menejeri bilan o'rnatiladi, klassik buyruqlarni esa baribir bilish kerak.

Bu darsda

  • Klassik buyruqlarning zamonaviy muqobillarini taniysiz va ularni winget, brew yoki apt bilan o'rnata olasiz.
  • bat bilan faylni rangli va qator raqamlari bilan ko'rasiz, eza bilan papka daraxtini chizasiz.
  • zoxide ni .bashrc ga ulab, uzun yo'llarni yozmasdan papkaga sakraysiz.
  • fzf bilan nomini aniq eslamagan faylni topasiz, jq bilan JSON'dan kerakli qiymatni olasiz.
  • btop va Starship nima berishini bilasiz va eng ko'p uchraydigan o'rnatish xatolarini tuzata olasiz.

Oldin bilishingiz kerak: Dastur o'rnatish va paket menejerlari, Oqimlar, pipe va yo'naltirish, Muhit o'zgaruvchilari, PATH va shell sozlamalari.

1. Nega bu kerak?

Tasavvur qiling: har kuni ishga bir xil yo'ldan borasiz. Eski mashina ham sizni manzilga yetkazadi. Lekin navigatori bor mashinada yo'lni eslab yurish shart emas — u o'zi ko'rsatadi.

Terminalda ham shunday. Biz o'rgangan ls, cat, cd, top buyruqlari 1970–1980 yillarda yaratilgan. Ular ishonchli va hamma serverda bor. Lekin ba'zi ishlarda noqulay:

  • cat bilan kod faylini ochsangiz, hammasi bir rangda, qator raqamlari yo'q.
  • Chuqur papkaga borish uchun har safar cd ~/loyihalar/mijozlar/toshkent-sayt/src kabi uzun yo'l yoziladi.
  • Nomini aniq eslamagan faylni topish uchun find buyrug'ini to'g'ri tuzish kerak.

So'nggi yillarda dasturchilar shu buyruqlarning qulayroq muqobillarini yaratdi. Ular klassik buyruqlarni o'chirmaydi — yoniga qo'shiladi. Serverda ls va cat baribir kerak bo'ladi, shaxsiy kompyuteringizda esa ish tezroq va yoqimliroq ketadi.

Bu darsdagi vositalar majburiy emas. Keyingi darslar ularsiz ham tushunarli bo'ladi. Faqat jq ni o'rnatib qo'yishni maslahat beramiz — uni JSON darsida yana ishlatamiz.

2. Klassik va zamonaviy: umumiy manzara

2.1 Qaysi buyruq nimaga almashadi

Klassik Zamonaviy Nima qo'shadi
cat bat Ranglar, qator raqamlari
ls eza Ranglar, daraxt ko'rinishi
cd zoxide (z) Papkani eslab qoladi
find, Ctrl + R fzf Taxminiy yozuv bilan qidiruv
top htop, btop Grafik va rangli jarayonlar ro'yxati
— jq JSON'ni o'qish va filtrlash
oddiy prompt Starship Promptda foydali ma'lumot

Shu "yangi avlod"dan yana ikki vositani siz allaqachon ko'rgansiz. tldr — buyruq anatomiyasi darsida: man o'rniga qisqa misollar beradi. rg (ripgrep) — qidiruv darsida: grep ning tez muqobili.

Bu vositalarning ko'pi Rust yoki Go dasturlash tillarida yozilgan. Siz uchun buning ma'nosi bitta: ular juda tez ishlaydi va Windows, macOS, Linux'da bir xil buyruq bilan chaqiriladi.

2.2 O'rnatish

Hammasi paket menejeri bilan o'rnatiladi. Windows'da winget ning --id va -e (aniq moslik) flaglari bilan yozamiz:

powershell
winget install --id sharkdp.bat -e
winget install --id eza-community.eza -e
winget install --id ajeetdsouza.zoxide -e
winget install --id junegunn.fzf -e
winget install --id jqlang.jq -e
winget install --id Starship.Starship -e

macOS'da hammasi bitta qatorda:

bash
brew install bat eza zoxide fzf jq btop starship

Ubuntu (va WSL) da:

bash
sudo apt update
sudo apt install bat eza zoxide fzf jq btop

Nomlar 2026-yil holatida tekshirilgan. Uch nozik joy bor:

  • Ubuntu'da bat ning buyrug'i batcat. Nom boshqa paket bilan to'qnashgani uchun shunday qilingan. Xohlasangiz, alias qo'shing: alias bat='batcat'.
  • Starship Ubuntu'da rasmiy skript bilan o'rnatiladi: curl -sS https://starship.rs/install.sh | sh. Bu yerda curl o'rnatish skriptini internetdan yuklab oladi, | sh esa uni darhol bajaradi.
  • O'rnatgandan keyin terminalni yopib, qayta oching. Aks holda yangi dastur PATH da ko'rinmaydi.

Tekshirib ko'ring: Ubuntu'da bat ni o'rnatdingiz, lekin bat fayl.txt yozsangiz command not found chiqyapti. Nima uchun?

Javob

Ubuntu'da bu dastur batcat nomi bilan o'rnatiladi. batcat fayl.txt deb yozing yoki ~/.bashrc ga alias bat='batcat' qatorini qo'shing. Dastur o'rnatilgan, faqat nomi boshqacha.

3. bat — rangli cat

cat faylni shunchaki ekranga to'kib tashlaydi. bat esa uni kod muharriridagidek ko'rsatadi:

bash
bat salom.sh

Ekranda nima o'zgaradi:

  • Sintaksisni ranglash (syntax highlighting) — kalit so'zlar bir rangda, satrlar boshqa rangda, izohlar kulrangda. Rangli yozuvni ko'z tezroq "o'qiydi". bat 200 dan ortiq til va format ranglarini biladi.
  • Chap tomonda qator raqamlari chiqadi. Xato xabarida "5-qatorda xato" desa, darhol topasiz.
  • Yuqorida fayl nomi yoziladi.
  • Fayl uzun bo'lsa, bat uni less ichida ochadi. Chiqish — q tugmasi, xuddi less dagi kabi.

Yana ikki foydali flag:

bash
bat -p salom.sh    # -p (plain): ranglar qoladi, raqam va ramka yo'q
bat -A salom.sh    # -A (show all): ko'rinmas belgilarni ko'rsatadi

-A ayniqsa foydali. CRLF darsida Windows qator oxiriga ko'rinmas \r qo'yishini ko'rgan edik. bat -A bu belgilarni ko'zga ko'rinadigan qilib chiqaradi. Shunda ^M xatosi sababini bir qarashda topasiz.

4. eza — rangli ls va papka daraxti

eza — ls ning zamonaviy muqobili. Oddiy chaqirilsa, fayllarni turiga qarab bo'yaydi: papkalar bir rangda, rasmlar boshqa rangda.

Eng ko'p ishlatiladigan shakllari:

bash
eza -la                    # ls -la kabi: hammasi, batafsil
eza --tree --level=2       # papkalar daraxti, 2 qavat chuqurlikkacha
eza -l --git               # har fayl yonida Git holati

--tree natijasi taxminan shunday:

text
.
├── index.html
├── rasmlar
│   └── logo.png
└── style.css

Fayl tizimi darsida papkalar daraxti haqida gapirgan edik. eza --tree o'sha daraxtni terminalda chizib beradi. Loyiha tuzilmasini hamkasbingizga ko'rsatish uchun juda qulay.

--git flagi har fayl yonida uning Git'dagi holatini harf bilan ko'rsatadi: masalan, N — yangi (new), M — o'zgargan (modified). Git — kodning o'zgarishlar tarixini saqlaydigan dastur. Uni kursda alohida qismda o'rganamiz, hozir bilish shart emas.

Maslahat: Internetda exa nomini ham uchratasiz. Bu eza ning eski nomi: exa 2023-yilda yangilanmay qoldi, hamjamiyat uni eza nomi bilan davom ettirdi. Yangi o'rnatishda doim eza ni tanlang.

eza ni har kuni ishlatsangiz, alias qo'shish qulay:

bash
alias ll='eza -la --git'

Endi ll deb yozsangiz kifoya. Faqat alias ls='eza' qilishdan ehtiyot bo'ling: eza ning ba'zi flaglari ls nikidan farq qiladi va eski skriptlar kutilmagan natija berishi mumkin.

Tekshirib ko'ring: Hamkasbingiz "loyihangiz qanday tuzilgan?" deb so'radi. Qaysi buyruq papkalarni daraxt ko'rinishida, faqat 2 qavat chuqurlikkacha chiqaradi?

Javob

eza --tree --level=2. --tree daraxt chizadi, --level=2 esa chuqurlikni cheklaydi. Cheklov bo'lmasa, katta loyihada minglab qator chiqib ketadi.

5. zoxide — papkalarni eslab qoladigan cd

5.1 Qanday ishlaydi

zoxide siz kirgan har bir papkani eslab boradi. Qaysi papkaga ko'p va yaqinda kirgan bo'lsangiz, uning "bali" shuncha yuqori bo'ladi. Keyin yo'lning bir bo'lagini yozsangiz, eng yuqori balli mos papkaga o'tkazadi.

O'xshatish: taksi haydovchisi. Birinchi marta manzilni to'liq aytasiz: "Chilonzor, 9-kvartal, 15-uy". Keyingi safar "uyga" desangiz kifoya — u eslab qolgan.

bash
cd ~/loyihalar/mijozlar/toshkent-sayt/frontend  # 1-marta
cd ~                                             # uyga qaytdik
z frontend                                       # frontend'ga

Ko'ryapsizmi? Uchinchi qatorda to'liq yo'l yozilmadi. z "frontend" so'zi bor, eng ko'p ishlatilgan papkani o'zi topdi.

Muhim nuqta: zoxide faqat oldin kirgan papkangizni biladi. O'rnatgan zahoti z frontend desangiz, u hech narsa topmaydi. Bir-ikki kun odatdagidek cd bilan yuring — keyin z ishlay boshlaydi.

5.2 .bashrc ga ulash

zoxide o'rnatilgach, uni shell'ga "tanishtirish" kerak. Buning uchun ~/.bashrc fayli oxiriga bitta qator yoziladi (shell sozlamalari darsida bu faylni ko'rgan edik):

bash
echo 'eval "$(zoxide init bash)"' >> ~/.bashrc
source ~/.bashrc

Bu qatorni bo'laklab ko'ramiz:

  • zoxide init bash — zoxide bash uchun kerakli sozlama kodini ekranga chiqaradi.
  • $( ... ) — qavs ichidagi buyruq chiqargan matnni oladi.
  • eval — o'sha matnni xuddi siz yozgandek buyruq sifatida bajaradi. Natijada shell'da z va zi buyruqlari paydo bo'ladi.
  • >> — qatorni fayl oxiriga qo'shadi (oqimlar darsidan eslang: > faylni o'chirib yozadi, >> esa qo'shadi).
  • source ~/.bashrc — terminalni yopmasdan sozlamani qayta o'qiydi.

macOS'dagi zsh uchun bash o'rniga zsh va ~/.zshrc yoziladi. Deyarli barcha vositalar shu qolipda ulanadi, shuning uchun uni bir marta tushunib olsangiz, keyingilari oson ketadi.

flowchart LR
    A["Paket menejeri<br/>bilan o'rnatish"] --> B["~/.bashrc ga<br/>init qatori"]
    B --> C["source ~/.bashrc<br/>yoki yangi terminal"]
    C --> D["Yangi buyruq<br/>ishlaydi"]

Tekshirib ko'ring: zoxide o'rnatildi va .bashrc ga ulandi. Lekin z loyiha yozsangiz zoxide: no match found chiqyapti. Sababi nima bo'lishi mumkin?

Javob

zoxide hali bu papkani bilmaydi — siz unga o'rnatishdan keyin cd bilan hech kirmagansiz. Bir marta cd bilan to'liq yo'lni yozib kiring. Keyingi safar z loyiha ishlaydi. "No match found" — "mos kelgan narsa topilmadi" degani.

6. fzf — taxminiy qidiruv

6.1 "Fuzzy" nima degani

fzf (fuzzy finder — "taxminiy qidiruvchi") nomni aniq yozishni talab qilmaydi. Harflar to'g'ri tartibda kelsa, orasida boshqa harflar bo'lsa ham topadi.

Masalan, idxht deb yozsangiz, index.html topiladi: i, d, x, h, t harflari shu nomda aynan shu tartibda bor. Telefoningizdagi kontaktlar qidiruviga o'xshaydi — "Mlk" yozsangiz ham "Malika" chiqadi.

Oddiy ishlatilishi:

bash
fzf

Ekranda joriy papka va uning ichidagi barcha fayllar ro'yxati chiqadi. Yozishni boshlaysiz — ro'yxat har harfda qisqaradi. ↑/↓ bilan tanlaysiz, Enter bosasiz. fzf tanlangan fayl yo'lini ekranga chiqaradi va tugaydi. Chiqish — Esc.

6.2 Pipe bilan ishlatish

fzf ning kuchi — pipe bilan birga. U istalgan ro'yxatni oladi va undan birini tanlatadi:

bash
history | fzf          # oldingi buyruqlardan birini topish
cat "$(fzf)"           # topilgan faylni ochish

Ikkinchi qatorda $(fzf) — fzf tanlagan fayl yo'li. U cat ga argument bo'lib beriladi. Qo'shtirnoq nomda bo'sh joy bo'lsa ham to'g'ri ishlashi uchun kerak.

6.3 Klaviatura yorliqlarini yoqish

fzf bash'ga uchta qulay yorliq qo'sha oladi. ~/.bashrc ga shu qatorni yozing:

bash
eval "$(fzf --bash)"
Yorliq Nima qiladi
Ctrl + R Buyruqlar tarixidan taxminiy qidiruv
Ctrl + T Tanlangan fayl yo'lini buyruqqa qo'yadi
Alt + C Tanlangan papkaga cd qiladi

Terminalda harakatlanish darsida Ctrl + R ni ko'rgan edik. fzf bilan u ancha kuchliroq: butun ro'yxat ko'rinadi va taxminiy yozuv ishlaydi.

Diqqat: --bash flagi fzf ning 0.48 va undan yangi versiyalarida bor. Eski versiyada unknown option: --bash chiqadi. fzf --version bilan tekshiring. Masalan, Ubuntu 24.04 ning apt idagi fzf — 0.44. U yerda eval qatori o'rniga shu qatorni yozing: source /usr/share/doc/fzf/examples/key-bindings.bash.

Tekshirib ko'ring: fzf oynasida rsmlg deb yozdingiz. Ro'yxatda rasmlar/logo.png va readme.md bor. Qaysi biri qoladi?

Javob

rasmlar/logo.png. Unda r, s, m, l, g harflari aynan shu tartibda uchraydi (orasida boshqa harflar bo'lsa ham). readme.md da esa s harfi umuman yo'q.

7. jq — JSON bilan ishlash

JSON — dasturlar ma'lumot almashadigan matn formati. Uni JSON darsida to'liq o'rganamiz. Hozircha bilish kerak bo'lgani: server javoblari va sozlama fayllari ko'pincha JSON'da bo'ladi va ko'pincha bitta uzun qatorga siqilgan holda keladi.

Masalan, ob-havo.json faylida shunday qator bor:

json
{"shahar":"Toshkent","harorat":31,"shamol":4,"namlik":20}

To'rtta qiymat bo'lsa ham o'qish noqulay. Yuzta qiymat bir qatorga tiqilganini tasavvur qiling. jq uni chiroyli tartiblab beradi:

bash
jq . ob-havo.json

Natija:

text
{
  "shahar": "Toshkent",
  "harorat": 31,
  "shamol": 4,
  "namlik": 20
}

Bu yerda . (nuqta) — "butun hujjat" degani. Nuqtadan keyin nom yozsangiz, faqat o'sha qism chiqadi:

bash
jq '.shahar' ob-havo.json      # "Toshkent"
jq -r '.shahar' ob-havo.json   # Toshkent

-r (raw — "xom") flagi qo'shtirnoqlarni olib tashlaydi. Natijani boshqa buyruqqa uzatishda shunisi qulay. Filtrni bittalik qo'shtirnoqqa olish odat: shunda shell uning ichidagi belgilarni o'zgartirmaydi.

jq ning imkoniyatlari juda ko'p. Ichma-ich qiymatlar va ro'yxatlar bilan ishlashni JSON darsida ko'ramiz.

Tekshirib ko'ring: jq '.namlik' ob-havo.json nima chiqaradi? -r qo'shsangiz, natija o'zgaradimi?

Javob

20. -r qo'shsangiz ham 20 qoladi. -r faqat qo'shtirnoqni olib tashlaydi, son esa qo'shtirnoqsiz chiqadi. Farq faqat satrlarda ko'rinadi: "Toshkent" va Toshkent.

8. htop va btop — jarayonlar monitori

Jarayonlar darsida top buyrug'ini ko'rgan edik. U ishlaydi, lekin ekrani oq-qora va o'qish qiyin.

htop va btop xuddi shu ma'lumotni qulayroq ko'rsatadi:

  • Har bir protsessor yadrosi va xotira bandligi rangli chiziq (grafik) ko'rinishida.
  • Jarayonlarni o'qlar bilan tanlash, sichqoncha bilan bosish mumkin.
  • Ro'yxatni xotira yoki protsessor bo'yicha saralash oson.

htop da F9 — tanlangan jarayonni to'xtatish (kill), F10 yoki q — chiqish. btop da k — to'xtatish, q — chiqish. Ikkalasi ham Linux serverda ayniqsa foydali: "Server nega sekin?" savoliga birinchi qarash shu yerda bo'ladi.

Windows'da odatda Vazifalar menejeri (Task Manager, Ctrl + Shift + Esc) yetarli. btop ni Windows'da ham ishlatmoqchi bo'lsangiz, uning alohida btop4win versiyasi bor: winget install --id aristocratos.btop4win -e.

9. Foydali prompt: Starship va Oh My Zsh

9.1 Starship

Terminal darsida prompt nima ekanini ko'rgan edik: Ali@NOUTBUK MINGW64 ~ $. U faqat kimligingiz va qayerdaligingizni aytadi.

Starship — promptni "aqlli" qiladigan dastur. U kerak bo'lgan joyda qo'shimcha ma'lumot chiqaradi:

  • Joriy papka — qisqa va tushunarli ko'rinishda.
  • Git branch nomi (main) — agar papka Git loyihasi bo'lsa. Branch — loyihaning alohida ish "tarmog'i", Git bilan birga o'rganamiz.
  • Node.js yoki Python versiyasi — agar papkada shunday loyiha bo'lsa.
  • Oxirgi buyruq 2 soniyadan ko'p ishlagan bo'lsa — qancha vaqt olgani.
  • Oxirgi buyruq xato bilan tugasa — belgi qizil rangga kiradi. Bu exit code darsidagi $? ning ko'rinadigan shakli.

Ulash — xuddi zoxide dagidek, ~/.bashrc oxiriga bitta qator:

bash
eval "$(starship init bash)"

Starship bash, zsh va PowerShell'da bir xil ishlaydi. Shuning uchun uni boshlovchiga maslahat beramiz.

9.2 Oh My Zsh

Oh My Zsh — zsh shell'i uchun tayyor sozlamalar to'plami: ko'plab mavzular (theme) va qo'shimchalar (plugin). macOS'da standart shell — zsh, shuning uchun Mac foydalanuvchilari orasida mashhur. Bash va PowerShell'da ishlamaydi.

Tanlov oddiy: Starship yoki Oh My Zsh mavzusi. Ikkalasini bir vaqtda prompt uchun ishlatish shart emas — bir-birini bosib ketadi.

Tekshirib ko'ring: Siz Windows'da Git Bash, uyda esa macOS'da zsh ishlatasiz. Ikkala joyda bir xil prompt kerak. Starship yoki Oh My Zsh — qaysi biri mos?

Javob

Starship. U bash, zsh va PowerShell'da bir xil ishlaydi. Oh My Zsh esa faqat zsh uchun — Git Bash'da ishlamaydi.

9.3 Dotfiles: sozlamalarni ko'chirib yurish

Bu darsda ~/.bashrc ga bir nechta qator qo'shdik: zoxide, fzf, Starship, alias'lar. Endi tasavvur qiling: kompyuteringiz buzildi yoki yangisini oldingiz. Hammasini xotiradan qayta yozasizmi?

Fayl tizimi darsida nomi nuqta bilan boshlanadigan sozlama fayllari dotfiles deyilishini ko'rgan edik. Terminal sozlamalari ham shular qatorida: .bashrc, .zshrc, .gitconfig. Dasturchilar ularni bitta papkaga yig'ib, zaxira qilib qo'yadi. Eng oddiy usul — nusxa:

bash
mkdir -p ~/dotfiles
cp ~/.bashrc ~/dotfiles/

Yangi kompyuterda esa teskarisi: cp ~/dotfiles/.bashrc ~/. Ko'pchilik bu papkani GitHub'da saqlaydi — shunda istalgan kompyuterdan yuklab olsa bo'ladi. Git va GitHub'ni kursda alohida o'rganamiz.

Diqqat: Dotfiles'ni ochiq joyga yuklashdan oldin ichini tekshiring. .bashrc ga kimdir parol yoki token yozib qo'ygan bo'lishi mumkin: export API_KEY=.... Bunday qatorlar hech qachon ochiq joyga chiqmasin.

10. Ko'p uchraydigan xatolar

10.1 command not found — o'rnatgandan keyin ham

text
bash: eza: command not found

Tarjimasi: "eza degan buyruq topilmadi". Uch sabab bo'lishi mumkin:

  1. Terminal o'rnatishdan oldin ochilgan. U eski PATH bilan ishlayapti. Terminalni yopib, qayta oching.
  2. Ubuntu'da nom boshqacha: bat o'rniga batcat.
  3. O'rnatish aslida xato bilan tugagan. O'rnatish buyrug'ining oxirgi qatorlarini qayta o'qing.

10.2 .bashrc ni o'zgartirib, source qilmaslik

.bashrc ga eval "$(zoxide init bash)" yozdingiz, lekin z ishlamayapti. Ochiq terminal faylni faqat ishga tushganda o'qiydi. source ~/.bashrc bajaring yoki yangi terminal oching.

10.3 Belgilar o'rnida kvadratchalar

eza --icons yoki Starship ishlatganda ba'zi belgilar □ yoki ? bo'lib chiqadi. Sabab — shrift. Bu ikonkalar maxsus Nerd Font shriftlarida bor. nerdfonts.com saytidan bittasini (masalan, "JetBrainsMono Nerd Font") o'rnating. Keyin terminal sozlamalarida shriftni o'shanga almashtiring.

10.4 Serverda zamonaviy vositani kutish

Kompyuteringizda bat va eza ga o'rganib qoldingiz. Boshqa odamning serveriga ulandingiz — u yerda ular yo'q. Bunda sarosimaga tushmang: klassik cat, ls, cd hamma joyda bor. Aynan shuning uchun oldingi darslarda avval ularni o'rgandik.

11. Mashqlar

1-mashq (oson): bat bilan tanishuv

bat ni o'rnating. Shell skript darsida yozgan istalgan .sh faylingizni cat bilan, keyin bat bilan oching. Farqni ayting. So'ng bat -A bilan ochib, qator oxirida nima ko'rinishini tekshiring.

Yechim
bash
cat salom.sh
bat salom.sh
bat -A salom.sh

bat da kalit so'zlar rangli, chapda qator raqamlari, tepada fayl nomi bor. bat -A da har qator oxirida ␊ belgisi ko'rinadi — bu LF. Agar ␍␊ ko'rsangiz, fayl CRLF bilan saqlangan. Bunday skript Linux'da ^M xatosini beradi — CRLF darsidagi tuzatish usulini qo'llang.

2-mashq (o'rta): zoxide ni ishga tushirish

  1. zoxide ni o'rnating va ~/.bashrc ga ulang.
  2. mkdir -p bilan chuqur papka yarating: ~/mashq/toshkent/chilonzor/bozor. (-p — oraliq papkalarni ham yaratadi, fayllar darsidan eslang.)
  3. Unga bir marta cd bilan kiring, keyin cd ~ bilan uyga qayting.
  4. Endi faqat z bilan o'sha papkaga qayting.
Yechim
bash
echo 'eval "$(zoxide init bash)"' >> ~/.bashrc
source ~/.bashrc
mkdir -p ~/mashq/toshkent/chilonzor/bozor
cd ~/mashq/toshkent/chilonzor/bozor
cd ~
z bozor
pwd

pwd natijasida .../mashq/toshkent/chilonzor/bozor yo'li chiqadi. z bozor ishladi, chunki 4-qatorda siz o'sha papkaga bir marta kirdingiz va zoxide uni eslab qoldi. Agar no match found chiqsa, source ~/.bashrc bajarilganini tekshiring.

3-mashq (qiyin): jq va pipe

Yuqoridagi ob-havo.json faylini yarating (JSON qatorini nusxalab, faylga saqlang). Keyin:

  1. jq bilan faqat haroratni chiqaring.
  2. Shaharni qo'shtirnoqsiz chiqaring.
  3. jq . natijasini pipe orqali wc -l ga berib, chiroyli ko'rinishda nechta qator borligini sanang.
Yechim
bash
jq '.harorat' ob-havo.json        # 31
jq -r '.shahar' ob-havo.json      # Toshkent
jq . ob-havo.json | wc -l         # 6

Uchinchi buyruqda jq chiroyli matnni chiqaradi, | uni wc -l ga uzatadi, wc -l esa qatorlarni sanaydi. Faylning o'zida bitta qator bor edi, jq uni 6 qatorga yoydi: ochuvchi {, to'rtta qiymat va yopuvchi }. Natija boshqacha bo'lsa, JSON'ni nusxalashda biror qism tushib qolgan.

12. Real ishda

  • Kundalik ish. Ko'p dasturchilarning .bashrc yoki .zshrc faylida zoxide, fzf va Starship ulangan. Yangi kompyuter olganda ular birinchi bo'lib o'z dotfiles papkasini GitHub'dan yuklab oladi — 10 daqiqada tanish muhit tayyor.
  • Server bilan ishlash. jq API javoblarini tekshirishda har kuni kerak bo'ladi. btop yoki htop — "server nega sekin?" degan savolga birinchi qarash.
  • Loyiha tuzilmasini ko'rsatish. Hujjatlarda va savol-javob saytlarida eza --tree natijasini ko'p ko'rasiz.
  • Intervyu. Vositalar nomi so'ralmaydi. Lekin terminalda erkin ishlashingiz jonli kod yozish (live coding) intervyusida darhol seziladi.

Xulosa

  • Zamonaviy vositalar klassik buyruqlarni o'chirmaydi — qulayroq muqobil sifatida yoniga qo'shiladi.
  • bat — rangli cat (-A ko'rinmas belgilarni ko'rsatadi), eza — rangli ls va --tree daraxti.
  • zoxide papkalarni eslab qoladi: bir marta cd, keyin z nom.
  • fzf taxminiy qidiradi va pipe bilan ishlaydi; jq JSON'ni tartiblaydi va qiymat ajratadi.
  • zoxide, fzf va Starship .bashrc dagi eval "$(... init bash)" qatori bilan ulanadi, keyin source.
  • Sozlama fayllarini (dotfiles) bitta papkada zaxiralang — lekin ichida parol bo'lmasin.
  • Serverda bu vositalar bo'lmasligi mumkin — klassik buyruqlarni unutmang.

Shu dars bilan terminal moduli tugadi. Endi terminalda erkin ishlay olasiz.

Keyingi dars: Ko'r-ko'rona yozish va dasturchi belgilari — klaviaturaga qaramasdan yozishni va {}, [], ` kabi dasturchi belgilarini to'g'ri barmoq bilan terishni o'rganamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
Zamonaviy CLI vositalari: bat, eza, zoxide, fzf, jq va Starship — IlmHamroh