來自 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(縮寫為std設備或disks),我可以在無需離開 WSL shell 的情況下運行,同時它仍然與在 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 命令正常執行,而且它唯一真正的危害是使輸出比應有的更難看。

相關內容