时间:2020-08-23 08:52:41来源:Win10专业版官网点击量:N次
Windows Linux子系统(WSL)的优势之一是,您不仅可以在Windows 10中运行Linux发行版,而且还具有在Linux中运行Windows 10程序的灵活性。
此功能使Linux可以控制Windows的各个方面,或者使Windows程序与WSL文件系统或Linux命令处理的输出交互。
它还允许WSL用户创建影响Linux发行版的复杂Shell脚本,还可以用于在Windows 10中执行命令。
如何从WSL Linux启动Windows 10可执行文件
Windows 10和Linux都使用“ PATH”变量,该变量包含在执行程序时搜索的文件夹列表。
如果尝试运行程序,但在PATH中找不到该程序,则Linux和Windows都会告诉您找不到该程序。在这种情况下,您需要使用其完整路径(如“ C:\ Notepad2 \ Notepad.exe”)启动程序。
Windows 10启动WSL发行版时,它将配置Linux PATH变量以包括标准Linux二进制文件夹和常规Windows 10路径。
您可以通过env | grep "PATH"在WSL Shell提示符下键入命令来查看此路径。
PATH变量
注意:普通的Windows驱动器号会自动挂载在'/ mnt / c','/ mnt / d'等下。
在WSL Shell中时,只需键入其全名(包括.exe扩展名)即可执行Windows 10程序。
如果执行命令时不包括.exe扩展名,则WSL会认为它是Linux命令。
例如,如果要启动Windows记事本以编辑PHP源文件,则应输入以下命令:
notepad.exe test.php
此命令将允许您使用记事本而不是普通的Linux文本编辑器来编辑Linux文件。
如果要启动不在PATH中的程序,则需要指定完整文件名。
例如,如果您想使用7Zip来存档文件夹,但是该文件夹不在您的路径中,则可以使用以下命令:
"/mnt/c/program files/7-zip/7z.exe" a -tzip code.zip code/
请注意,由于“程序文件”包含空格,因此我们必须将7z.exe命令括在引号中。
应该注意的是,您将无法启动需要WSL中的管理特权的Windows 10程序。同样,如果Linux文件需要提升的权限,则将无法使用Windows程序访问它。
处理Windows命令的输出
除了启动程序以与WSL中的文件交互之外,您还可以在Linux中处理Windows 10程序的输出。
执行Windows控制台程序时,其输出直接在Linux中而不是Windows中显示。
然后可以使用诸如awk,sed,sort等程序来处理此输出。
作为一个简单的示例,如果我们想获取按服务名称排序的Windows 10服务列表,则可以使用以下命令:
sc.exe query | grep SERVICE_NAME | awk '{print $1=""; print $0}' | sort -bf| sed '/^$/d' 通过Linux命令管道输出SC.exe
此功能还允许您将Windows应用程序用作复杂的Linux Shell脚本的一部分。
这些Shell脚本可用于检查进程,监视文件更改,基于Windows 10进程的输出执行命令以及许多其他任务。
虽然您可以找到大多数Linux程序的Windows等效版本,但通过使用WSL混合和匹配两种环境,您可以兼得两者。
此功能使您可以在两种环境中使用最舒适的工具。