Alias-CMD-Befehl aus der WSL2-Shell

Alias-CMD-Befehl aus der WSL2-Shell

Ich verwende WSL2 unter Windows 10 und möchte einen CMD-Befehl ausführen können, ohne die Linux-Shell zu verlassen. Genauer gesagt möchte ich Folgendes tun:

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

Wie kann ich das mit WSL2 machen?

Antwort1

Andere, die sich besser auskennen als ich, kennen vielleicht bessere Methoden oder können Verbesserungen vorschlagen, aber die einfachste Lösung, die mir einfiel, war die Verwendung eines Bash-Alias. Ich habe einen Alias ​​namens lsd(kurz fürmichSTDGeräte oderDisks), die ich ausführen kann, ohne jemals die WSL-Shell verlassen zu müssen, und die dabei genauso schnell bleiben, wie wenn ich den Befehl in CMD selbst ausführe.


Navigieren Sie in einer WSL-Shell zu Ihrem Home-Ordner:

cd ~

...und öffnen Sie es im Windows Explorer:

explorer.exe .

Öffnen Sie die .bashrcDatei in Ihrem Home-Ordner mit einem einfachen Texteditor wie Sublime Text und fügen Sie am Ende die folgende Zeile hinzu:

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

Dadurch wird ein Alias ​​(ein anderer Befehl, im Grunde genommen) erstellt, lsdder eine Instanz von CMD ausführt, die den wmicBefehl ausführt, bevor sie sich selbst beendet. Denken Sie daran, meinen obigen Befehl durch den CMD-Befehl zu ersetzen wmic, den Sie ausführen möchten.

Speichern Sie die .bashrcDatei und laden Sie sie dann wie folgt in die Shell:

. ~/.bashrc

Sie können den Alias ​​dann einfach wie jeden anderen WSL-Befehl ausführen:

$ 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

Wie oben zu sehen ist, weist meine Implementierung des Alias ​​den nicht schwerwiegenden Fehler auf, dass der Befehl kurz vor der Ausführung einen Pfadfehler zurückgibt, aber ich hatte noch keine Zeit, herauszufinden, wie ich das lösen kann (Folgefrage hier). In jedem Fall behebt Windows das Problem selbst. Dies bedeutet, dass die normale Ausführung des CMD-Befehls nicht verhindert wird und dass der einzige wirkliche Schaden darin besteht, dass die Ausgabe etwas hässlicher wird, als sie sein sollte.

verwandte Informationen