Amit tudnod kell
Íme néhány alapvető információ, amiről tudnia kell ezt a funkciót:
- Felhasználói fiók: A Bash shellből indított programok úgy működnek, mintha az aktuális Windows felhasználói fiók elindította volna őket.
- Engedélyek: Ezek a programok ugyanazokkal a jogosultságokkal rendelkeznek, mint a Bash.exe folyamat. Tehát, ha azt szeretné, hogy ezek a parancsok rendelkezzenek adminisztrátori hozzáféréssel, akkor a Bash-futtatást adminisztrátorként kell futtatnia.
-
Munkakönyvtár: A Windows programok ugyanazt a "munkakönyvtárat" osztják meg, mint a Bash shell. Tehát, ha olyan parancsot futtat, amely felsorolja az aktuális könyvtár tartalmát, felsorolja az aktuális munkakönyvtár tartalmát a Bash-héjban. Használja a
cd
parancsot a munkakönyvek megváltoztatására.
Ezt szem előtt tartva nézzük meg, hogyan kell futtatni egy programot.
Windows program futtatása
Windows program futtatásához adja meg a program exe fájljának elérési útját a Bash-héjban. Ne feledje, hogy a Windows C: meghajtó elérhető a / mnt / c fájlban a Bash-ban. A Bash környezetben a kis- és nagybetűk is érzékenyek, ezért meg kell adnia a megfelelő tőkésítést.
Tegyük fel, hogy el akarod indítani a C: Windows System32 PING.EXE-ben található Ping segédprogramot. A következő parancsot futtatta:
/mnt/c/Windows/System32/PING.EXE
A következő parancs nem működik, mert a Bash a kis- és nagybetűkre érzékeny:
/mnt/c/windows/system32/ping.exe
Tegyük fel például, hogy a C: Program Files (x86) Internet Explorer iexplore.exe programban található Internet Explorer programot szeretné futtatni. A következő parancsot kell futtatnia a Bash-ban:
/mnt/c/Program Files (x86)/Internet Explorer/iexplore.exe
Jegyezd meg a "" -t a szóköz és a konzol karakterek előtt. Ezeknek a karaktereknek "escape" -nak kell lenniük, vagy a Bash nem fogja felismerni, hogy a karakterek egy fájl elérési útjának részét képezik.
Hogyan adhatunk meg egy argumentumot egy parancsnak?
A Bash shell közvetlenül érkezik a végrehajtott parancsokhoz.
Például, ha ping example.com-ot akarsz tartani, akkor futtatod:
/mnt/c/Windows/System32/PING.EXE example.com
Vagy, ha meg akarja nyitni a Windows hosts fájlt a Jegyzettömbben, akkor futtatná:
/mnt/c/Windows/System32/notepad.exe 'C:WindowsSystem32driversetchosts'
A szokásos Windows fájl elérési útját akkor használja, amikor egy fájl elérési útvonalát közvetlenül egy Windows programhoz továbbítja. Ez azért van, mert Bash közvetlenül érti az érvelést. A Notepad.exe és más Windows programok várják a Windows fájl elérési útját.
Beépített parancs futtatása
Egyes Windows parancsok nem.exe fájlok, hanem beépülnek a Command Promptbe. Például ez magában foglalja a
dir
parancsot, amelyet általában egy parancssorban futtathat. Egy ilyen parancs futtatásához futtatni kell a
cmd.exe
a Command Prompthez társított bináris, és adja át a parancsot argumentumként a / C-vel, így:
/mnt/c/Windows/System32/cmd.exe /C command
Például a
dir
parancsot a parancssorba építettük be, akkor a következő parancsot futtatnánk:
/mnt/c/Windows/System32/cmd.exe /C dir
Könyvtárak hozzáadása az útra
A Windows Services for Linux környezet a Windows-futtatható fájlokat hasonlítja össze a Linux binárisok kezelésével. Ez azt jelenti, hogy az.exe fájlokat tartalmazó könyvtárat hozzá lehet adni az elérési úthoz, majd közvetlenül végrehajthatja azokat.exe fájlokat. Például, ha hozzá kíván adni a System32 könyvtárat az elérési útvonalhoz, akkor futtathatja:
export PATH=$PATH:/mnt/c/Windows/System32
Ezután a System32 mappában található Windows.exe fájlokat közvetlenül futtathatja, így:
PING.exe example.com
notepad.exe
cmd.exe /C dir
Hogyan állítsuk be az egyik parancs kimenetét a másikba
A Windows parancs kimenete egy Linux parancsra vezethető be, és fordítva. Például használhatja a ipconfig.exe -all
paranccsal, hogy felsorolja a hálózati csatolók adatait, és vezesse be a Linuxot
grep
parancsot a kimenet keresésére. Például, ha felsorolni szeretné az összes kapcsolatot és keresni fogja az "IPv4 cím" megfelelő szakaszokat, akkor futtathatja:
/mnt/c/Windows/System32/ipconfig.exe -all | grep 'IPv4 Address'
És ha másképp akarsz menni, használhatod a "bash-c" parancsot a Bash parancsok futtatásához a szabványos Windows parancssorból.