저는 Windows 10에서 WSL2를 실행하고 있으며 Linux 셸을 종료하지 않고도 WSL2에서 CMD 명령을 실행할 수 있기를 원합니다. 구체적으로 다음을 수행하고 싶습니다.
wmic diskdrive get Model,Manufacturer,Size,DeviceID,Status,InterfaceType
WSL2로 이 작업을 어떻게 수행할 수 있나요?
답변1
나보다 지식이 많은 다른 사람들은 더 나은 방법을 알고 있거나 개선 사항을 제안할 수 있지만, 이 문제를 해결하기 위해 내가 생각할 수 있는 가장 쉬운 방법은 Bash 별칭을 사용하는 것이었습니다. 나는 lsd
(줄여서) 라는 별칭을 만들었습니다.엘나에스티디장치 또는디isks) WSL 셸을 종료할 필요 없이 실행할 수 있으며 CMD 자체에서 명령을 실행하는 것만큼 빠르게 유지됩니다.
WSL 셸에서 홈 폴더로 이동합니다.
cd ~
...Windows 탐색기에서 엽니다.
explorer.exe .
Sublime Text와 같은 일반 텍스트 편집기를 사용하여 홈 폴더에 있는 파일을 열고 .bashrc
맨 아래에 다음 줄을 추가합니다.
alias lsd="cmd.exe /c '*wmic diskdrive get Model,Manufacturer,Size,DeviceID,Status,InterfaceType'"
이렇게 하면 자체적으로 종료되기 전에 명령을 lsd
실행하는 CMD 인스턴스를 실행하는 별칭(모든 의도와 목적을 위한 또 다른 명령)이 생성됩니다 . 위의 명령을 실행하려는 CMD 명령으로 wmic
바꾸는 것을 잊지 마십시오 .wmic
파일 을 저장 .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 명령이 정상적으로 실행되는 것을 막지 않으며 실제로 해를 끼치는 유일한 것은 출력을 원래보다 약간 더 나쁘게 만드는 것입니다.