我想在Windows 10的命令行中使用ls
和许多其他Linux工具。我知道有GnuWin32和其他二进制替换,但这些都不像Windows子系统那样优雅。 for Linux(WSL);包括更新机制。
使用WSL,可以通过ls ...
从命令行调用bash -c "ls ..."
,这非常有用。但是,理想情况下,我只需在命令行中键入ls
。我可以创建ls.bat
基本上@bash -c "ls %*"
- 但我必须为我想要导出的每个命令执行此操作。是否有更直接的方法将ls
(以及许多其他人)导出到命令行?
答案 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)
微软并不直接支持您所要求的内容,但是......
CMD /?
通知我们以下两个注册表项:HKey_Local_Machine\Software\Microsoft\Command Processor\AutoRun
和HKey_Current_User\Software\Microsoft\Command Processor\AutoRun
,(只要/D
选项未指定)将同时执行在打开新的命令提示符窗口时,检查要运行的内容(按此顺序)。如果我们将这两个内容与FOR
循环放在一起,并在您的用户文件夹中放置一个漂亮的,可轻松自定义的文件,我们可以非常接近我想要的内容。
我将把它放在HKLM中,并引用%USERPROFILE%
中名为exportlinuxcommands
的文件,以便所有用户都可以使用,但可以在每个用户上轻松自定义基础,以及仅适用于设置它的用户。如果您只想让一个用户使用它,或者不希望每个用户对其进行自定义,那么您必须稍微修改一下这些说明。
HKey_Local_Machine\Software\Microsoft\Command Processor
IF EXIST %USERPROFILE%\exportlinuxcommands FOR /F %i in (%USERPROFILE%\exportlinuxcommands) DO @doskey %i=bash -c "%i $*"
作为&#34;值数据&#34;。现在,您只需要在名为%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}"