分享最新优惠信息
购买主机更加划算

简单介绍使用适用于Linux的Windows子系统 (WSL)

适用于Linux的Windows子系统 (WSL) 允许在Windows 10及更高版本、Windows Server 2019及更高版本上本地运行Linux二进制可执行文件。WSL通过Hyper-V功能的子集使用真正的Linux内核。此前已经介绍过Windows系统安装WSL的简单方法,请参看Windows10及更高版本上本地运行Linux系统的简单方法

在本文中,小编将简单介绍一些简单的使用示例,并同时介绍结合使用Linux、PowerShell和DOS (cmd.exe) 命令的实用使用方法。

入门知识

首先,打开已安装的Linux发行版,选择开始菜单,然后选择Ubuntu或你安装的任何Linux发行版,具体如下图所示:

打开Linux发行版

接下来会进入Linux 命令提示符界面(本文是Ubuntu发行版):

Linux命令提示符

需要注意的事项是正在运行的进程数,在本例中为12个。这表明,就Linux系统而言,它是运行在自己的“虚拟内核”上。实际情况下,Windows真正运行的是236个进程(包括WSL):

进程数

此外,此示例还表面你可以从WSL Linux环境运行PowerShell命令。在上图中,请注意PowerShell命令旁边的引号(并非所有WSL PowerShell命令都需要引号,如powershell.exe Get-Process就不需要)。另外,通过运行Linux top命令也可以看到此虚拟机行为:

Linux top命令

在上图中的第四行,可以看到有11911.9 MiB(或传统MB)的“物理”内存。要确定系统的实际物理内存,可以在WSL中运行以下Windows命令:

systeminfo.exe | finstr.exe

这表明实际上有15289MB的物理内存:

实际物理内存

换句话说,Windows物理内存的一部分已分配给Linux虚拟机。

接下来,将检查 WSL Linux和Windows文件系统以及它们是如何相互公开的。

WSL和Windows文件系统

在WSL中,运行以下命令:

cd /
ls -lah

显示结果界面如下图所示:

WSL命令

这是一个典型的Linux根目录列表。但是,如果查看mnt目录,我们可以看到Windows文件系统是如何通过WSL公开的(注意命令):

Linux根目录

在上面,能够看到标准的Windows文件夹,例如Program Files、Users、Windows等。

现在,在Windows 端,可以访问WSL文件系统,具体步骤如下。

1、打开Windows资源管理器,在地址栏中键入网络驱动器\\wsl$,如下图所示:

Windows资源管理器

请注意,上图表面你可以同时安装多个Linux发行版,当然,实际情况也确实如此。

2、双击你安装的Linux发行版(本例中为Ubuntu),这样就可以对WSL文件系统进行访问,其结果和上面在WSL中显示的是一样的:

对WSL文件系统进行访问

WSL和Windows du命令

接下来,检查一个Windows真正应该具有的Linux 命令——du命令。在 Windows系统中,按大小对文件和目录进行排序可能比较困难。不过对于Linux系统,此任务相对简单,命令如下:

du -aSh 2>&1 | sort -n -r | head -n 5

其示例如下:

du命令

在上图中:

  • du -aSh 2>&1返回文件/目录大小信息,忽略任何权限错误。
  • sort -n -r按大小从小到大对文件/目录列表进行排序。
  • head -n 5返回前5个最大的文件/目录。

如果Windows可以做到这一点,那也会方便不少。其实,通过WSL,Windows系统完全可以实现。从提升的Windows命令提示符 (cmd.exe) 运行以下命令:

wsl du -aSh 2>&1 | wsl sort -n -r | wsl head -n 5

这时候输出类似于下图:

Windows系统WSL命令

注意:每个Linux命令前面需要添加wsl ,这主要是让Windows知道我们正在运行Linux命令(来自你安装的发行版),从而不会出现认为是格式错误的Windows 命令。

接下来,小编再简单介绍一下Linux、PowerShell和DOS (cmd.exe) 命令的组合使用方法。

Linux和Windows命令的混合使用

下面是在WSL Linux命令提示符下混合命令的示例,这结合了Linux、PowerShell和DOS:

powershell.exe Get-ChildItem -Recurse -ErrorAction SilentlyContinue | findstr.exe "karlito" | awk '{print $2}'

首先运行Get-ChildItem PowerShell 命令,然后通过管道将其输入DOS findstr命令,最后通过管道将其输入Linux awk命令。为了更好地理解命令流程,这里将从代表性的Get-ChildItem输出开始:

Get-ChildItem

然后使用findstr DOS命令选择包含“karlito”的输出:

findstr命令

最后,使用Linux awk命令选择第二列,如下图所示:

Linux awk命令

接下来,将从PowerShell命令提示符运行类似的命令,如下所示:

Get-ChildItem -Recurse -ErrorAction SilentlyContinue | findstr.exe "karlito" | wsl awk '{ print \$6 }'

同样,这里将一步一步地看,从Get-ChildItem的代表性输出开始:

Get-ChildItem输出

接下来找到包含“karlito:

karlito

请注意上面的六列(PM/AM数据被视为一列)。因此,需要将awk命令更改如下:

awk命令

注意观察awk命令中$6之前的\字符。因为$字符在PowerShell中具有特殊含义,所以必须使用\进行转义,如上图所示。

最后一个示例从Windows命令提示符 (cmd.exe) 运行相同的命令:

cmd.exe命令

请注意使用powershell.exe运行PowerShell命令和使用 wsl运行Linux 命令。

总结

通过使用WSL将Linux发行版附加到Windows,可以扩展Windows的功能和功能,并让Linux shell触手可及,所以使用起来非常的方便。此外,本文介绍的方法还可以够提高你使用命令的能力和效率。

如果大家需要在Windows系统中运行Linux命令的话,那么安装WSL时非常方便快捷的方法,无需安装Linux环境就可以轻松运行Linux命令行。

未经允许不得转载:惠主机 » 简单介绍使用适用于Linux的Windows子系统 (WSL)