下一次Windows更新將很快到來,我們將給WSL帶來激動人心的更新!包括在Windows中訪問Linux文件系統,以及改進在命令行中管理和配置發行版的方式。
在Windows中訪問Linux文件
過去,在Windows中創建和更改Linux文件會導致文件丟失或數據損壞。這是一項被高度要求和期待已久的功能。我們自豪地宣佈,您現在可以在Windows中輕鬆訪問Linux發行版中的所有文件。
在文件資源管理器中打開Linux文件
開始使用此功能的最佳方式是在文件資源管理器中打開Linux文件!為此,請打開您最喜歡的發行版,確保您當前的文件夾是您的Linux主目錄,然後鍵入:
explorer.exe
這將打開一個文件資源管理器窗口,位於Linux發行版內部。
從這裡,你可以訪問你想要的任何Linux文件,就像通過文件瀏覽器訪問任何其他文件一樣。這包括一些操作,例如:將文件拖動到其他位置,複製和粘貼,甚至是有趣的場景,比如使用上下文菜單在WSL目錄中打開VSCode!
即將到來文件資源管理器體驗的改進
使用此功能時,您會注意到發行版文件通過以下路徑展示: \wsl$<running>。這是Windows訪問每個發行版內部文件的方式(您可以在下一節瞭解詳細信息!)WSL團隊正在積極研究如何在文件資源管理器中提高Linux文件的可發現性。/<running>
在命令行中
WSL主要是一個命令行工具,因此當然,這個特性也適用於命令行。您可以通過訪問\wsl${distro name}來找到發行版的文件,其中{distribo name}是正在運行的發行版的名稱。以下是使用PowerShell訪問Debian的情況。
它是如何工作的
簡而言之: 9P協議文件服務器處理文件相關請求,Windows充當客戶端。
我們已經修改了WSL初始化守護程序,以包含9P服務器。此服務器包含支持Linux元數據的協議,包括權限。有一個Windows服務和驅動程序充當客戶端,與9P服務器(運行在WSL實例內部)對話。客戶端和服務器通過AF_UNIX套接字進行通信,因為WSL允許使用AF_UNIX在Windows應用程序和Linux應用程序之間進行互操作,如本文所述。
已知問題
這是一個新特性,它的某些部分可能無法完美工作。在使用此功能時,我們想讓您瞭解一些已知問題:
目前,發行版文件只能在發行版運行時從Windows訪問(我們的目標是在將來的更新中增加對非運行發行版的支持)
由於9P文件服務器在每個發行版內部運行,因此只有在該發行版運行時才能訪問。該團隊正在尋找幫助解決這一問題的方法。
訪問Linux文件被視為與訪問網絡資源相同,任何訪問網絡資源的規則仍然適用例如:當使用CMD時,cd \wsl$Ubuntuhome將不起作用(因為CMD不支持UNC路徑作為當前目錄),但是copy \wsl$Ubuntuhomesomefile.txt C:dev將起作用
舊規則仍然適用,你不應該在AppData文件夾中訪問你的Linux文件!如果你試圖通過AppData文件夾訪問你的Linux文件,你會繞過使用9P服務器,這意味著你將無法訪問你的Linux文件,並且你可能會破壞你的Linux發行版。
提交反饋
我們的團隊在聽取您的反饋方面投入了巨大的精力,事實上,這整個功能是基於我們偉大的社區反饋而創建的!請將你發現的任何問題提交在Github頁面:https://github.com/Microsoft/WSL,我們將盡最大努力解決這些問題。感謝社區幫助WSL成為一個了不起的工具!
改善wsl.exe命令行體驗
通過將命令整合到wsl.exe並添加更多的命令行功能,我們還在最新的更新中改進了命令行體驗。現在,您可以使用wsl.exe來執行配置和控制機器上的WSL所需的所有必要命令。你總是可以通過運行wsl.exe --help來檢查你可以從wsl.exe運行的所有命令。
新命令
我們還添加了一些新命令,這些命令將在使用wsl.exe時為您提供更多功能。
現在,您可以以不同的用戶運行命令,終止正在運行的發行版,甚至可以導出和導入不同的發行版!導出發行版是通過傳入--export作為參數來實現的,並將輸出當前發行版的tar文件。例如,您可以使用此功能與他人共享您的發行版設置。此外,如果你傳入--import作為參數,你可以導入一個tar文件,其中包含Linux發行版的根文件系統,這允許你導入你想要的任何發行版,以及你想要的任何配置。這是我們添加到wsl.exe的命令的完整列表。
新添加的命令
--user, -u <username>
以指定用戶的身份運行
--export <distributionname> <filename>/<distributionname>
將發行版導出到tar文件。
文件名可以是–用於標準輸
--import <distributionname> <installlocation> <filename>/<installlocation>/<distributionname>
將指定的tar文件作為新發行版導入。
文件名可以是–用於標準輸入
--terminate, -t <distributionname>終止發行版/<distributionname>
合併命令
wslconfig.exe內部存在的命令已經添加到wsl.exe,讓你可以更容易地配置發行版。我們的目標是將您與WSL的交互方式整合為一個二進制文件。
從wslconfig.exe添加到wsl.exe的命令
--list , -l
列出計算機上可用的所有發行版
還可以包含其他選項:
--all
列出所有發行版,包括當前正在安裝或卸載的發行版
–running僅列出當前正在運行的發行版
--setdefault, -s <distributionname>
將發行版設置為默認值
--unregister <distributionname>註銷發行版/<distributionname>
--upgrade <distributionname>將發行版升級為WslFs文件系統格式/<distributionname>
控制檯改進
Windows控制檯團隊還做了一些改進,您會在使用WSL時注意到這些改進。控制檯團隊將很快發佈Windows 10版本1903中的新特性的文章。保持關注!
英文原文:https://blogs.msdn.microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version-1903/ 譯者:困頓少年 寧子謙
閱讀更多 Python部落 的文章