![Псевдоним команды CMD из оболочки WSL2](https://rvso.com/image/1711486/%D0%9F%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B%20CMD%20%D0%B8%D0%B7%20%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8%20WSL2.png)
Я использую WSL2 на Windows 10 и хочу иметь возможность запускать команду CMD из него, не выходя из оболочки Linux. В частности, я хочу сделать следующее:
wmic diskdrive get Model,Manufacturer,Size,DeviceID,Status,InterfaceType
Как это сделать с помощью WSL2?
решение1
Другие, более знающие, чем я, могут знать лучшие методы или предложить улучшения, но самый простой способ, который я смог придумать, чтобы решить эту проблему, — это использовать псевдоним Bash. Я создал псевдоним под названием lsd
(сокращение отлястгмашины илигisks), который я могу запустить, не выходя из оболочки WSL, при этом он остается таким же быстрым, как и запуск команды в самой CMD.
Из оболочки WSL перейдите в домашнюю папку:
cd ~
...и откройте его в проводнике Windows:
explorer.exe .
Откройте .bashrc
файл в своей домашней папке с помощью текстового редактора, например Sublime Text, и добавьте в его конец следующую строку:
alias lsd="cmd.exe /c '*wmic diskdrive get Model,Manufacturer,Size,DeviceID,Status,InterfaceType'"
Это создает псевдоним (другую команду, для всех намерений и целей), называемый , lsd
который запускает экземпляр CMD, который выполняет wmic
команду перед завершением себя. Не забудьте заменить мою wmic
команду выше на команду CMD, которую вы хотите запустить.
Сохраните .bashrc
файл, затем загрузите его в оболочку, выполнив:
. ~/.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, и единственный реальный вред, который она наносит, — это делает вывод немного более уродливым, чем он должен быть.