在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的使用技巧,请继续关注后续的文章。