来自 WSL2 shell 的别名 CMD 命令

来自 WSL2 shell 的别名 CMD 命令

我在 Windows 10 上运行 WSL2,并且希望能够在不退出 Linux shell 的情况下从中运行 CMD 命令。具体来说,我想这样做:

wmic diskdrive get Model,Manufacturer,Size,DeviceID,Status,InterfaceType

我如何使用 WSL2 做到这一点?

答案1

比我更了解的人可能知道更好的方法或能够提出改进建议,但我能想到的解决这个问题最简单的方法是使用 Bash 别名。我创建了一个名为lsd(简称sd设备或d我无需离开 WSL shell 即可运行这个名为 .isks 的程序,而且它的速度与在 CMD 中运行命令一样快。


从 WSL shell 导航到你的主文件夹:

cd ~

...并在 Windows 资源管理器中打开它:

explorer.exe .

使用 Sublime Text 等纯文本编辑器打开.bashrc主文件夹中的文件,然后在其底部添加以下行:

alias lsd="cmd.exe /c '*wmic diskdrive get Model,Manufacturer,Size,DeviceID,Status,InterfaceType'"

这将创建一个名为的别名(实际上也是另一个命令),用于lsd运行 CMD 的一个实例,该wmic实例在终止自身之前执行该命令。请记住将上面的命令替换wmic为您要运行的 CMD 命令。

保存.bashrc文件,然后通过执行以下操作将其加载到 shell 中:

. ~/.bashrc

然后,您可以像任何其他 WSL 命令一样简单地运行别名:

$ lsd

'\\wsl$\Ubuntu-18.04\home\user'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.
DeviceID            InterfaceType  Manufacturer            Model                                 Size           Status
\\.\PHYSICALDRIVE0  IDE            (Standard disk drives)  WDC WD10PURX-64E5EY0                  1000202273280  OK
\\.\PHYSICALDRIVE4  IDE            (Standard disk drives)  WDC WD30EZRZ-00GXCB0                  3000590369280  OK
\\.\PHYSICALDRIVE2  IDE            (Standard disk drives)  CT250MX500SSD1                        250056737280   OK
\\.\PHYSICALDRIVE6  USB            (Standard disk drives)  Seagate GoFlex Desk USB Device        3000582144000  OK
\\.\PHYSICALDRIVE1  IDE            (Standard disk drives)  KINGSTON SV200S3128G                  128034708480   OK
\\.\PHYSICALDRIVE3  IDE            (Standard disk drives)  ST2000DM001-9YN164                    2000396321280  OK
\\.\PHYSICALDRIVE5  USB            (Standard disk drives)  Kingston DataTraveler 3.0 USB Device  15471751680    OK

如上所示,我的别名实现确实存在一个非致命错误,即命令在执行之前返回路径错误,但我还没有时间弄清楚如何解决这个问题(后续问题请点击此处)。无论如何,Windows 会自行纠正该问题,这意味着它不会阻止 CMD 命令正常执行,它造成的唯一真正危害是使输出比应有的更丑陋一些。

相关内容