当前位置: 首页 > 知识库问答 >
问题:

如何在Windows命令行中通过WSL调用Linux命令?

云新知
2023-03-14

我想使用Windows 10上的命令行中的ls,以及许多其他Linux工具。我知道有GnuWin32和其他二进制替代品,但没有一个能像Linux的Windows子系统(WSL)那样优雅地工作;包括更新机制。

使用WSL,可以调用ls bash-c“ls…”从命令行执行code> ,非常有效。但是,理想情况下,我只需在命令行上键入ls。我可以创建一个ls。bat基本上是@bash-c“ls%*”——但是我必须为我想要导出的每个命令都这样做。是否有更直接的方法将ls(以及其他许多)导出到命令行?


共有3个答案

林亦
2023-03-14

尝试使用windowsBash

在Windows Bash中运行以下命令以生成命令的快捷方式

wgethttps://raw.githubusercontent.com/aleppos/windowsBash/master/windowsBash-P/usr/bin

然后只需将以下目录添加到Windows*C中的路径中:\windowsBash

当您想要更新命令列表时,只需再次运行Shell文件

windowsBash

林波鸿
2023-03-14

然而,微软并不直接支持你的要求...

  • 您可以使用doskey.exe创建控制台别名,但是这些控制台别名不是持久的(当您打开新的命令提示符窗口时,它们都消失了)。
  • CMD/?通知我们以下两个注册表键:HKey_Local_Machine\Software\Microsoft\命令处理器\AutoRunHKey_Current_User\Software\Microsoft\命令处理器\AutoRun,只要没有指定/D选项,都将检查它们当打开新的命令提示符窗口时,要运行的内容(按此顺序)。

如果我们将这两件事与FOR循环和用户文件夹中一个漂亮、易于自定义的文件结合起来,我们可以得到我认为您想要的非常接近的结果
我将把它放在HKLM中,并引用%USERPROFILE%中的一个文件,名为exportlinuxcommands,这样所有用户都可以使用它,但每个用户都可以轻松地自定义它,并且只对设置它的用户有用。如果您只想为一个用户定制,或者不想为每个用户定制,那么您必须稍微修改一下说明。

  1. 打开注册表编辑器
  2. 转到HKey_Local_Machine软件\Microsoft\命令处理器
  3. 右键单击窗口的空部分,然后选择新建

现在,您只需在%USERPROFILE%文件夹(即C:\Users\YourUserName)中创建一个名为exportlinuxcommands)的文件,每个Linux命令都需要在单独的一行上添加别名。例如:

ls
rm
cat

想要移除一个?从文件中删除它,它将不存在于您打开的下一个命令提示符窗口中。
要稍后添加另一个吗?只需将其添加到文件自己的行中,下次打开命令提示符窗口时,它就会在那里。

江礼骞
2023-03-14

显然,这是WSL要求最多的功能,Microsoft现在支持这一功能。要在命令提示符(或PowerShell)中使用linux命令,只需在命令前面加上wsl。例如,下面是如何从CMD运行ls

C:\temp> wsl ls
<- contents of C:\temp ->

或者下面是更新包列表的方法。

C:\temp> wsl sudo apt-get update
[sudo] password for username:
Hit:1 http://archive.ubuntu.com/ubuntu xenial InRelease
Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB]

更多详情可在官方文件中找到。我不确定您是否正在寻找一种不涉及任何前缀的解决方案。如果是这样的话,我还不知道有什么解决办法。

 类似资料:
  • 我正在尝试在WSL(Linux的Windows子系统)上使用WebAssembly和Emscripten。正在尝试从命令行运行示例html文件会导致错误: 如何在Linux系统(Ubuntu)上从WSL命令行访问主机(windows)浏览器?

  • “我们在git中甚至在Windows中都使用linux命令。我想知道它是如何让这些linux命令在Windows上运行的?”

  • 问题内容: 我正在尝试在执行Windows批处理命令中运行命令的构建步骤下在Jenkins中运行命令。 我写了dir作为命令运行 当作业在Jenkins中运行时,该错误是由文件内容更改触发的,并显示以下错误 请参阅此问题。 问题答案: 回答这个问题:实际上,我还没有在Jenkins中将Windows安装为服务。因此,为此,我们需要转到“管理Jenkins”,然后单击“ Windows即服务”。即,

  • 问题内容: 可以在调用“ java jar jar_name.jar”时指定要使用的JVM。我的机器上安装了两个JVM。我无法更改JAVA_HOME,因为它可能会破坏所有准备就绪的代码。 亲切的问候 史提芬 问题答案: 是的-仅显式提供java.exe的路径。例如: 对于正在运行的命令外壳,最简单的方法是: 例如,这是一个完整的会话,显示我的默认JVM,然后是路径的更改,然后是新的: 但是,这不会

  • 问题内容: 我正在通过Java上的JSch建立ssh连接,在我尝试运行此.sh文件之前,一切似乎都工作正常。外壳程序脚本的名称是 repoUpdate.sh ,它非常简单: 这是我在Linux控制台上直接获得的输出,其中包含命令的正确响应: 现在,这是带有ssh连接的我的方法的Java代码,该代码试图调用同一文件 我得到的答复如下: svn命令(版本9432)没有任何输出或执行的迹象。 我认为这可

  • 我正在通过Java上的JSch建立一个SSH连接,在我尝试运行它之前,一切似乎都很正常。sh文件。shell脚本的名称是