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

PowerShell asoslari: cmdlet, obyektlar va bash bilan farqi

Qisqacha: PowerShell — Windows'ning zamonaviy shell'i. Uning buyruqlari (cmdlet) "Fe'l-Ot" shaklida nomlanadi: Get-ChildItem — "papka ichidagilarni ol". Bash'dan asosiy farqi: pipe orqali matn emas, obyektlar uzatiladi — shuning uchun Where-Object Length -gt 1000 kabi ustunlar bo'yicha filtrlash oson. running scripts is disabled xatosi bir marta Set-ExecutionPolicy RemoteSigned -Scope CurrentUser bilan hal bo'ladi.

Bu darsda

  • cmd, Windows PowerShell 5.1, PowerShell 7 va Git Bash — qaysi biri nima ekanini ajrata olasiz.
  • Cmdlet nomini (Get-ChildItem) o'qiy olasiz va kerakli buyruqni Get-Command, Get-Help bilan topasiz.
  • PowerShell pipe'i matn emas, obyektlar uzatishini misolda ko'rasiz: Where-Object, Sort-Object, Select-Object.
  • $env: bilan muhit o'zgaruvchilarini o'qiysiz va yaratasiz.
  • running scripts is disabled xatosini tushunib, xavfsiz tarzda hal qilasiz.
  • Kundalik bash buyruqlarining PowerShell'dagi juftini jadvaldan topasiz.

Oldin bilishingiz kerak: Terminal, shell va prompt, Muhit o'zgaruvchilari va PATH, Jarayonlar va band portlar.

1. Nega bu kerak?

Bu kursda buyruqlarni bash'da yozyapmiz — serverlarda aynan u ishlaydi. Lekin Windows kompyuteringizda terminal ochsangiz, ko'pincha birinchi PowerShell ochiladi. VS Code'ning ichki terminali ham Windows'da odatda PowerShell.

Oldingi darslarda uning "qirralari" bilan to'qnashdik:

  • ls -la → A parameter cannot be found that matches parameter name 'la'.
  • && → The token '&&' is not a valid statement separator in this version.
  • > bilan yozilgan fayl UTF-16 kodlashda chiqdi.
  • Port egasini topish uchun Get-NetTCPConnection va Stop-Process kerak bo'ldi.

Bular tasodif emas — PowerShell boshqa g'oya asosida qurilgan. Uni tushunsangiz, Windows'da xatolardan qo'rqmaysiz va kerak bo'lganda uning kuchidan foydalanasiz. Bundan tashqari, npm ni birinchi marta PowerShell'da ishga tushirganda ko'pchilik bitta mashhur qizil xatoga duch keladi — uni ham shu darsda hal qilamiz.

2. Windows'dagi to'rtta terminal

2.1 Kim kim?

Nomi Nima Ishga tushirish
cmd 1980-yillardan qolgan eski buyruq qatori cmd
Windows PowerShell 5.1 Windows'da tayyor keladigan PowerShell powershell
PowerShell 7 Yangi, ochiq kodli PowerShell pwsh
Git Bash Windows uchun moslangan bash Git bilan keladi

Windows PowerShell 5.1 endi yangilanmaydi — faqat tuzatishlar oladi. Yangi imkoniyatlar faqat PowerShell 7 ga qo'shiladi. U Windows, macOS va Linux'da ishlaydi. O'rnatish — winget bilan:

powershell
winget install --id Microsoft.PowerShell -e

Versiyani tekshirish:

powershell
$PSVersionTable.PSVersion

Major ustunida 5 yoki 7 ko'rinadi.

2.2 Qaysi birini qachon?

  • Kurs buyruqlari (ls, grep, export) — Git Bash yoki WSL. Serverda ham xuddi shunday yozasiz.
  • Windows'ning o'zini boshqarish (jarayonlar, xizmatlar, portlar, sozlamalar) — PowerShell.
  • cmd — faqat eski yo'riqnomalarda uchraydi. Yangi ish uchun kerak emas.

