如何将Windows子系统用于Linux(WSL)

Linux(WSL)的Windows子系统允许在Windows 10及更高版本以及Windows Server 2019及更高版本上运行Linux二进制可执行文件。WSL通过Hyper-V特征的子集使用真正的Linux内核。要了解如何为Windows安装WSL,请参阅 如何在Windows 10及更高版本上本地运行Linux.

在本教程中,我们将从一些简单的示例开始,并以使用Linux,PowerShell和DOS(CMD.EXE)命令一起使用。

入门

首先,请按照以下方式打开安装的Linux发行版:

1. 选择 开始 然后 的Ubuntu 或您安装的任何Linux发行版。例如:

2. 现在,您应该处于Linux命令提示符(用于您的分发):

立即注意的一件事是运行过程的数量,在这种情况下为12。这突出了一个事实,就Linux而言,它是用自己的"机器"运行的。在这种情况下,Windows实际上正在运行236个进程(包括WSL):

这个示例强调了您可以从WSL Linux环境运行PowerShell命令的事实。在以上,请注意围绕PowerShell命令的引号(并非所有WSL PowerShell命令都需要引号 powershell.exe get-process)。该虚拟机行为也可以通过运行Linux看到 最佳 命令:

在上述第四行,我们看到"物理"内存有11911.9 MIB(或旧版MB)。要确定系统的实际物理内存,您可以从WSL内部运行以下Windows命令:

systeminfo.exe | finstr.exe

这表明实际上有15289 MB的物理记忆:

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

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

WSL和Windows文件系统

从WSL中运行以下命令:

cd /
ls -lah

例如:

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

在上面,我们看到标准的Windows文件夹,例如程序文件,用户,Windows和。

现在,在Windows的侧面,我们可以访问WSL文件系统,如下所示:

1. 打开Windows Explorer和地址栏中,键入网络驱动器 \\ wsl $, 如图所示:

请注意,上图意味着您可以同时安装多个Linux发行版,这确实是这种情况。

2. 双击您安装的Linux发行版(在此示例中进行Ubuntu)。这提供了对WSL文件系统的访问:

WSL和Windows DU命令

接下来,让我们检查Windows真正具有的Linux命令-DU命令。在Windows中,按大小对文件和目录进行排序可能具有挑战性。对于Linux,此任务相对简单:

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

一个示例如下:

对于上述:

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

现在,如果Windows可以做到这一点,那不是很好吗?好吧,感谢WSL,现在可以。从高架Windows命令提示符(CMD.EXE)中运行以下内容:

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

这导致输出类似:

注意 WSL 在每个Linux命令之前。这需要让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 尴尬 命令。为了更好地了解命令流,我们将从代表开始 Get-Childitem 输出:

然后我们使用 Findstr DOS命令选择包含" Karlito"的输出:


最后,我们使用Linux选择第二列 尴尬 命令:

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

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

同样,我们将逐步查看,从代表输出开始 Get-Childitem:

接下来,我们找到包含" Karlito::

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

观察 \ 角色之前 $6 在里面 尴尬 命令。因为 $ 角色在Powershell中具有特殊的含义,因此我们必须使用 \, 如图所示。

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

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

总而言之,通过使用WSL将Linux分布附加到Windows上,您可以扩展窗户的功能和功能,并在指尖上放有方便的Linux外壳。而且,希望本教程中提供的信息将提高您的命令和效率。

1

发表回复