PowerShell versus Bash: belangrijkste verschillen om over te weten

PowerShell versus Bash: belangrijkste verschillen om over te weten

Als je ook maar een beetje vertrouwd bent met terminalemulators op computers, heb je waarschijnlijk wel eens gehoord van Linux’s Bash en Microsoft’s PowerShell. Beide zijn alomtegenwoordig in het leven van professionals die gespecialiseerd zijn in beide besturingssystemen. Als u echter uw dagelijkse leven niet voor een shell-prompt leidt, heeft u waarschijnlijk niet veel nagedacht over hoe de twee zouden kunnen worden vergeleken. In dat geval is er nooit een beter moment geweest om te leren!

Wat is Powershell

Microsoft introduceerde Powershell in 2006 om te fungeren als een opdrachtregelinterface die bovenop een veelzijdig en krachtig scriptframework draait. Het is ontworpen om Windows-beheerders te helpen bij het bouwen van kleine applicaties die gebruik maken van “commandlets” (officieel bekend als “cmdlets”) om een ​​groot deel van hun werk te automatiseren.

Powershellbash-lijst

Wat nog belangrijker is, is dat de opdrachtstructuur en “scriptbaarheid” een complete herwerking vertegenwoordigen van het oude MS-DOS waarop Windows oorspronkelijk was gebouwd. Het heeft een meer uniforme syntaxis en een manier om informatie te presenteren waar je gemakkelijk aan kunt wennen en waarmee je gemakkelijk kunt coderen.

Dit is niet bedoeld om de Windows-opdrachtregel te vervangen die de meeste mensen gewend zijn, maar vult deze aan met zijn eigen automatiserings- en configuratiefuncties. Als u bijvoorbeeld een Microsoft Azure-service in de cloud probeert te beheren, kunt u dat nu doen met de Connect-AzAccountopdracht in plaats van een externe desktopsessie te gebruiken.

Net als Bash is PowerShell volledig controleerbaar, waardoor het gebruikt kan worden in zeer gevoelige omgevingen waar het van cruciaal belang is om alles te weten wat er binnen het systeem gebeurt.

Wat is Bas

Bash is de grootvader uit 1989 die relevant blijft binnen Linux-omgevingen, ongeacht alle mooiere shells die hebben geprobeerd het te overschaduwen. Net als PowerShell biedt Bash een raamwerk waarmee scripts kunnen worden geschreven om de administratie veel gemakkelijker te automatiseren.

Powershellbash bashls

Omdat de opdrachtstructuur en syntaxis alomtegenwoordig zijn in verschillende Linux-distributies, BSD en zelfs macOS, zijn veel ontwikkelaars eraan gewend geraakt om Bash te gebruiken als hun go-to voor het organiseren van hun projecten.

Hoewel Bash een basissuite aan bewerkingen bevat waarmee je scripts kunt schrijven en informatie kunt doorgeven via de terminal, is bijna elk commando dat je in een terminal typt met deze shell een apart programma. Bash bevat bijvoorbeeld niet de ls(lijst bestanden) of cat(samenvoegen, of toon de uitvoer van een bestand) commando’s, maar zoekt in plaats daarvan naar uitvoerbare bestanden met dezelfde naam binnen gespecificeerde paden.

Powershell versus Bash: verschillen

PowerShell en Bash lijken misschien op elkaar als je ze voor het eerst leert gebruiken, maar het zijn in wezen totaal verschillende beesten met ontwerpfilosofieën die soms botsen. Hier zijn enkele zeer cruciale dingen die hen onderscheiden:

1. Gebruikerstoegangscontrole

Als je ooit iets administratiefs met Bash wilt doen, hoef je alleen maar je opdracht vooraf te gaan met sudo . Zodra de opdracht is voltooid, wordt u onmiddellijk teruggebracht naar de gebruikersshell. Het uitvoeren van een root-opdracht laat minder ruimte voor fouten en dwingt u om te herzien wat u doet.

PowerShell daarentegen kan alleen in de beheerders- of gebruikersmodus worden uitgevoerd. Als u tussen beide wilt schakelen, moet u een nieuwe sessie openen. Om PowerShell in de beheermodus te openen, moet u met de rechtermuisknop op het programmapictogram klikken en op “Als administrator uitvoeren” klikken. Als alternatief kunt u binnen één terminalsessie gewoon typen Start-Process powershell -verb runAsen er wordt een tweede sessie met beheerdersrechten geopend.

2. Uitvoer

Wanneer u een opdracht in Bash typt, voert u in feite een apart programma uit en dat uitvoerbare bestand geeft u het gewenste resultaat. Hoe de uitvoer wordt geformatteerd, hangt af van hoe de ontwikkelaar van dat specifieke programma het wilde formatteren.

