Postitus, mis vihkab Mighty Shelli

Olen kunagi ammu kirjutanud ühe lihtsa skripti, mis kustutab määratud kataloogis kõik alamakataloogid, millel on antud nimed:

Remove-Item * -Force -Recurse -Include name1,name2,name3 -ErrorAction SilentlyContinue

Ma pole seda juba pikka aega kasutanud ja nüüd see vajaminevus tekib. Käivitan — midagi ei kustutatud.

WTF?, mõtlen. Hakkasin uurima. Olin pikkade seiklustega, luues eelnevalt nimekirja ja muutes nimesid — ikka ei kustuta midagi. Viimaks lugesin nende dokumentatsioonist: "Tegelikult -Include tõrkab, kui seda kasutatakse koos -Recurse'iga, nii et kasuta konksu konstruktsiooni.":

Kuna Recurse parameetril Remove-Item komandos on teadaolev probleem, kasutab selles näites käsk Get-ChildItem soovitud failide saamiseks ja seejärel kasutatakse toru operaatorit nende edastamiseks Remove-Item'ile.

Nojah, kirjutasin ümber kasutades seda konksu. Ühe sõnaga — ei kustuta midagi. Veelgi enam, Get-ChildItem koos -Include tagastab tühjuse. Taaskord, mida ma ainult ei teinud, kuidas ma ainult ei keeranud parameetritega — ei tööta. Peamine on, et -Exclude töötas, aga -Include kuidagi ei toimi. Kulutasin sellele terve päeva: mõtlesin pidevalt, et kuskil parameetrites on midagi valesti, et ma ei arvestanud mõne salapärase nüansiga. Ja mis lõpuks selgus? Paigaldasin nende PS7.1 — see töötas. Seal töötas isegi esimene lihtne variant, kasutades ainult Remove-Item olen teeninud. Kokkuvõttes osutus see nende veaks.

Kuid pärast vaeva nende Võimsa Shelliga, otsisin Google'ist, miks nende shellil on nii peavalu tekitav süntaks. Nad positsioneerivad selle, nagu oleks see .NET konsolile, aga nende süntaksist pole C#-ga isegi haisu. Selle asemel...

Lõpuks sattusin sellisele artiklile: "What I Hate About PowerShell". Nagu öeldakse: «Ma ei saa enam nõustuda.»

Kahtlen, et Võimsa Shelli meeskond on Bash'i armastajate kogum.

— Teeme lõpuks Windowsile konsoli, kus saab kirjutada keerulisi skripte. Meie cmd on nii vananenud, et tunnen nüüd juba veidi piinlikkust.
— Teeme! Mille põhjal me seda teeme? Meil on juba VBScript, JScript. Lõpuks on meil .NET keeled: C#, VB. Kas teeme C#-s? Tähendab, kasutame C#-d kui skriptikeelt meie konsolis. Veelgi enam, me ju tahame sinna .NET klasse tuua.
— Ei, mis sa räägid, mees, mis C#? Tõelised geeniusid kasutavad bash'i! Teeme siis bash'i Windowsile. Ükskõik, et bash'i süntaksit kirjutasid ilmselt hunnik tupikud kaugetes 1960-ndates. Ühesõnaga, mida keerulisem, seda parem! Intuitiivsus on nõrkade jaoks! Skripti kirjutamise ajal peab kasutaja kindlasti kõike need põrgu nimel ja leidma välja paar uut vandesõna. Ainult selline keel on väärt elu. Vaata, linuxikarjad elavad kogu elu nii ja saavad sellest ikka megasuure naudingut. Miks meie peaksime halvemad olema?

Ainult registreeritud kasutajad saavad küsitluses osaleda. Logige sisse, palun.

Kas kasutate PowerShelli ja kas see rahuldab teid?

  • 30,3%Ei kasuta

  • 29,6%Proovisin — ei meeldinud

  • 23,5%Kasutame ja olen rahul

  • 12,9%Kasutame, aga ei ole rahul

  • 3,8%Jee! Lõ finally täielikult kasutada oma lemmik bash'i Windowsis!

Hääletas 132 kasutajat. 26 kasutajat ei võtnud osa.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster