在19H1(目前处于InsiderPreview阶段,预计4月份正式推送)中,微软为适用于Linux的Windows子系统带来了一项有趣的功能,这项功能允许用户从Windows10访问Linux子系统中的文件,今天的这期教程,我们来讨论这一功能的具体用法。 一、前提条件 在开始使用这一新功能之前,请确保你的设备正在运行的Windows10系统满足以下条件: 在开始使用上文我们所提到的这一功能之前,请确保以下条件的满足: Windows10系统须为19H1或更高版本; Linux子系统已经安装并启用。 要在Windows10中启用Linux子系统,请先确认你的计算机所使用的处理器支持虚拟化技术,且该项功能已经开启; 然后,我们需要在控制面板程序启用或关闭Windows功能中勾选适用于Linux的Windows子系统,接着重新启动Windows10; 最后,我们需要在微软商店(过去叫Windows商店)中下载、安装并简单设置Linux子系统。 在适用于Linux的Windows子系统刚刚推出时,我们只有一个Ubuntu发行版可选,不过现在,除了Ubuntu之外,我们还可以选择openSUSE、SUSELinux、Debian、KaliLinux等其他发行版。 今天的这期教程适用于微软商店中所提供的所有Linux发行版。 二、在资源管理器中访问文件 现在,我们已经可通过Windows10中的文件资源管理器来Linux子系统中的文件,就像我们平时访问和管理Windows10里的文件一样。对于Linux子系统中的文件,我们不仅可以使用Windows10的文件资源管理器来执行移动、复制和粘贴等操作,我们甚至可以使用Notepad或者VisualStudioCode来编辑它们。 当我们处于Linux子系统的命令行窗口时,只需输入并执行下面这行命令,我们即可以在Windows文件资源管理器中访问和管理Linux子系统中我们当前所处的文件路径下的文件: explorer。exe。 提示:在输入和执行以上命令时,请注意,explorer。exe和。之间有个空格。 例如,当我们在正在运行的Linux子系统中执行下面这行命令: cdhome 那么我们所处的路径将为home 此时,我们若在Linux的命令行中执行下面这行命令: explorer。exe。 那么Windows文件资源管理器将会访问Linux子系统中home下的文件和文件夹。 同样地,我们可以通过这一原理访问Linux子系统中几乎所有的文件。 三、在PowerShell中访问文件 有些时候,我们需要在PowerShell中访问Linux子系统里的文件,这并非是件难事。 Linux子系统的文件目录在Windows文件资源管理器中的路径为: wsl正在运行的Linux发行版的名称 例如: wslUbuntu 熟悉CMD或者PowerShell命令的同学可能已经猜到应该怎样做了。是的,用dir命令即可。 例如,如果我们想要使用PowerShell来访问Ubuntu子系统中的文件,那么我们一共需要执行两条命令,第一条命令是: cdwslUbuntu 这条命令的作用是切换到Linux子系统根目录中的文件所在的路径; 第二条命令是: dir 这条命令是获取当前文件路径下的文件(包括文件夹)列表。 四、已知问题 通过文件资源管理器来访问Linux子系统中的文件是Windows10上的一个新功能(目前处于预览阶段),它可能并不完美,以下是微软在其官方博客中提到的一些已知问题: 1、就目前来说,只有当某一Linux子系统运行时,我们才可以从Windows文件资源管理器访问它里面的文件,据IT之家了解,微软将会在未来的Windows更新中提供文件资源管理器对处于非运行状态的Linux子系统中的文件的访问支持。 2、如果你想在命令提示符(CMD)中操作Linux子系统里的文件,那么请注意,由于CMD不支持将UNC路径作为当前目录,所以类似于: cdwslUbuntuhome 这样的命令是无法执行的。 不过,类似于下面这样的命令执行起来则没有问题: copywslUbuntuhomethreesevenMyFiletest。txtC:LinuxFiles 这行命令的作用是将Ubuntu系统homethreeseven(用户文件夹)MiFilestest。txt复制到Windows系统C盘的LinuxFiles文件夹内。 3、不要通过AppData文件夹访问你的Linux子系统中的文件,因为这很有可能会导致Linux系统中的文件损坏。 五、导出Linux分区至Windows10 如果当前Windows10中有Linux子系统正在运行,那么在将Linux分区导出至Windows10之前,请先结束目标Linux子系统的运行。方法如下: 首先,我们需要知道当前有哪些Linux发行版正在运行。为此,我们可以在Windows10的命令提示符或者PowerShell中输入并运行这行命令: wsl。exelistrunning 以Ubuntu为例,若要结束它的运行,那么我们需要执行的命令为: wsl。exeterminateUbuntu 如果你嫌上面那行命令太长,那么运行这行命令也可以: wslterminateUbuntu 现在,我们已经结束了Linux子系统的运行。如果你忘了执行这一步也没关系,因为当我们开始把Linux分区导出至Windows10时,Linux的运行将被强行终止。 要将Linux分区导出至Windows10,我们需要打开命令提示符或者Powershell,然后执行这个命令: wsl。exeexportLinux发行版的名称要导出到的位置导出的压缩文件的文件名 例如,我们想把Linux分区导出至桌面,那么以小编的电脑为例,我们应该在命令提示符或者PowerShell里面执行的命令为: wslexportUbuntuC:UsersThreeSevenDesktopUbuntu。tar 在导出文件时,请耐心等待,因为导出的过程需要一些时间。 导出完成后,我们可以在目标位置看到一个。tar格式的压缩文件,这个压缩文件里面的内容就是Linux分区中的全部文件。 六、将导出的Linux归档文件导入到一个新的Linux子系统 在上一小节,我们已经将Linux分区中的全部文件导出到Windows10的桌面的一个归档文件里,现在,我们再尝试着把这些文件导入到一个新的Linux子系统当中。这一操作可以用于克隆Linux子系统。 要执行这一导入操作,我们可以在命令提示符或者PowerShell中执行这条命令: wsl。exeimport新的Linux子系统的名称新的Linux子系统的目标位置TAR归档文件的路径 例如: wsl。exeimportUbuntuNewC:UbuntuNewC:UsersThreeSevenDesktopUbuntu。tar 在导入文件时,请耐心等待,因为导入的过程需要一些时间。 导入成功后,我们可以在新的Linux子系统的目标位置看到这样两个文件夹: 要运行新的Linux子系统,我们需要在命令提示符或者PowerShell中执行以下命令: wsldistribution新的Linux子系统的名称 例如: wsldistributionUbuntuNew 若要删除我们通过导入Linux归档文件而得到的这个新的Linux子系统,我们可以在命令提示符或者PowerShell中执行这条命令: wsl。exeunregister目标Linux子系统的名称 例如: wsl。exeunregisterUbuntuNew 七、总结 在今天的这期教程中,我们讨论了在Windows10的文件资源管理器和PowerShell中访问Linux文件的方法,此外,我们还了解了如何将Linux分区导出至Windows10以及如何将Windows10中的Linux归档文件导入到一个新的Linux子系统当中。文中所述的方法看起来非常简单,若亲自动手实践,你会发现它们做起来就和看起来一样简单。想要了解更多关于Windows的使用技巧,请继续关注IT之家学院。