Qaysi shell'dasiz — promptga qarang: PS C:\Users\Ali> — PowerShell (PS harflari), C:\Users\Ali> — cmd, $ — bash.

Maslahat: Windows 11 da yana bir nom uchraydi — Windows Terminal. Bu jadvaldagi beshinchi shell emas. Terminal darsidan eslang: terminal — oyna, shell — uning ichida buyruqni tushunadigan dastur. Windows Terminal — shunday oyna: uning varaqlarida (tab) PowerShell, cmd yoki Git Bash'ni yonma-yon ochish mumkin.

Tekshirib ko'ring: Malika VS Code'da terminal ochdi va PS D:\loyiha> ni ko'rdi. U export PORT=3000 yozsa nima bo'ladi?

Javob

Xato chiqadi: export — bash buyrug'i, PowerShell uni tanimaydi. PowerShell'da bu $env:PORT = "3000" bo'ladi. Yoki VS Code'da terminal turini Git Bash'ga almashtirish mumkin.

3. Cmdlet: "Fe'l-Ot" nomlari

3.1 Nomi qanday tuzilgan

PowerShell'ning o'z buyruqlari cmdlet ("kommandlet" — kichik buyruq) deyiladi. Har birining nomi ikki qismdan iborat: fe'l — nima qilish, ot — nima ustida. O'rtada chiziqcha.