Er is hier veel flexibiliteit, wat geweldig is, maar de keerzijde is een gebrek aan uniformiteit.

Opdrachtuitvoer in PowerShell wordt doorgaans geformatteerd onder één uniforme standaard. De tekst die u op het scherm ziet, is een door mensen leesbare versie van gegevens die door andere programma’s kan worden geïnterpreteerd.

Hierdoor kunnen mensen die scripts en applicaties schrijven, gewoon de eigen functies en opdrachten van PowerShell gebruiken om alle informatie te verzamelen die ze nodig hebben.

3. Syntaxis

Bash gebruikt een zeer unieke syntaxis (bijv. if [condition]; then code here; fi) die normaal gesproken niet voorkomt in andere scripttalen. Het is niet ongelooflijk moeilijk te gebruiken, maar het kan een beetje onconventioneel zijn voor iemand die net begint met het leren schrijven van scripts.

Wat betreft gebruikersopdrachten is er geen duidelijke uniformiteit. Elk afzonderlijk programma heeft zijn eigen opdrachtsyntaxis. Je moet weten hoe je ze moet gebruiken voordat je ze kunt integreren in je bash-script.

De scriptsyntaxis van PowerShell is vergelijkbaar met alle andere. NET-toepassing (bijv. if (condition) {. ..code here... }). Voor mensen die gewend zijn om binnen het eigen ecosysteem van Microsoft te ontwikkelen, is er bijna geen leercurve bij betrokken.

Gebruikerscommando ’s volgen een rigide structuur : een werkwoord, gevolgd door een streepje, gevolgd door een zelfstandig naamwoord. Geeft bijvoorbeeld Get-ChildItemeen overzicht van alle bestanden in de huidige map. Opdrachten die niet specifiek zijn voor PowerShell, kunnen nog steeds een structuur volgen die vergelijkbaar is met die van Bash. Als je het op Linux gebruikt, kun je nog steeds elke Linux-opdracht uitvoeren.

4: Flexibiliteit

Als je Bash onder de knie hebt, weet je hoe je moet werken met de terminalomgevingen van talloze Linux-distributies, het BSD-ecosysteem en zelfs macOS. Het is verreweg de koning van de universaliteit. Hoewel macOS in 2019 overstapte naar zsh , heeft het nog steeds de Bash-geest als kern.

PowerShell kan in vrijwel elk besturingssysteem worden uitgevoerd, maar het is in de eerste plaats bedoeld om naast de eigen producten van Microsoft te draaien. Als u het gebruikt, doet u dit zeer waarschijnlijk binnen Windows.

Als alles wat je leert PowerShell-specifieke conventies zijn, zit je in wezen vast op een eiland met de producten van Microsoft. Hoewel dat niet het geval hoeft te zijn, ontkomt het er niet aan dat de schaal pas echt schittert in die situatie. Wat de nadelen betreft, het is er een die een enorm deel van het wereldwijde marktaandeel voor desktops met zich meebrengt.

Veel Gestelde Vragen

Kan ik bash in Windows en PowerShell in Linux uitvoeren?

Om bash binnen Windows uit te voeren, installeert u eenvoudig het Windows-subsysteem voor Linux door een opdrachtprompt als beheerder uit te voeren en wsl --install. Je hebt direct toegang tot bash-commando’s nadat de installatie is voltooid.

PowerShell binnen Linux is een beetje lastiger en distro-afhankelijk. Microsoft bevat instructies op zijn website voor het installeren van PowerShell op de meest populaire distro’s. Je merkt misschien dat Arch Linux ontbreekt in die lijst, maar het bestaat als het powershellpakket in de AUR.

Heb ik Bash nodig in Windows?

Niet noodzakelijkerwijs, maar het zal je enorm helpen als je van plan bent dingen te gebruiken die meer voor Linux zijn ontworpen (Python, Git, enz.). Het in de buurt hebben kan geen kwaad. Door Windows Subsystem voor Linux te gebruiken om Bash te installeren, heb je ook een volledige Linux-shell om mee te experimenteren, wat een geweldige manier is om jezelf kennis te laten maken met de besturingsomgeving als je niet bekend bent.

Werken Windows DOS-opdrachten in PowerShell?

Dat doen ze over het algemeen. PowerShell is geen vervanging voor de oorspronkelijke Windows-opdrachtprompt. In plaats daarvan is het een laag die er bovenop werkt om nieuwe functionaliteit te bieden. U zult waarschijnlijk niets missen als u gewoon PowerShell gebruikt in plaats van het beproefde cmd.exe.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *