在19H1(目前處於Insider Preview階段,預計4月份正式推送)中,微軟爲適用於Linux的Windows子系統帶來了一項有趣的功能,這項功能容許用戶從Windows 10訪問Linux子系統中的文件,今天的這期教程,咱們來討論這一功能的具體用法。shell
1、前提條件ide
在開始使用這一新功能以前,請確保你的設備正在運行的Windows 10系統知足如下條件:spa
在開始使用上文咱們所提到的這一功能以前,請確保如下條件的知足:命令行
Windows 10 系統須爲19H1或更高版本;3d
Linux子系統已經安裝並啓用。blog
要在Windows 10中啓用Linux子系統,請先確認你的計算機所使用的處理器支持虛擬化技術,且該項功能已經開啓;教程
而後,咱們須要在「控制面板」-「程序」-「啓用或關閉Windows功能」中勾選「適用於Linux的Windows子系統」,接着從新啓動Windows 10;three
最後,咱們須要在微軟商店(過去叫Windows商店)中下載、安裝並簡單設置Linux子系統。資源
在適用於Linux的Windows子系統剛剛推出時,咱們只有一個Ubuntu發行版可選,不過如今,除了Ubuntu以外,咱們還能夠選擇openSUSE、SUSE Linux、Debian、Kali Linux等其餘發行版。博客
今天的這期教程適用於微軟商店中所提供的全部Linux發行版。
2、在資源管理器中訪問文件
如今,咱們已經可經過Windows 10中的文件資源管理器來Linux子系統中的文件,就像咱們平時訪問和管理Windows 10裏的文件同樣。對於Linux子系統中的文件,咱們不只可使用Windows 10的文件資源管理器來執行移動、複製和粘貼等操做,咱們甚至可使用Notepad++或者Visual Studio Code來編輯它們。
當咱們處於Linux子系統的命令行窗口時,只需輸入並執行下面這行命令,咱們便可以在Windows文件資源管理器中訪問和管理Linux子系統中咱們當前所處的文件路徑下的文件:
explorer.exe .
提示:在輸入和執行以上命令時,請注意,explorer.exe和.之間有個空格。
例如,當咱們在正在運行的Linux子系統中執行下面這行命令:
cd /home/
那麼咱們所處的路徑將爲/home/
此時,咱們若在Linux的命令行中執行下面這行命令:
explorer.exe .
那麼Windows文件資源管理器將會訪問Linux子系統中/home下的文件和文件夾。
一樣地,咱們能夠經過這一原理訪問Linux子系統中幾乎全部的文件。
3、在PowerShell中訪問文件
有些時候,咱們須要在PowerShell中訪問Linux子系統裏的文件,這並不是是件難事。
Linux子系統的文件目錄在Windows文件資源管理器中的路徑爲:
\\wsl$\正在運行的Linux發行版的名稱\
例如:
\\wsl$\Ubuntu
熟悉CMD或者PowerShell命令的同窗可能已經猜到應該怎樣作了。是的,用dir命令便可。
例如,若是咱們想要使用PowerShell來訪問Ubuntu子系統中的文件,那麼咱們一共須要執行兩條命令,第一條命令是:
cd \\wsl$\Ubuntu
這條命令的做用是切換到Linux子系統根目錄中的文件所在的路徑;
第二條命令是:
dir
這條命令是獲取當前文件路徑下的文件(包括文件夾)列表。
4、已知問題
經過文件資源管理器來訪問Linux子系統中的文件是Windows 10上的一個新功能(目前處於預覽階段),它可能並不完美,如下是微軟在其官方博客中提到的一些已知問題:
一、就目前來講,只有當某一Linux子系統運行時,咱們才能夠從Windows文件資源管理器訪問它裏面的文件,據IT之家瞭解,微軟將會在將來的Windows更新中提供文件資源管理器對處於非運行狀態的Linux子系統中的文件的訪問支持。
二、若是你想在命令提示符(CMD)中操做Linux子系統裏的文件,那麼請注意,因爲CMD不支持將UNC路徑做爲當前目錄,因此相似於:
cd \\wsl$\Ubuntu\home
這樣的命令是沒法執行的。
不過,相似於下面這樣的命令執行起來則沒有問題:
copy \\wsl$\Ubuntu\home\threeseven\MyFile\test.txt C:\LinuxFiles\
這行命令的做用是將Ubuntu系統/home/threeseven(用戶文件夾)/MiFiles/test.txt複製到Windows系統C盤的LinuxFiles文件夾內。
三、不要經過AppData文件夾訪問你的Linux子系統中的文件,由於這頗有可能會致使Linux系統中的文件損壞。
5、導出Linux分區至Windows 10
若是當前Windows 10中有Linux子系統正在運行,那麼在將Linux分區導出至Windows 10以前,請先結束目標Linux子系統的運行。方法以下:
首先,咱們須要知道當前有哪些Linux發行版正在運行。爲此,咱們能夠在Windows 10的命令提示符或者PowerShell中輸入並運行這行命令:
wsl.exe --list --running
以Ubuntu爲例,若要結束它的運行,那麼咱們須要執行的命令爲:
wsl.exe --terminate Ubuntu
若是你嫌上面那行命令太長,那麼運行這行命令也能夠:
wsl -terminate Ubuntu
如今,咱們已經結束了Linux子系統的運行。若是你忘了執行這一步也不要緊,由於當咱們開始把Linux分區導出至Windows 10時,Linux的運行將被強行終止。
要將Linux分區導出至Windows 10,咱們須要打開命令提示符或者Powershell,而後執行這個命令:
wsl.exe --export Linux發行版的名稱 要導出到的位置\導出的壓縮文件的文件名
例如,咱們想把Linux分區導出至桌面,那麼以小編的電腦爲例,咱們應該在命令提示符或者PowerShell裏面執行的命令爲:
wsl --export Ubuntu C:\Users\ThreeSeven\Desktop\Ubuntu.tar
在導出文件時,請耐心等待,由於導出的過程須要一些時間。
導出完成後,咱們能夠在目標位置看到一個.tar格式的壓縮文件,這個壓縮文件裏面的內容就是Linux分區中的所有文件。
6、將導出的Linux歸檔文件導入到一個新的Linux子系統
在上一小節,咱們已經將Linux分區中的所有文件導出到Windows 10的桌面的一個歸檔文件裏,如今,咱們再嘗試着把這些文件導入到一個新的Linux子系統當中。這一操做能夠用於克隆Linux子系統。
要執行這一導入操做,咱們能夠在命令提示符或者PowerShell中執行這條命令:
wsl.exe --import 新的Linux子系統的名稱 新的Linux子系統的目標位置 TAR歸檔文件的路徑
例如:
wsl.exe --import Ubuntu_New C:\Ubuntu_New C:\Users\ThreeSeven\Desktop\Ubuntu.tar
在導入文件時,請耐心等待,由於導入的過程須要一些時間。
導入成功後,咱們能夠在新的Linux子系統的目標位置看到這樣兩個文件夾:
要運行新的Linux子系統,咱們須要在命令提示符或者PowerShell中執行如下命令:
wsl --distribution 新的Linux子系統的名稱
例如:
wsl --distribution Ubuntu_New
若要刪除咱們經過導入Linux歸檔文件而獲得的這個新的Linux子系統,咱們能夠在命令提示符或者PowerShell中執行這條命令:
wsl.exe --unregister 目標Linux子系統的名稱
例如:
wsl.exe --unregister Ubuntu_New
7、總結
在今天的這期教程中,咱們討論了在Windows 10的文件資源管理器和PowerShell中訪問Linux文件的方法,此外,咱們還了解了如何將Linux分區導出至Windows 10以及如何將Windows 10中的Linux歸檔文件導入到一個新的Linux子系統當中。文中所述的方法看起來很是簡單,若親自動手實踐,你會發現它們作起來就和看起來同樣簡單。想要了解更多關於Windows的使用技巧,請繼續關注後續的文章。