2 votes

Commande CMD alias de WSL2 Shell

J'utilise WSL2 sur Windows 10, et je veux pouvoir exécuter une commande CMD à partir de celui-ci sans quitter le Shell de Linux. Plus précisément, je veux faire :

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

Comment puis-je faire cela avec WSL2 ?

5voto

Hashim Aziz Points 10142

D'autres personnes plus compétentes que moi connaissent peut-être de meilleures méthodes ou sont en mesure de suggérer des améliorations, mais le moyen le plus simple auquel j'ai pensé pour résoudre ce problème était d'utiliser un alias Bash. J'ai créé un alias appelé lsd (abréviation de l i s t d evices ou d isks) que je peux exécuter sans jamais devoir quitter le WSL Shell, tout en restant aussi rapide que l'exécution de la commande dans CMD lui-même.


A partir d'un Shell de WSL, naviguez vers votre dossier d'accueil :

cd ~

...et l'ouvrir dans l'Explorateur Windows :

explorer.exe .

Ouvrez le .bashrc dans votre dossier d'accueil avec un éditeur de texte simple comme Sublime Text, et ajoutez la ligne suivante au bas du fichier :

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

Cela crée un alias (une autre commande, à toutes fins utiles) appelé lsd qui exécute une instance de CMD, qui exécute la commande wmic avant de se terminer. N'oubliez pas de remplacer wmic ci-dessus avec la commande CMD que vous voulez exécuter.

Sauvegarder le .bashrc puis le charger dans le Shell en faisant :

. ~/.bashrc

Vous pouvez alors simplement exécuter l'alias comme toute autre commande 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

Comme on l'a vu plus haut, mon implémentation de l'alias est accompagnée d'un bogue non fatal : la commande renvoie une erreur de chemin juste avant de s'exécuter, mais je n'ai pas eu le temps de trouver comment résoudre ce problème ( question de suivi ici ). Quoi qu'il en soit, Windows corrige lui-même le problème, ce qui signifie qu'il n'empêche pas la commande CMD de s'exécuter normalement et que le seul tort réel qu'il cause est de rendre la sortie un peu plus moche qu'elle ne devrait l'être.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X