Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Windows és Linux fájlrendszerek közötti munka során számos szempontot figyelembe kell venni. Ebben az útmutatóban bemutattunk néhányat, köztük néhány példát a Windows- és Linux-alapú parancsok keverésének együttműködési támogatására.
Fájltárolás és teljesítmény fájlrendszerek között
Javasoljuk, hogy ne dolgozzon az operációs rendszereken a fájljaival, hacsak nincs erre konkrét oka. A leggyorsabb teljesítmény érdekében tárolja a fájlokat a WSL fájlrendszerben, ha Linux-parancssorban dolgozik (Ubuntu, OpenSUSE stb.). Ha Windows-parancssorban (PowerShell, parancssor) dolgozik, tárolja a fájlokat a Windows fájlrendszerben.
Például a WSL-projektfájlok tárolásakor:
- A Linux fájlrendszer gyökérkönyvtárának használata:
/home/<user name>/Project - Nem a Windows fájlrendszer gyökérkönyvtára:
/mnt/c/Users/<user name>/Project$vagyC:\Users\<user name>\Project
Amikor megjelenik /mnt/ egy WSL-parancssor fájlútvonala, az azt jelenti, hogy csatlakoztatott meghajtóról dolgozik. Így a Windows fájlrendszer C:\ meghajtója (C:\Users\<user name>\Project) így fog kinézni, ha WSL-parancssorba van csatlakoztatva: /mnt/c/Users/<user name>/Project$. A projektfájlokat egy csatlakoztatott meghajtón is tárolhatja, de a teljesítmény sebessége javul, ha közvetlenül a meghajtón tárolja őket \\wsl$ .
Az aktuális könyvtár megtekintése a Windows Fájlkezelőben
A fájlok tárolására szolgáló könyvtár megtekintéséhez nyissa meg a Windows Fájlkezelőt a parancssorból a következő paranccsal:
explorer.exe .
Másik lehetőségként a következő parancsot is használhatja: powershell.exe /c start . Az aktuális könyvtár megnyitásához mindenképpen adja hozzá a parancs végén található pontot.
Ha meg szeretné tekinteni az összes elérhető Linux-disztribúciót és azok gyökér fájlrendszereit a Windows Fájlkezelőben, a címsorban adja meg a következőt: \\wsl$
Fájlnév és könyvtár kis- és nagybetűérzékenysége
A kis- és nagybetűk érzékenysége határozza meg, hogy a nagybetűk (FOO.txt) és a kisbetűk (foo.txt) különbözőként (kis- és nagybetű-érzékeny) vagy egyenértékűként (kis- és nagybetű-kompatibilis) vannak-e kezelve egy fájlnévben vagy könyvtárban. A Windows és Linux fájlrendszerek különböző módokon kezelik a kis- és nagybetűk érzékenységét – a Windows nem érzékeny a kis- és nagybetűkre, a Linux pedig megkülönbözteti a kis- és nagybetűket. A kis- és nagybetűk érzékenységének beállításáról, különösen a lemezek WSL-vel való csatlakoztatásáról a Kis- és nagybetűk érzékenységének beállítása útmutatóban talál további információt.
Együttműködés Windows és Linux parancsok között
A Windows és Linux rendszerű eszközök és parancsok a WSL-vel felcserélhetők.
- Futtassa a Windows-eszközöket (például notepad.exe) Linux parancssorból (például Ubuntu).
- Linux-eszközök (azaz grep) futtatása Windows parancssorból (azaz. PowerShell).
- Környezeti változók megosztása Linux és Windows között. (17063+ build)
Linux-eszközök futtatása Windows parancssorból
Linux bináris fájlok futtatása a Windows parancssorból (CMD) vagy PowerShellből wsl <command> (vagy wsl.exe <command>).
Például:
C:\temp> wsl ls -la
<- contents of C:\temp ->
Az így meghívott bináris fájlok:
- Használja ugyanazt a munkakönyvtárat, mint az aktuális CMD- vagy PowerShell-parancssor.
- WSL alapértelmezett felhasználójával futtat.
- Ugyanazokkal a Windows-rendszergazdai jogosultságokkal rendelkezik, mint a hívási folyamat és a terminál.
A következő wsl (vagy wsl.exe) Linux-parancsot úgy kezeli a rendszer, mint a WSL-ben futtatott parancsokat. Az olyan dolgok, mint a sudo, a piping és a fájlátirányítás működnek.
Példa az alapértelmezett Linux-disztribúció frissítésére a sudo használatával:
C:\temp> wsl sudo apt-get update
A parancs futtatása után megjelenik az alapértelmezett Linux-terjesztési felhasználónév, és a rendszer kérni fogja a jelszavát. Miután helyesen megadta a jelszót, a disztribúció letölti a frissítéseket.
Linux- és Windows-parancsok keverése
Íme néhány példa a Linux- és Windows-parancsok PowerShell-lel való keverésére.
Ha a Linux parancsot ls -la a fájlok listázására szeretné használni, és a PowerShell-paranccsal findstr szűrni szeretné a "git" szót tartalmazó szavak eredményeit, kombinálja a parancsokat:
wsl ls -la | findstr "git"
Ha a PowerShell-paranccsal dir listázni szeretné a fájlokat és a Linux parancsot grep a "git" szót tartalmazó szavak eredményeinek szűréséhez, kombinálja a parancsokat:
C:\temp> dir | wsl grep git
Ha a Linux paranccsal ls -la listázni szeretné a fájlokat, és a PowerShell-parancsot > out.txt a lista "out.txt" nevű szövegfájlba való nyomtatásához, kombinálja a parancsokat:
C:\temp> wsl ls -la > out.txt
Az átadott wsl.exe parancsokat a rendszer módosítás nélkül továbbítja a WSL-folyamatnak. A fájl elérési útjait WSL formátumban kell megadni.
Ha a Linux parancsot ls -la a Linux fájlrendszer elérési útján lévő fájlok listázására szeretné használni, használja a /proc/cpuinfo PowerShellt:
C:\temp> wsl ls -la /proc/cpuinfo
Ha a Linux parancsot ls -la a Windows fájlrendszer elérési útján lévő fájlok listázására szeretné használni, használja a C:\Program Files PowerShellt:
C:\temp> wsl ls -la "/mnt/c/Program Files"
Windows-eszközök futtatása Linuxról
A WSL közvetlenül a WSL parancssorból futtathatja a Windows-eszközöket [tool-name].exe. Például: notepad.exe.
Az így futtatott alkalmazások a következő tulajdonságokkal rendelkeznek:
- Tartsa meg a munkakönyvtárat a WSL parancssoraként (a legtöbb kivételt az alábbiakban ismertetjük).
- Ugyanazokkal az engedélyekkel rendelkezik, mint a WSL-folyamat.
- Futtassa aktív Windows-felhasználóként.
- A Windows Feladatkezelőben úgy jelenik meg, mintha közvetlenül a CMD-parancssorból hajtanák végre.
A WSL-ben futtatott Windows-végrehajtásokat a natív Linux végrehajtásokhoz hasonlóan kezelik – a csővezetékek, az átirányítások és a háttérben futtatás is a várt módon működik.
A Windows eszköz ipconfig.exe futtatásához használja a Linux eszközt grep az "IPv4" eredmények szűréséhez, és a Linux eszközt cut az oszlopmezők eltávolításához; egy Linux-disztribúcióban (például Ubuntu) írja be:
ipconfig.exe | grep IPv4 | cut -d: -f2
Vegyünk egy példát a Windows és a Linux parancsok keverésére. Nyissa meg a Linux-disztribúciót (azaz. Ubuntu) és hozzon létre egy szövegfájlt: touch foo.txt. Most a Linux paranccsal ls -la listázhatja a közvetlen fájlokat és azok létrehozási adatait, valamint a Windows PowerShell eszközt findstr.exe az eredmények szűréséhez, hogy csak a foo.txt fájl jelenjen meg az eredmények között:
ls -la | findstr.exe foo.txt
A Windows-eszközöknek tartalmazniuk kell a fájlkiterjesztést, meg kell egyeznie a fájl esetével, és végrehajthatónak kell lenniük. Nem végrehajthatók, beleértve a kötegszkripteket is. A CMD natív parancsai, például a dir, a cmd.exe /C parancs segítségével futtathatók.
Listázhatja például a Windows-fájlrendszer C:\ könyvtárának tartalmát a következő beírással:
cmd.exe /C dir
Vagy a ping paranccsal küldjön visszhangkérelmet a microsoft.com webhelyre:
ping.exe www.microsoft.com
A paramétereket a rendszer nem módosított Windows binárisnak továbbítja. Példaként, a következő parancs megnyitja C:\temp\foo.txt a notepad.exe.
notepad.exe "C:\temp\foo.txt"
Ez is működni fog.
notepad.exe C:\\temp\\foo.txt
Környezeti változók megosztása Windows és WSL között a WSLENV-vel
A WSL és a Windows egy speciális környezeti változóval rendelkezik, WSLENVamely a WSL-n futó Windows- és Linux-disztribúciók áthidalására jött létre.
A WSLENV változó tulajdonságai:
- Meg van osztva; Windows- és WSL-környezetekben is létezik.
- A Windows és a WSL között megosztható környezeti változók listája.
- A környezeti változókat úgy formázhatja, hogy jól működjenek a Windowsban és a WSL-ben.
- Segíthet a WSL és a Win32 közötti folyamatban.
Megjegyzés:
17063 előtt a WSL által elérhető egyetlen Windows környezeti változó a PATH volt, így a Win32 végrehajtható fájlokat a WSL alól indíthatta. 17063-tól kezdődően WSLENV támogatott.
Az WSLENV esetében érzékeny a kis- és nagybetűk megkülönböztetésére.
WSLENV-jelzők
Négy jelző áll rendelkezésre WSLENV a környezeti változó fordításának befolyásolásához.
WSLENV Zászlók:
-
/p- lefordítja a WSL-/Linux-stílusok és a Win32-útvonalak közötti elérési utat. -
/l- azt jelzi, hogy a környezeti változó az elérési utak listája. -
/u- azt jelzi, hogy ezt a környezeti változót csak a WSL Win32-ből való futtatásakor kell tartalmaznia. -
/w- azt jelzi, hogy ezt a környezeti változót csak a Win32 WSL-ből való futtatásakor kell tartalmaznia.
A jelzők szükség szerint kombinálhatók.
További információ a WSLENV-ről, beleértve a gyakori kérdéseket és példákat, amelyekkel a WSLENV értékét más előre definiált környezetbeli varsok összefűzésére állíthatja be, és mindegyiket perjelekkel, majd jelölőkkel kiegészítve megadhatja, hogy az érték hogyan legyen lefordítva, és hogyan adja át a változókat egy szkripttel. Ez a cikk egy példát is tartalmaz egy go programozási nyelvvel rendelkező fejlesztői környezet beállítására, amely úgy van konfigurálva, hogy goPATH-t osszon meg a WSL és a Win32 között.
Az együttműködés letiltása
A felhasználók letilthatják a Windows-eszközök egyetlen WSL-munkamenethez való futtatását a következő parancs gyökérként való futtatásával:
echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop
A Windows bináris fájljainak újbóli engedélyezéséhez lépjen ki az összes WSL-munkamenetből, és futtassa újra a bash.exe vagy futtassa a következő parancsot gyökérként:
echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop
Az interop letiltása nem marad meg a WSL-munkamenetek között – az interop újra engedélyezve lesz egy új munkamenet indításakor.
Windows Subsystem for Linux