Comando Alias ​​​​CMD desde el shell WSL2

Comando Alias ​​​​CMD desde el shell WSL2

Estoy ejecutando WSL2 en Windows 10 y quiero poder ejecutar un comando CMD desde él sin salir del shell de Linux. Específicamente, quiero hacer:

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

¿Cómo puedo hacer esto con WSL2?

Respuesta1

Otros con más conocimientos que yo pueden conocer mejores métodos o sugerir mejoras, pero la forma más fácil que se me ocurrió para resolver esto fue usar un alias de Bash. Creé un alias llamado lsd(abreviatura deyoistddispositivos odisks) que puedo ejecutar sin necesidad de salir del shell WSL, mientras sigue siendo tan rápido como ejecutar el comando en CMD.


Desde un shell WSL, navegue hasta su carpeta de inicio:

cd ~

...y ábrelo en el Explorador de Windows:

explorer.exe .

Abra el .bashrcarchivo en su carpeta de inicio con un editor de texto sin formato como Sublime Text y agregue la siguiente línea al final:

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

Esto crea un alias (otro comando, para todos los efectos) llamado lsdque ejecuta una instancia de CMD, que ejecuta el wmiccomando antes de terminarse. Recuerde reemplazar mi wmiccomando anterior con el comando CMD que desea ejecutar.

Guarde el .bashrcarchivo, luego cárguelo en el shell haciendo:

. ~/.bashrc

Luego puedes simplemente ejecutar el alias como cualquier otro comando 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

Como se vio arriba, mi implementación del alias viene con el error no fatal de que el comando devuelve un error de ruta justo antes de ejecutarse, pero no he tenido tiempo de descubrir cómo resolver esto (pregunta de seguimiento aquí). En cualquier caso, Windows corrige el problema por sí mismo, lo que significa que no impide que el comando CMD se ejecute normalmente y que el único daño real que causa es hacer que la salida sea un poco más fea de lo que debería ser.

información relacionada