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

时间:2017-09-20 08:29:13

标签: shortcut windows-subsystem-for-linux

我想在Windows 10的命令行中使用ls和许多其他Linux工具。我知道有GnuWin32和其他二进制替换,但这些都不像Windows子系统那样优雅。 for Linux(WSL);包括更新机制。

使用WSL,可以通过ls ...从命令行调用bash -c "ls ...",这非常有用。但是,理想情况下,我只需在命令行中键入ls。我可以创建ls.bat基本上@bash -c "ls %*" - 但我必须为我想要导出的每个命令执行此操作。是否有更直接的方法将ls(以及许多其他人)导出到命令行?

4 个答案:

答案 0 :(得分:15)

显然这是most requested feature for 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]

更多详情可在official docs中找到。 我不确定您是否在寻找不涉及任何前缀的解决方案。如果是这种情况,我还不知道任何解决方案。

答案 1 :(得分:5)

微软并不直接支持您所要求的内容,但是......

  • 您可以创建&#34; Console Alias&#34;使用doskey.exe,但这些 控制台别名不是持久的(当您打开新命令时 提示窗口他们已经全部消失了。
  • CMD /?通知我们以下两个注册表项:HKey_Local_Machine\Software\Microsoft\Command Processor\AutoRunHKey_Current_User\Software\Microsoft\Command Processor\AutoRun,(只要/D选项未指定)将同时执行在打开新的命令提示符窗口时,检查要运行的内容(按此顺序)。

如果我们将这两个内容与FOR循环放在一起,并在您的用户文件夹中放置一个漂亮的,可轻松自定义的文件,我们可以非常接近我想要的内容。
我将把它放在HKLM中,并引用%USERPROFILE%中名为exportlinuxcommands的文件,以便所有用户都可以使用,但可以在每个用户上轻松自定义基础,以及仅适用于设置它的用户。如果您只想让一个用户使用它,或者不希望每个用户对其进行自定义,那么您必须稍微修改一下这些说明。

  1. 打开注册表编辑器
  2. 转到HKey_Local_Machine\Software\Microsoft\Command Processor
  3. 右键单击窗口的空白部分,然后选择&#34; New&#34; &GT; &#34;字符串值&#34; (或&#34;可扩展字符串值&#34;,但是当您意识到命令处理器在读取值之后将扩展它们时,扩展似乎有点无意义。)
  4. 将其命名为&#34; AutoRun&#34; (不含引号)
  5. 双击刚刚创建的新值
  6. 输入IF EXIST %USERPROFILE%\exportlinuxcommands FOR /F %i in (%USERPROFILE%\exportlinuxcommands) DO @doskey %i=bash -c "%i $*"作为&#34;值数据&#34;。
  7. 现在,您只需要在名为%USERPROFILE%的{​​{1}}文件夹(即C:\Users\YourUserName)中创建一个文件,每个Linux命令都需要在单独的行中使用别名。例如:

    exportlinuxcommands

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

答案 2 :(得分:1)

尝试使用windowsBash

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

wget https://raw.githubusercontent.com/aleppos/windowsBash/master/windowsBash -P /usr/bin && chmod 0777 /usr/bin/windowsBash && windowsBash

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

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

windowsBash

答案 3 :(得分:0)

在Windows终端中,单击设置以打开settings.json 您将在此处找到发行版本设置。添加此行:

"startingDirectory": "\\\\wsl$\\{YOUR DISTRO}\\home\\{YourUsername}"