11Sep

Ako spustiť programy Windows z Windows 10 Bash Shell

V aktualizácii pre tvorcov teraz systém Windows 10 Bash shell teraz umožňuje spustiť binárne súbory Windows a štandardné príkazy Command Prompt priamo od Bash. Programy Linuxu a Windows môžete spustiť z rovnakého shellu Bash alebo dokonca začleniť príkazy Windows do skriptu Bash.

Čo potrebujete vedieť

Tu je niekoľko základných podrobností, ktoré musíte poznať o tejto funkcii:

  • používateľský účet : Programy spustené z shell Bash budú spustené tak, ako keby boli spustené aktuálnym používateľským účtom Windows.
  • Povolenia : Tieto programy budú mať rovnaké oprávnenia ako proces Bash.exe. Ak chcete, aby tieto príkazy mali prístup administrátora, budete musieť spustiť balík Bash ako správca. Pracovný adresár
  • : Programy Windows zdieľajú rovnaký "pracovný adresár" ako Bash shell. Takže ak spustíte príkaz, ktorý obsahuje obsah aktuálneho adresára, bude obsahovať obsah aktuálneho pracovného adresára v shell Bash. Pomocou príkazu cd môžete zmeniť pracovné adresáre.

So zreteľom na to sa pozrime na to, ako spustiť program.

Ako spustiť program Windows

Ak chcete spustiť program Windows, zadajte cestu do súboru. exe programu v balíku Bash. Pamätajte, že vaša jednotka C: Windows je k dispozícii v /mnt/ c v Bash. Prostredie Bash je tiež citlivé na veľké a malé písmená, takže musíte špecifikovať správne veľké písmená.

Povedzme, že chcete spustiť nástroj Ping umiestnený na C: \ Windows \ System32 \ PING.EXE.Spustili by ste nasledujúci príkaz:

/mnt/c/Windows/System32/ PING.EXE

Nasledujúci príkaz nebude fungovať, pretože Bash rozlišuje veľké a malé písmená:

/mnt/c/windows/system32/ ping.exe

Toto je o niečo zložitejšie, ak cesta obsahuje zložité znaky ako medzery a zátvorky,ako sú priečinky programových súborov. Musíte "uniknúť" medzerám, zátvorkám a iným zložitým znakom tým, že ich predčíslite znakom "\".

Povedzme napríklad, že chcete spustiť program Internet Explorer umiestnený na C: \ Program Files( x86) \ Internet Explorer \ iexplore.exe. Musíte spustiť nasledujúci príkaz v programe Bash:

/mnt/c/ Program \ Files \ \ x86 \ / Internet \ Explorer / iexplore.exe

Všimnite si "\" pred znakmi medzery a medzery. Tieto znaky musia byť "uniknuté" alebo Bash nebude realizovať, že znaky sú súčasťou cesty k súboru.

Ako preniesť argument do príkazu

Balík Bash prenesie argumenty priamo na vykonané príkazy.

Napríklad, ak by ste chceli ping example.com spustiť:

/mnt/c/Windows/System32/ PING.EXE example.com

Alebo, ak by ste chceli otvoriť súbor hostov systému Windows v programe Poznámkový blok, spustili by ste:

/mnt/c/Windows/System32/ notepad.exe "C: \ Windows \ System32 \ drivers \ etc \ hosts "

Pri prechode cesty súboru priamo do programu Windows používate štandardnú cestu systému Windows. To je preto, lebo Bash priamo uvádza argument. Notepad.exe a ďalšie programy Windows očakávajú cestu k súboru systému Windows.

Ako spustiť vstavaný príkaz

Niektoré príkazy systému Windows nie sú súbory. exe, ale sú zabudované do samotného príkazového riadka. Zahŕňa to napríklad príkaz dir, ktorý by ste normálne mohli spustiť v príkazovom riadku. Ak chcete spustiť takýto príkaz, musíte spustiť binárnu cmd.exe priradenú k príkazovému riadku a odovzdať príkaz ako argument s / C, napríklad takto:

/mnt/c/Windows/System32/ cmd.exe / C príkaz

Napríklad, aby ste spustili dirktorý je zabudovaný do príkazového riadka, by ste spustili nasledovný príkaz:

/mnt/c/Windows/System32/ cmd.exe / C dir

Ako pridať adresáre do cesty

Prostredie Windows Services for Linux zaobchádza s spustiteľnými súbormi systému Windows podobným spôsobu, akým zaobchádza s binárami systému Linux. To znamená, že môžete pridať adresár obsahujúci súbory. exe do cesty a potom tieto súbory exe spustiť priamo. Napríklad, ak chcete pridať adresár System32 do cesty, spustili by ste:

export PATH = $ PATH: /mnt/c/Windows/ System32

Potom by ste mohli spustiť súbory Windows. exe umiestnené priamo v priečinku System32, napríklad takto: Príklad

PING.exe.com notepad.exe cmd.exe / C dir

Ako vytláčať výstup jedného príkazu do iného

Výstup príkazu Windows môže byť pipetovaný na príkaz linux a naopak. Napríklad môžete použiť príkaz ipconfig.exe -all, aby ste vybrali podrobnosti o vašich sieťových rozhraniach a pripojte ho k príkazu Linux grep, aby ste vyhľadali výstup. Ak chcete napríklad uviesť všetky informácie o vašom pripojení a vyhľadať sekcie zodpovedajúce adrese IPv4, spustili by ste:

/mnt/c/Windows/System32/ ipconfig.exe -all |grep "Adresa IPv4"

To je základný proces. Tieto príkazy budú fungovať aj vtedy, keď budú začlenené do skriptu Bash, takže môžete napísať skript Bash, ktorý zahŕňa aj príkazy Windows a nástroje Linux. Ak to beží v Bash shell, bude fungovať v Bash skripte.

A ak chcete ísť iným spôsobom, môžete použiť príkaz "bash -c" na spustenie príkazov Bash zo štandardného príkazového riadka systému Windows.

TÉMY TÝKAJÚCE SA
Ako vytvoriť a spustiť skripty Bash Shell na systéme Windows 10
Ako spustiť Linuxové príkazy mimo Bash Shell na Windows 10