Mundarija (33)
- Bu darsda
- 1. Nega bu kerak?
- 2. Windows'dagi to'rtta terminal
- 2.1 Kim kim?
- 2.2 Qaysi birini qachon?
- 3. Cmdlet: "Fe'l-Ot" nomlari
- 3.1 Nomi qanday tuzilgan
- 3.2 Parametrlar — to'liq so'zlar
- 3.3 Birinchi buyruqlar
- 3.4 Alias'lar: tanish nomlar
- 3.5 Yordam: Get-Command va Get-Help
- 4. Asosiy farq: matn o'rniga obyektlar
- 4.1 Bash'da pipe — matn
- 4.2 PowerShell'da pipe — obyektlar
- 4.3 Obyektlar bilan konveyer
- 5. Muhit o'zgaruvchilari: $env:
- 6. Execution Policy: "running scripts is disabled"
- 6.1 Xato
- 6.2 Nega bloklangan?
- 6.3 Yechim
- 7. Buyruqlar jadvali: bash ↔ PowerShell
- 8. Ko'p uchraydigan xatolar
- 8.1 ls -la va boshqa bash flaglari
- 8.2 curl — boshqa dastur
- 8.3 where git jim turadi
- 8.4 Skriptni nomi bilan chaqirish
- 8.5 && va > farqlari
- 9. Mashqlar
- 1-mashq (oson): Nomni toping
- 2-mashq (o'rta): Tarjima qiling
- 3-mashq (qiyin): Eng katta fayllar
- 10. Real ishda
- Xulosa
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 uchunWhere-Object Length -gt 1000kabi ustunlar bo'yicha filtrlash oson.running scripts is disabledxatosi bir martaSet-ExecutionPolicy RemoteSigned -Scope CurrentUserbilan 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 buyruqniGet-Command,Get-Helpbilan 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 disabledxatosini 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-NetTCPConnectionvaStop-Processkerak 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:
winget install --id Microsoft.PowerShell -eVersiyani tekshirish:
$PSVersionTable.PSVersionMajor 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. Uexport PORT=3000yozsa 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:
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:
New-Item -ItemType Directory choyxona
Set-Location choyxona
New-Item -ItemType File menyu.txt
Get-ChildItem Directory: C:\Users\Ali\choyxona
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 27.09.2026 20:04 0 menyu.txtMode 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:
Get-Alias ls, cd, cat, rm, ps, killCommandType 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:
Get-Command -Noun ProcessJarayonlar bilan ishlaydigan barcha cmdlet'lar chiqadi: Get-Process, Stop-Process, Start-Process va boshqalar. Tanlaganingiz haqida yordam:
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:
(Get-Item menyu.txt).Name
(Get-Item menyu.txt).Extensionmenyu.txt
.txtGet-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:
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":
Get-ChildItem -File | Where-Object Length -gt 1000Mode 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":
Get-ChildItem -File |
Sort-Object Length -Descending |
Select-Object Name, LengthName Length
---- ------
narxlar.txt 1502
chek.txt 302
menyu.txt 0Hech 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 0nimani 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:
$env:USERNAME
$env:PORT = "3000"
$env:PORTAli
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:
$PROFILE
Test-Path $PROFILEC:\Users\Ali\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
FalseTest-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:setxuzun 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:
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:
Get-ExecutionPolicyRestricted6.3 Yechim
Faqat sizning foydalanuvchingiz uchun, xavfsiz darajani yoqamiz:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserPowerShell 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.RemoteSignedyetarli va xavfsizroq.
Tekshirib ko'ring: Nega
-Scope CurrentUseradministrator huquqisiz ishlaydi,-Scope LocalMachineesa 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:
Set-Content menyu.txt "Osh", "Somsa", "Choy"
Select-String "choy" -Path menyu.txtmenyu.txt:3:ChoyNatija 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
-WhatIfqo'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
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:
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:
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-ItemTypeberadi.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):
mkdir -p hisobot/yanvar
cd hisobot
export SHAHAR=Toshkent
echo $SHAHARYechim
New-Item -ItemType Directory hisobot/yanvar
Set-Location hisobot
$env:SHAHAR = "Toshkent"
$env:SHAHARToshkentNew-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
Get-ChildItem -File |
Sort-Object Length -Descending |
Select-Object -First 2 Name, LengthName Length
---- ------
narxlar.txt 1502
chek.txt 302Bash'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.
npmva execution policy. Node.js o'rnatgan deyarli har bir Windows foydalanuvchisinpm.ps1 cannot be loadedga 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.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!