If-Koubou

Cum se execută programele Windows din Windows Bash Shell

Cum se execută programele Windows din Windows Bash Shell (Cum să)

În actualizarea creatorilor, shell-ul Bash Windows 10 vă permite acum să executați binare Windows și comenzi standard Command Prompt, direct de la Bash. Puteți rula atât programele Linux, cât și programele Windows din aceeași coajă Bash sau chiar să încorporați comenzile Windows într-un script Bash.

Ce trebuie sa stii

Iată câteva detalii de bază despre această caracteristică:

  • Contul utilizatorului: Programele lansate din shell-ul Bash se vor executa ca și cum ar fi lansate de contul curent de utilizator Windows.
  • Permisiuni: Aceste programe vor avea aceleași permisiuni ca procesul Bash.exe. Deci, dacă doriți ca aceste comenzi să aibă acces Administrator, va trebui să executați shell-ul Bash ca Administrator.
  • Director de lucru: Programele Windows partajează același "director de lucru" ca și shell-ul Bash. Deci, dacă executați o comandă care listează conținutul directorului curent, acesta va afișa conținutul directorului de lucru curent din shell-ul Bash. Folosește CD comanda pentru a schimba directoarele de lucru.

Având în vedere acest lucru, să aruncăm o privire la modul de derulare a unui program.

Cum se execută un program Windows

Pentru a rula un program Windows, introduceți calea spre fișierul .exe al programului în shell-ul Bash. Rețineți că unitatea Windows C: este disponibilă la / mnt / c în Bash. Mediul Bash este, de asemenea, sensibil la minuscule, deci trebuie să specificați capitalizarea corectă.

Să presupunem că ați vrut să lansați utilitarul Ping situat la C: \ Windows \ System32 \ PING.EXE. Ați executa următoarea comandă:

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

Următoarea comandă nu ar funcționa, deoarece Bash este sensibil la minuscule:

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

Este ceva mai complicat dacă calea conține caractere complexe precum spații și paranteze, cum ar fi dosarele Program Files. Trebuie să "scăpați" spațiile, parantezele și alte caractere complexe, prefixându-le cu un caracter "\".

De exemplu, să presupunem că doriți să rulați programul Internet Explorer situat la C: \ Program Files (x86) \ Internet Explorer \ iexplore.exe. Va trebui să executați următoarea comandă în Bash:

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

Rețineți "\" înaintea caracterelor de spațiu și colț. Aceste caractere trebuie să fie "scapate" sau Bash nu va realiza că caracterele fac parte dintr-o cale de fișier.

Cum să treci un argument într-o comandă

Bash shell-ul transmite argumentele direct comenzilor pe care le executați.

De exemplu, dacă doriți să adăugați ping example.com, ați rula:

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

Sau, dacă doriți să deschideți fișierul gazdă Windows în Notepad, ați rula:

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

Utilizați calea standard a fișierului Windows când treceți o cale de fișier direct la un program Windows. Asta pentru că Bash transmite argumentul în mod direct. Notepad.exe și alte programe Windows se așteaptă la o cale de fișiere Windows.

Cum să executați o comandă încorporată

Unele comenzi Windows nu sunt fișiere .exe, ci sunt încorporate în Command Prompt. De exemplu, aceasta include dir puteți executa în mod normal într-o comandă. Pentru a rula o astfel de comandă, trebuie să rulați cmd.exe binar asociat cu Promptul de comandă și să îi transmiteți comanda ca argument cu / C, după cum urmează:

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

De exemplu, pentru a rula dircomandă încorporată în Command Prompt, ați rula următoarea comandă:

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

Cum se adaugă directoare la cale

Mediul Windows Services for Linux tratează executabilul Windows similar cu modul în care tratează binarele Linux. Acest lucru înseamnă că puteți adăuga un director care conține fișiere .exe pe cale și apoi executați acele fișiere .exe direct. De exemplu, pentru a adăuga directorul System32 la calea ta, ai rula:

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

Apoi, puteți rula fișierele Windows .exe situate direct în folderul System32, cum ar fi:

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

Cum să conduceți ieșirea unei comenzi la alta

Ieșirea unei comenzi Windows poate fi trimisă la o comandă Linux și invers. De exemplu, puteți utiliza funcțiaipconfig.exe -all comanda pentru a lista detaliile despre interfețele de rețea și a le conduce la Linux grep comanda pentru a căuta ieșirea. De exemplu, pentru a afișa toate informațiile despre conexiunea dvs. și pentru a căuta secțiuni care se potrivesc "Adresa IPv4", ați rula:

/mnt/c/Windows/System32/ipconfig.exe - tot | grep "adresa IPv4"

Acesta este procesul de bază. Aceste comenzi vor funcționa și atunci când sunt încorporate într-un script Bash, astfel încât să puteți scrie un script Bash care include atât comenzi Windows, cât și utilitare Linux. Dacă rulează în shell-ul Bash, va funcționa într-un script Bash.

Și dacă doriți să mergeți în altă direcție, puteți folosi comanda "bash -c" pentru a rula comenzile Bash de la standardul Windows Command Prompt.