Megosztás:


Windows- és Linux-fájlrendszerek használata

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$ vagy C:\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$

Projektfájlok megtekintése a Windows Fájlkezelőben

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.