Cmdlet Fe'l Ot Ma'nosi
Get-ChildItem Get (ol) ChildItem (ichidagilar) Papka ichini ko'rsat
Set-Location Set (o'rnat) Location (joy) Papkaga o't
New-Item New (yangi) Item (narsa) Fayl/papka yarat
Remove-Item Remove (olib tashla) Item O'chir
Get-Process Get Process (jarayon) Jarayonlar ro'yxati
Stop-Process Stop (to'xtat) Process Jarayonni to'xtat

Nomlar uzun, lekin bashoratli. Fe'llar ro'yxati cheklangan va hamma joyda bir xil: Get, Set, New, Remove, Start, Stop. "Xizmatni to'xtatish" kerakmi? Stop- + Service = Stop-Service. Taxmin qilsangiz — ko'pincha to'g'ri chiqadi.

Harf kattaligi muhim emas: get-childitem ham ishlaydi. Tab tugmasi ham yordam beradi: Get-Ch + Tab → Get-ChildItem.

3.2 Parametrlar — to'liq so'zlar

Bash'da flaglar qisqa harflar edi: -r, -a. PowerShell'da parametrlar to'liq so'zlar:

powershell
Get-ChildItem -Recurse -Filter *.txt

"Ichki papkalar bilan birga (-Recurse), faqat .txt fayllarni (-Filter) ko'rsat". Parametr nomini qisqartirish mumkin, agar u boshqasi bilan adashmasa (-Rec). Lekin to'liq yozish odati yaxshi — kodni o'qigan odam darhol tushunadi.

3.3 Birinchi buyruqlar

PowerShell'ni oching va mashq papkasini yarating:

powershell
New-Item -ItemType Directory choyxona
Set-Location choyxona
New-Item -ItemType File menyu.txt
Get-ChildItem
text
    Directory: C:\Users\Ali\choyxona

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        27.09.2026     20:04              0 menyu.txt

Mode ustunidagi d — papka, a — oddiy fayl. Sana ko'rinishi kompyuteringiz sozlamalariga bog'liq.

3.4 Alias'lar: tanish nomlar

PowerShell yangi foydalanuvchilarga tanish nomlarni ham beradi. Bu oldingi darslardagi alias ning o'zi:

powershell
Get-Alias ls, cd, cat, rm, ps, kill
text
CommandType     Name
-----------     ----
Alias           ls -> Get-ChildItem
Alias           cd -> Set-Location
Alias           cat -> Get-Content
Alias           rm -> Remove-Item
Alias           ps -> Get-Process
Alias           kill -> Stop-Process

(Chiqish qisqartirildi.) Shuning uchun PowerShell'da ls va cd ishlaydi. Lekin bu faqat nom o'xshashligi. Flaglar bash'nikiga o'xshamaydi: ls -la ishlamaydi, chunki Get-ChildItem da -la degan parametr yo'q. Bash'dagi ls -a ning PowerShell'dagi jufti — Get-ChildItem -Force (yashirin fayllar ham).

3.5 Yordam: Get-Command va Get-Help

Kerakli cmdlet'ni qanday topish mumkin? Ot bo'yicha qidirasiz:

powershell
Get-Command -Noun Process

Jarayonlar bilan ishlaydigan barcha cmdlet'lar chiqadi: Get-Process, Stop-Process, Start-Process va boshqalar. Tanlaganingiz haqida yordam:

powershell
Get-Help Stop-Process -Examples

-Examples — faqat tayyor misollar, xuddi bash'dagi tldr kabi. Birinchi marta ishga tushirganda PowerShell to'liq yordam o'rnatilmaganini aytishi mumkin — Update-Help buyrug'i uni yuklab oladi (administrator huquqi so'rashi mumkin).

Tekshirib ko'ring: Fayl ichidagi matnni o'qiydigan cmdlet qanday nomlanishi mumkin? Fe'l va otni taxmin qiling.

Javob

Get-Content — "mazmunni ol". Fe'l Get (olish), ot Content (mazmun). Uning alias'i — tanish cat. Taxmin qilishning o'zi PowerShell'ni o'rganishning yarmi.

4. Asosiy farq: matn o'rniga obyektlar

4.1 Bash'da pipe — matn

Pipe darsida ko'rdik: bash'da | orqali matn qatorlari oqadi. ls -l natijasidan fayl hajmini olish uchun qatorni bo'laklash, kerakli ustunni "kesib olish" kerak. Ustunlar joyi o'zgarsa — skript buziladi.

4.2 PowerShell'da pipe — obyektlar

Obyekt (object) — bitta narsa haqidagi ma'lumotlar to'plami, har bir ma'lumot o'z nomi bilan. O'xshatish: pasport. Unda "Ism", "Tug'ilgan sana", "Seriya" degan maydonlar bor. Tug'ilgan sanani bilish uchun butun pasportni o'qib chiqmaysiz — "Tug'ilgan sana" maydoniga qaraysiz.

Obyektning har bir maydoni xususiyat (property) deyiladi. PowerShell'da Get-ChildItem har bir fayl uchun ana shunday "pasport" beradi. Ekranda jadval ko'rinadi, lekin xotirada har qator — xususiyatlari bor obyekt:

Xususiyat Ma'nosi Misol
Name Nomi menyu.txt
Length Hajmi, baytda 18
Extension Kengaytmasi .txt
LastWriteTime Oxirgi o'zgarish vaqti sana va soat

Bitta xususiyatni nuqta bilan olasiz:

powershell
(Get-Item menyu.txt).Name
(Get-Item menyu.txt).Extension
text
menyu.txt
.txt

Get-Item — bitta narsani oladi. Qavs "avval buni bajar" degani, nuqta esa "natijaning shu xususiyatini ol". Obyektning barcha xususiyatlarini Get-Member ko'rsatadi: Get-Item menyu.txt | Get-Member.

JavaScript'da ham obyektlar va nuqta bilan murojaat xuddi shunday ishlaydi — kursda keyinroq ko'rasiz. PowerShell bilan tanishish uni tushunishni osonlashtiradi.

4.3 Obyektlar bilan konveyer

Mashq uchun papkaga turli hajmdagi fayllar qo'shamiz. Set-Content faylga matn yozadi, "x" * 1500 esa x harfini 1500 marta takrorlaydi:

powershell
Set-Content narxlar.txt ("x" * 1500)
Set-Content chek.txt ("y" * 300)

Endi uchta cmdlet — bash'dagi grep, sort va head larning obyektli jufti:

Cmdlet Nima qiladi Bash'dagi yaqin juftligi
Where-Object Shartga mos obyektlarni qoldiradi grep
Sort-Object Xususiyat bo'yicha tartiblaydi sort
Select-Object Kerakli xususiyatlar yoki soni head, cut

"Hajmi 1000 baytdan katta fayllar":

powershell
Get-ChildItem -File | Where-Object Length -gt 1000
text
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        27.09.2026     20:04           1502 narxlar.txt

-gt — "greater than", ya'ni "katta". PowerShell'da taqqoslash so'zlar bilan yoziladi: -gt (katta), -lt (kichik), -eq (teng). Nega > emas? Chunki > allaqachon "faylga yozish" uchun band.

Hajmi 1502 — biz 1500 ta harf yozgan edik. Qo'shimcha 2 bayt — Set-Content qo'shgan qator oxiri (CRLF, qator oxiri darsidan).

"Fayllarni hajmi bo'yicha, kattasi tepada, faqat nomi va hajmi":

powershell
Get-ChildItem -File |
  Sort-Object Length -Descending |
  Select-Object Name, Length
text
Name        Length
----        ------
narxlar.txt   1502
chek.txt       302
menyu.txt        0

Hech qanday matn kesish yo'q. Ustunni joyi bo'yicha emas, nomi bo'yicha tanlaymiz: Length. Buyruq uch qatorga bo'lindi — qator | bilan tugasa, PowerShell ham davomini kutadi.

flowchart LR
  A["Get-ChildItem<br/>fayl obyektlari"] --> B["Sort-Object Length<br/>hajm bo'yicha"]
  B --> C["Select-Object Name, Length<br/>ikki xususiyat"]
  C --> D["Ekranda jadval"]

Tekshirib ko'ring: Get-ChildItem -File | Where-Object Length -eq 0 nimani ko'rsatadi?

Javob

Hajmi aynan 0 bayt bo'lgan fayllarni — ya'ni bo'sh fayllarni. Bizning papkada bu menyu.txt (uni New-Item bilan bo'sh yaratgan edik). -eq — "teng".

5. Muhit o'zgaruvchilari: $env:

Muhit o'zgaruvchilari darsidagi muhit o'zgaruvchilari PowerShell'da $env: bilan boshlanadi:

powershell
$env:USERNAME
$env:PORT = "3000"
$env:PORT
text
Ali
3000
Vazifa bash PowerShell
O'qish echo $HOME $env:USERPROFILE
Yaratish export PORT=3000 $env:PORT = "3000"
Hammasi env Get-ChildItem Env:
PATH echo $PATH $env:Path

E'tibor bering: PowerShell'da = atrofida bo'sh joy mumkin, qiymat esa qo'shtirnoqda. Bash'dagi qoidaning aksi.

$env:PORT = "3000" faqat shu oyna uchun — xuddi bash'dagi export kabi. Doimiy qilish uchun PowerShell'ning sozlama fayli bor. Uning yo'lini $PROFILE o'zgaruvchisi ko'rsatadi — bu bash'dagi .bashrc ning jufti:

powershell
$PROFILE
Test-Path $PROFILE
text
C:\Users\Ali\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
False

Test-Path — "shu yo'lda fayl bormi?" deb so'raydi. False — fayl hali yo'q: PowerShell yo'lni tayyorlab qo'ygan, faylni esa siz yaratasiz. PowerShell 7 da yo'l boshqacha (Documents\PowerShell\...) — har versiyaning o'z sozlama fayli bor. E'tibor bering: kengaytmasi .ps1, ya'ni bu skript. Keyingi bo'limdagi taqiq unga ham tegishli.

Diqqat: Internetda PATH'ni o'zgartirish uchun setx PATH ... maslahatini uchratasiz. Uni ishlatmang: setx uzun qiymatni 1024 belgida kesib tashlaydi va PATH buziladi. PATH'ni Windows sozlamalari oynasi orqali o'zgartiring (paket menejerlari darsida ko'rsatilgan).

6. Execution Policy: "running scripts is disabled"

6.1 Xato

PowerShell skripti — .ps1 kengaytmali, ichida PowerShell buyruqlari yozilgan fayl. Yangi Windows kompyuterda siz birinchi skriptni ishga tushirasiz yoki Node.js o'rnatib, npm yozasiz — va shunday xato chiqadi:

text
npm : File C:\Program Files\nodejs\npm.ps1 cannot be loaded
because running scripts is disabled on this system.
For more information, see about_Execution_Policies at ...

Tarjimasi: "npm.ps1 faylini yuklab bo'lmaydi, chunki bu tizimda skriptlarni ishga tushirish o'chirilgan". Nega npm skript bo'lib chiqdi? Windows'da npm buyrug'ining PowerShell uchun varianti aynan npm.ps1 fayli.

6.2 Nega bloklangan?

Execution Policy (bajarish siyosati) — PowerShell qaysi skriptlarni ishga tushirishga ruxsat berishini belgilaydigan sozlama. Windows'ning oddiy (server bo'lmagan) versiyalarida u odatda Restricted — "hech qanday skript yo'q". Sabab: foydalanuvchi internetdan yuklangan zararli .ps1 faylni bilmasdan ochib yubormasin.

Joriy holatni ko'rish:

powershell
Get-ExecutionPolicy
text
Restricted

6.3 Yechim

Faqat sizning foydalanuvchingiz uchun, xavfsiz darajani yoqamiz:

powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

PowerShell tasdiq so'raydi — Y bosing. Bo'laklaymiz:

  • RemoteSigned — o'z kompyuteringizda yozilgan skriptlar ishlaydi. Internetdan yuklanganlari esa faqat ishonchli imzo (raqamli "muhr") bilan ishlaydi.
  • -Scope CurrentUser — faqat sizning hisobingiz uchun. Administrator huquqi kerak emas, boshqa foydalanuvchilarga ta'sir qilmaydi.

Windows 11 sozlamalarining "For developers" (dasturchilar uchun) bo'limida ham PowerShell skriptlariga ruxsat beruvchi tugma bor — u xuddi shu ishni qiladi. PowerShell 7 da esa odatiy siyosat Windows'da allaqachon RemoteSigned.

Diqqat: Internetda "Set-ExecutionPolicy Unrestricted" yoki "Bypass" maslahatlarini ko'rasiz. Bu — himoyani butunlay o'chirish. RemoteSigned yetarli va xavfsizroq.

Tekshirib ko'ring: Nega -Scope CurrentUser administrator huquqisiz ishlaydi, -Scope LocalMachine esa administrator talab qiladi?

Javob

CurrentUser — faqat sizning sozlamangiz, u sizning hisobingiz ichida saqlanadi. LocalMachine esa kompyuterdagi barcha foydalanuvchilarga ta'sir qiladi. Fayl ruxsatlari darsidagi qoida: hammaga ta'sir qiladigan o'zgarish — faqat administrator huquqi bilan.

7. Buyruqlar jadvali: bash ↔ PowerShell

Kundalik vazifalar uchun qisqa lug'at. PowerShell ustunida to'liq nom, qavsda — alias.

Vazifa bash PowerShell
Qayerdaman pwd Get-Location (pwd)
Papka ichi ls -la Get-ChildItem -Force (ls)
Papkaga o'tish cd papka Set-Location papka (cd)
Fayl yaratish touch f.txt New-Item f.txt
Papka yaratish mkdir -p a/b New-Item -ItemType Directory a/b
Faylni o'qish cat f.txt Get-Content f.txt (cat)
Vazifa bash PowerShell
Nusxalash cp -r a b Copy-Item a b -Recurse
O'chirish rm -rf papka Remove-Item papka -Recurse -Force
Matn qidirish grep -rn "so'z" . Select-String "so'z" -Path *.txt
Jarayonlar ps Get-Process (ps)
To'xtatish kill 1234 Stop-Process -Id 1234
Ekranni tozalash clear Clear-Host (cls)

Jadval ikkiga bo'lindi — telefonda o'qish oson bo'lishi uchun.

Select-String — bash'dagi grep ning jufti. U odatda harf kattaligiga qaramaydi (bash'dagi grep -i kabi). Sinash uchun menyu.txt ga uch qator yozamiz — Set-Content vergul bilan berilgan har bir qiymatni alohida qatorga yozadi:

powershell
Set-Content menyu.txt "Osh", "Somsa", "Choy"
Select-String "choy" -Path menyu.txt
text
menyu.txt:3:Choy

Natija grep -n ga o'xshaydi: fayl, qator raqami, qator. Biz kichik harf bilan choy qidirdik — Choy baribir topildi.

Maslahat: PowerShell'da xavfli buyruqni bajarishdan oldin -WhatIf qo'shing: Remove-Item papka -Recurse -WhatIf. PowerShell hech narsani o'chirmaydi, faqat "nima bo'lardi" deb yozadi: What if: Performing the operation "Remove Directory".... Bash'da bunday tayyor himoya yo'q.

8. Ko'p uchraydigan xatolar

8.1 ls -la va boshqa bash flaglari

text
Get-ChildItem : A parameter cannot be found that matches parameter
name 'la'.

"la nomli parametr topilmadi". ls — Get-ChildItem ning alias'i, u bash flaglarini tanimaydi. Tuzatish: Get-ChildItem -Force yoki Git Bash.

8.2 curl — boshqa dastur

Windows PowerShell 5.1 da curl — Invoke-WebRequest cmdlet'ining alias'i, haqiqiy curl emas. Internetdagi curl -I https://example.com misoli shunday xato beradi:

text
Invoke-WebRequest : Cannot process command because of one or more
missing mandatory parameters: Uri.

"Majburiy Uri parametri yetishmayapti" — -I ni PowerShell boshqa parametr deb tushundi va manzilni o'shanga berib yubordi. Tuzatish: haqiqiy dasturni kengaytmasi bilan chaqiring — curl.exe -I https://example.com (Windows 10 va 11 da tayyor bor). PowerShell 7 da bu alias olib tashlangan.

8.3 where git jim turadi

Bash'dagi which o'rniga Windows'da where bor — lekin PowerShell'da where — Where-Object ning alias'i. where git hech narsa chiqarmaydi. Tuzatish: where.exe git yoki Get-Command git.

8.4 Skriptni nomi bilan chaqirish

Joriy papkadagi salom.ps1 ni salom.ps1 deb chaqirsangiz:

text
salom.ps1 : The term 'salom.ps1' is not recognized as the name of
a cmdlet, function, script file, or operable program.

PowerShell xavfsizlik uchun joriy papkadan skriptni faqat yo'l bilan ishga tushiradi — bash'dagi ./skript.sh kabi. Konsolda xato ostida maslahat ham chiqadi: If you trust this command, instead type: ".\salom.ps1". Tuzatish: .\salom.ps1.

8.5 && va > farqlari

Oldingi darslarda ko'rganlarimizni eslaymiz: && va || faqat PowerShell 7 da ishlaydi. 5.1 da > faylni UTF-16 kodlashda yozadi. Ikkalasining yechimi bir xil: PowerShell 7 ni o'rnatish yoki bu vazifalarni Git Bash'da bajarish.

9. Mashqlar

1-mashq (oson): Nomni toping

Fe'l-Ot qoidasiga qarab cmdlet nomini yozing:

  • Jarayonlar ro'yxatini olish:
  • Yangi papka yoki fayl yaratish:
  • Joriy papkani ko'rsatish:
  • Faylni o'chirish:
Yechim
  • Get-Process — Get (ol) + Process (jarayon).
  • New-Item — New (yangi) + Item (narsa: fayl ham, papka ham). Turini -ItemType beradi.
  • Get-Location — Get + Location (joy). Alias'i — pwd.
  • Remove-Item — Remove (olib tashla) + Item. Alias'i — rm.

2-mashq (o'rta): Tarjima qiling

Quyidagi bash buyruqlarini PowerShell'ga "tarjima" qiling (7-bo'limdagi jadvaldan foydalaning):

bash
mkdir -p hisobot/yanvar
cd hisobot
export SHAHAR=Toshkent
echo $SHAHAR
Yechim
powershell
New-Item -ItemType Directory hisobot/yanvar
Set-Location hisobot
$env:SHAHAR = "Toshkent"
$env:SHAHAR
text
Toshkent

New-Item oraliq papkalarni o'zi yaratadi — -p kerak emas. PowerShell'da / ham, \ ham yo'l ajratgichi sifatida ishlaydi. O'zgaruvchini chiqarish uchun echo shart emas: shunchaki nomini yozsangiz, PowerShell qiymatini ekranga chiqaradi.

3-mashq (qiyin): Eng katta fayllar

choyxona papkasida (yoki istalgan papkada) PowerShell bilan quyidagini bitta konveyerda qiling: faqat fayllar, hajmi bo'yicha kattasi tepada, faqat eng katta 2 tasi, faqat Name va Length ustunlari.

Ishora: Select-Object ga -First 2 parametrini ham berish mumkin.

Yechim
powershell
Get-ChildItem -File |
  Sort-Object Length -Descending |
  Select-Object -First 2 Name, Length
text
Name        Length
----        ------
narxlar.txt   1502
chek.txt       302

Bash'da xuddi shu ishni qilish uchun ls -l natijasidan hajm ustunini ajratib, sort -rn va head ishlatish kerak bo'lardi. PowerShell'da esa ustun nomi — Length — yetarli.

10. Real ishda

  • Windows'dagi dasturchi. Loyiha kodi Git Bash yoki WSL'da, Windows'ning o'zi bilan bog'liq ishlar (port, xizmat, jarayon) — PowerShell'da. Ikkalasini ham o'qiy olish kerak.
  • npm va execution policy. Node.js o'rnatgan deyarli har bir Windows foydalanuvchisi npm.ps1 cannot be loaded ga duch keladi. Endi siz uni bir buyruqda hal qilasiz.
  • Tizim administratorlari. Windows serverlar, Active Directory, Microsoft Azure bulutini boshqarish — asosan PowerShell skriptlari bilan.
  • Loyiha yo'riqnomalari. Ko'p README'larda buyruqlar ikki xil beriladi: "macOS/Linux" va "Windows (PowerShell)". Endi ularning farqini bilasiz.

Xulosa

  • Windows'da: cmd — eski, Windows PowerShell 5.1 — tayyor, PowerShell 7 (pwsh) — yangi, Git Bash — bash.
  • Cmdlet nomi — "Fe'l-Ot": Get-ChildItem, Stop-Process; topish — Get-Command, yordam — Get-Help -Examples.
  • PowerShell pipe'i obyektlar uzatadi: Where-Object Length -gt 1000, Sort-Object, Select-Object.
  • Muhit o'zgaruvchilari — $env:PORT = "3000"; sozlama fayli — $PROFILE.
  • running scripts is disabled → Set-ExecutionPolicy RemoteSigned -Scope CurrentUser.
  • ls, curl, where — PowerShell'da boshqa buyruqlarning alias'lari; bash flaglari ularda ishlamaydi.

Keyingi dars: Shell skript yozish asoslari — takrorlanadigan buyruqlarni bitta .sh faylga yig'ib, bitta buyruq bilan ishga tushirishni o'rganamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
PowerShell asoslari: cmdlet, obyektlar va bash bilan farqi — IlmHamroh