首页 / 如何使用WSL在Windows和Linux之间进行混合和匹配

如何使用WSL在Windows和Linux之间进行混合和匹配

2024/12/16 02:00:15
Windows Subsystem for Linux (WSL) 允许用户在Windows资源管理器中直接访问Linux文件系统,通过输入 "\\wsl$" 或在发行版名称后添加反斜杠(\)来导航。此外,WSL还支持从Linux系统访问Windows文件,Windows驱动器的字母将显示为Linux文件系统中的/mnt/[驱动器字母]。在Linux中运行Windows命令时,只需在命令末尾添加“.exe”。WSL还支持在PowerShell中运行Linux命令,并且可以在Windows中运行Linux GUI程序,通过命令行或开始菜单启动。
如何使用WSL在Windows和Linux之间进行混合和匹配

从Windows资源管理器访问Linux文件

你可以在Windows资源管理器中访问通过WSL安装的任何Linux发行版的文件。在左侧边栏中,你会看到一个Tux的图标,这是Linux的吉祥物,然后点击三角形展开以查看你安装的所有WSL发行版。之后,你就可以通过资源管理器导航Linux文件系统了。

你也可以在资源管理器中输入 "\\wsl$" 来查看你的发行版。你也可以通过在发行版名称后面添加一个反斜杠(\)来直接导航到你的发行版。例如,Ubuntu 会是 "\\$wsl\ubuntu\"。你也可以通过这种方式指定路径名。只需记住将正斜杠(/)改为反斜杠(\),因为这是 Windows 分隔路径的方式。

当你在WSL命令行中工作时,可以使用以下命令在当前工作目录中打开资源管理器:

explorer.exe .

“你也可以通过 PowerShell 来完成这个操作,但这展示了 WSL 和 PowerShell 的良好互操作性。”

从Linux访问Windows文件

你还可以从Linux系统的另一侧访问Windows文件。Windows驱动器的字母将显示为Linux文件系统中的/mnt/[驱动器字母]。

例如,"C:\"驱动器将挂载在"/mnt/c"。C:\Windows目录将是"/mnt/c/Windows"。

这也将适用于你安装的任何图形Linux应用程序。

在Linux中运行Windows命令

要在Linux中运行Windows命令,只需在Linux终端中输入它们,并在末尾添加“.exe”。你之前已经看到过使用Explorer的例子。

你还可以运行其他命令。如果你想在记事本中打开一个文件,可以输入以下命令:

记事本文件

你也可以在Linux管道中运行Windows命令,处理Windows命令的输出。你可以使用Linux的grep命令搜索Windows输出。

如果我们想要在PowerShell的目录列表中找到Windows的提及:

powershell.exe dir "C:/" | grep 'Windows'

如果你在混合使用Windows和Linux命令,请记住,虽然Windows命令不区分大小写,但Linux命令是区分大小写的。这意味着Linux命令依赖于正确的大小写组合才能正确运行。

当你在Linux中运行Windows命令时,它们将具有与WSL进程和当前用户相同的Windows权限。如果你运行`ls /mnt/c`,你会注意到列出文件如`pagefile.sys`(Windows页面文件)的权限被拒绝,因为这通常只保留给管理员用户。如果你使用`sudo`,你将能够列出所有文件,因为WSL现在将具有完全权限:

使用sudo命令列出/mnt/c目录的内容

在PowerShell中运行Linux命令

你也可以通过在Windows PowerShell中运行Linux命令来回溯。你可以使用wsl命令,后跟你想要运行的任何Linux命令。

在Linux中列出"/bin"目录:

在WSL中使用ls /bin

从Windows切换到Linux时,进程将具有与启动Linux命令的会话相同的权限。例如,由普通用户发出的命令将具有相同的权限,而使用sudo发出的命令将被提升为超级用户。

在Windows中运行Linux GUI程序

在Windows 11上使用WSL,你可以在Windows中运行Linux GUI程序。有两种方法可以做到这一点:从命令行或从开始菜单。

要在终端中启动一个GUI程序,只需从命令行调用它。要运行GNU Emacs:

emacs

当你以这种方式运行一个命令时,你可能会注意到一个问题,那就是它可能会占用你的终端。除非你关闭程序或将其放到后台,否则你将不会收到提示符。要将程序作为后台进程启动,可以在其后加上 &(与号):

emacs &

要将一个已经在运行的程序放到后台,可以使用shell的作业控制功能。按下Ctrl+z来挂起程序。这个组合键是小写的,因为键盘组合像Linux命令一样是区分大小写的。系统会打印出作业号和一个进程被挂起的消息。然后输入以下命令将其放到后台:

背景

你也可以从开始菜单访问GUI程序。任何Linux发行版都会在开始菜单中显示为一个文件夹,前提是已经安装了GUI程序。例如,Ubuntu会显示为“Ubuntu”。要启动一个程序,只需点击它即可,就像启动一个普通的Windows程序一样。