Windows-programma's uitvoeren vanuit de Bash Shell van Windows 10

how-to-run-windows-programma's-from-windows-10-and-8217;s-bash-shell foto 1

In de Creators Update kun je met de Bash-shell van Windows 10 nu Windows-binaire bestanden en standaard opdrachtpromptopdrachten uitvoeren, rechtstreeks vanuit Bash. Je kunt zowel Linux- als Windows-programma's uitvoeren vanuit dezelfde Bash-shell, of zelfs Windows-commando's in een Bash-script opnemen.

Dit werkt alleen in de Creators Update - je kunt dit niet doen in de huidige Anniversary Update. Dus als je dit wilt doen, moet je de Insider Preview-builds uitvoeren totdat de Creator's Update voor iedereen is vrijgegeven.



Wat je moet weten

Hier zijn enkele basisdetails die u moet weten over deze functie:

  • Gebruikersaccount: Programma's die vanuit de Bash-shell zijn gestart, worden uitgevoerd alsof ze door het huidige Windows-gebruikersaccount zijn gestart.
  • Machtigingen: deze programma's hebben dezelfde machtigingen als het Bash.exe-proces. Dus als u wilt dat deze opdrachten beheerderstoegang hebben, moet u de Bash-shell als beheerder uitvoeren.
  • Werkmap: Windows-programma's delen dezelfde werkmap als de Bash-shell. Dus als je een commando uitvoert dat de inhoud van de huidige map opsomt, zal het de inhoud van de huidige werkmap in de Bash-shell weergeven. Gebruik de |__+_| commando om werkdirectory's te wijzigen.

Laten we met dat in gedachten eens kijken hoe een programma moet worden uitgevoerd.

Een Windows-programma uitvoeren

Om een ​​Windows-programma uit te voeren, voert u het pad naar het .exe-bestand van het programma in de Bash-shell in. Onthoud dat uw Windows C:-schijf beschikbaar is op /mnt/c in Bash. De Bash-omgeving is ook hoofdlettergevoelig, dus je moet het juiste hoofdlettergebruik opgeven.

Stel dat u het Ping-hulpprogramma op C:WindowsSystem32PING.EXE wilt starten. U zou de volgende opdracht uitvoeren:

|__+_|

De volgende opdracht zou niet werken, omdat Bash hoofdlettergevoelig is:

|__+_|

how-to-run-windows-programma's-from-windows-10-and-8217;s-bash-shell foto 2

Dit is een beetje ingewikkelder als het pad complexe tekens bevat, zoals spaties en haakjes, zoals de mappen Program Files. U moet aan spaties, haakjes en andere complexe tekens ontsnappen door ze vooraf te laten gaan door een -teken.

Stel dat u bijvoorbeeld het Internet Explorer-programma wilt uitvoeren dat zich bevindt op C:Program Files (x86)Internet Exploreriexplore.exe. Je zou de volgende opdracht in Bash moeten uitvoeren:

|__+_|

Let op de vóór de spatie en haakjes. Deze tekens moeten worden geëscaped, anders realiseert Bash zich niet dat de tekens deel uitmaken van een bestandspad.

how-to-run-windows-programma's-from-windows-10-and-8217;s-bash-shell foto 3

Een argument doorgeven aan een commando

De Bash-shell geeft argumenten rechtstreeks door aan de opdrachten die u uitvoert.

Als u bijvoorbeeld example.com wilt pingen, voert u het volgende uit:

|__+_|

Of, als u het Windows hosts-bestand in Kladblok wilt openen, voert u het volgende uit:

|__+_|

U gebruikt het standaard Windows-bestandspad wanneer u een bestandspad rechtstreeks doorgeeft aan een Windows-programma. Dat komt omdat Bash het argument rechtstreeks doorgeeft. Notepad.exe en andere Windows-programma's verwachten een Windows-bestandspad.

how-to-run-windows-programma's-from-windows-10-and-8217;s-bash-shell foto 4

Een ingebouwde opdracht uitvoeren

Sommige Windows-opdrachten zijn geen .exe-bestanden, maar zijn ingebouwd in de opdrachtprompt zelf. Dit omvat bijvoorbeeld de |__+_| commando dat u normaal gesproken zou uitvoeren in een opdrachtprompt. Om zo'n commando uit te voeren, moet je de |__+_| binair gekoppeld aan de opdrachtprompt en geef het de opdracht door als een argument met /C, zoals zo:

|__+_|

Om bijvoorbeeld de |_+_|opdracht uit te voeren die in de opdrachtprompt is ingebouwd, voert u de volgende opdracht uit:

