11Sep
Î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 să știți
Iată câteva detalii de bază despre această funcție:
- Cont utilizator : 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 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. Utilizați comanda cd pentru a schimba directoarele de lucru.
Având în vedere acest lucru, să aruncăm o privire la modul de rulare a unui program.
Cum se execută un program Windows
Pentru a rula un program Windows, introduceți calea fișierului. 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ă doriți să lansați utilitarul Ping situat la C: \ Windows \ System32 \ PING.EXE.Ați executa următoarea comandă:
/mnt/c/Windows/System32/ PING.EXEUrmătoarea comandă nu ar funcționa, deoarece Bash este sensibil la minuscule:
/mnt/c/windows/system32/ ping.exeAcesta este un pic 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 localizat 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.exeNotați "\" înaintea caracterelor spațiu și bracket. 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ă
Cochilia Bash transmite argumente direct comenzilor pe care le executați.
De exemplu, dacă doriți să ping example.com, ați rula:
/mnt/c/Windows/System32/ PING.EXE example.comSau, dacă doriți să deschideți fișierul gazdă Windows în Notepad, ați rula:
/mnt/c/Windows/System32/ notepad.exe "C: \ Windows \ System32 \ drivers \ etc \ hosts "Utilizați calea standard de fișiere Windows când transmiteți o cale de fișier direct unui 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 se execută o comandă încorporată
Unele comenzi Windows nu sunt fișiere. exe, ci sunt încorporate în Command Prompt. De exemplu, aceasta include comanda dir pe care o puteți rula în mod normal într-o comandă.Pentru a rula o astfel de comandă, trebuie să executați binarul cmd.exe asociat cu Promptul de comandă și să-l transmiteți comanda ca argument cu / C, cum ar fi:
/mnt/c/Windows/System32/ cmd.exe / C comandaDe exemplu, pentru a rula directorulcomanda construită în Command Prompt, ați executa următoarea comandă:
/mnt/c/Windows/System32/ cmd.exe / C dirCum se adaugă directoare în calea
Mediul Windows Services for Linux tratează executabilul Windows similar cu modul în care tratează binarele Linux. Aceasta înseamnă că puteți adăuga un director care conține fișiere. exe pe calea și apoi executați acele fișiere. exe direct. De exemplu, pentru a adăuga directorul System32 la calea dvs., ați rula:
export PATH = $ PATH: /mnt/c/Windows/ System32Aveți posibilitatea să executați direct fișierele. exe Windows situate în folderul System32 direct, după cum urmează:
PING.exe example.com Notebook.exe cmd.exe / C dirCum să conduceți ieșirea unei comenzi la o altă comandă
Ieșirea unei comenzi Windows poate fi transmisă unei comenzi Linux și invers. De exemplu, puteți folosi comanda ipconfig.exe -all pentru a detalia detaliile despre interfețele de rețea și pentru ao conduce la comanda grep Linux 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 -all |grep "Adresă 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 din standardul Windows Command Prompt.