|__+_|

hoe-windows-programma's-van-windows-10-en-8217-uit te voeren;s-bash-shell foto 5

Hoe mappen aan het pad toe te voegen

De Windows Services voor Linux-omgeving behandelt Windows-uitvoerbare bestanden op dezelfde manier als Linux-binaire bestanden. Dit betekent dat u een map met .exe-bestanden aan het pad kunt toevoegen en die .exe-bestanden vervolgens rechtstreeks kunt uitvoeren. Als u bijvoorbeeld de System32-map aan uw pad wilt toevoegen, voert u het volgende uit:

|__+_|

U kunt dan Windows .exe-bestanden in de map System32 rechtstreeks uitvoeren, zoals:

|__+_| |__+_| |__+_|

hoe-windows-programma's-van-windows-10-en-8217-uit te voeren;s-bash-shell foto 6

Hoe de uitvoer van het ene commando naar het andere te leiden?

De uitvoer van een Windows-opdracht kan worden doorgesluisd naar een Linux-opdracht en vice versa. U kunt bijvoorbeeld het |_+_|commando gebruiken om details over uw netwerkinterfaces op te sommen en deze door te sturen naar de Linux |_+_| commando om de uitvoer te doorzoeken. Als u bijvoorbeeld alle informatie over uw verbinding wilt weergeven en wilt zoeken naar secties die overeenkomen met het IPv4-adres, voert u het volgende uit:

|__+_|

hoe-windows-programma's-van-windows-10-en-8217-uit te voeren;s-bash-shell foto 7

Dat is het basisproces. Deze commando's werken ook als ze in een Bash-script zijn opgenomen, dus je kunt een Bash-script schrijven dat zowel Windows-commando's als Linux-hulpprogramma's bevat. Als het in de Bash-shell draait, werkt het in een Bash-script.

En als je de andere kant op wilt, kun je de bash -c opdracht gebruiken om Bash-opdrachten uit te voeren vanaf de standaard Windows-opdrachtprompt.

GERELATEERDE ARTIKELEN hoe-windows-programma's-van-windows-10-en-8217 te draaien;s-bash-shell foto 8Bash Shell-scripts maken en uitvoeren op Windows 10 Hoe Linux-opdrachten van buiten de Bash Shell op Windows 10 uit te voeren

Meer verhalen

Japan schrapt zijn 'snelle' kernreactorprototype

Het moest relatief milieuvriendelijk zijn, maar het is vooral een vloek.

5 voordelen van een virtueel PBX-telefoonsysteem

Dus je hebt een klein bedrijf of je bent bezig er een te ontwikkelen - welk soort telefoonsysteem wenst u? De traditionele vaste lijn of een virtuele telefoon...

Een domeinnaam voor uw website registreren

Elk bedrijf heeft een website nodig en de eerste stap is het registreren van een domeinnaam. Onze inleiding vertelt u alles wat u moet weten om de klus te klaren.

Sen. Al Franken vraagt ​​Uber om het privacybeleid te verduidelijken

Uber zegt dat het nu de locatie van gebruikers volgt, zelfs nadat een reis is afgelopen.

Rusland heeft met succes een raket getest die Amerikaanse satellieten kan verlammen

Experts zeggen dat dit een wake-up call zou moeten zijn om de Amerikaanse ruimte-infrastructuur te beschermen.

Beroemdheden vragen Twitter om een ​​specifieke intimidatiezaak aan te pakken

Is dit een ander geval waarin de rijken en beroemdheden nodig zijn om de reactie van Twitter te krijgen?

Beste tool voor gegevensmodellering op de markt - ERwin

Wat is Erwin? Erwin is een toepassingstool voor gegevensmodellering en databaseontwerp die op Windows werkt. CA ERwin DM creëert een blauwdruk voor de ondernemingen om te...

7 webdesigntrends voorspeld voor 2017

Er zijn veel redenen waarom trends verschijnen. Technische veranderingen drijven sommigen aan, zoals de komst van responsief ontwerp, en andere komen schijnbaar puur uit het niets...

'Waarom hij?' Regisseur van Elon Musk's geweldige excuus 'I Can't Come to Work Today'

De regisseur van de nieuwe komedie vertelt over de unieke situaties die zich voordoen wanneer een van je acteurs een geniale miljardair is.

Een stomme zin van drie woorden die je geloofwaardigheid meteen ruïneert

Als iemand je vertelt dat de prijs niet belangrijk is, zijn ze waanvoorstellingen.