동등한 wsl.exe 명령줄 찾기

동등한 wsl.exe 명령줄 찾기

Windows 바탕 화면 바로 가기 대상 필드에 있는 다음 단일 명령줄은 주소를 ping하고 타임스탬프를 표시합니다.

C:\Windows\System32\bash.exe -c "ping 1.0.0.1 | while read line; do echo `date` - $line; done"

예제 출력:

Fri Nov 27 14:08:05 CST 2020 - PING 1.0.0.1 (1.0.0.1) 56(84) bytes of data.
Fri Nov 27 14:08:05 CST 2020 - 64 bytes from 1.0.0.1: icmp_seq=1 ttl=58 time=26.7 ms
Fri Nov 27 14:08:06 CST 2020 - 64 bytes from 1.0.0.1: icmp_seq=2 ttl=58 time=35.5 ms
Fri Nov 27 14:08:07 CST 2020 - 64 bytes from 1.0.0.1: icmp_seq=3 ttl=58 time=42.0 ms

나는 읽었다여기bash 대신 wsl.exe를 사용해야 하지만 동등한 명령을 만드는 방법을 알 수 없습니다.

(Windows 10에서 이 작업을 수행하려면 Windows 10에서 "Linux용 Windows 하위 시스템"을 활성화하고 Microsoft Store에서 Ubuntu를 설치해야 합니다.이 HTG 기사.)

답변1

귀하가 연결한 답변이 잘못되었습니다. bash.exe더 이상 사용되지 않으며 귀하의 경우에는 필수입니다.

그 이유는 WSL에는 명령 매개변수, 단일 명령만 허용하므로 다음 명령줄은 작동하지 않는 단일 호출로 해석됩니다.

여기에 이미지 설명을 입력하세요

내장 셸 명령을 사용해도 작동하지 않습니다.

여기에 이미지 설명을 입력하세요

bash즉, 예를 들어 명령을 사용해야 합니다 . WSL에 둘 이상의 Linux 배포판이 설치된 경우 bash기본값으로 정의된 배포판의 셸을 호출합니다.

답변2

나는 읽었다여기bash 대신 wsl.exe를 사용해야 하지만 동등한 명령을 만드는 방법을 알 수 없습니다.

그냥 bash.exe -c다음으로 바꾸세요 wsl.exe --exec bash -c: 1

C:\Windows\System32\wsl.exe --exec bash -c
 "ping 1.0.0.1 | while read line; do echo `date` - $line; done"

이것은 잘 작동합니다cmd.exe. 나는 그것을 시도하는 것이 좋습니다! 2

출력 예:

date - PING 1.0.0.1 (1.0.0.1) 56(84) bytes of data.
date - 64 bytes from 1.0.0.1: icmp_seq=1 ttl=56 time=4.58 ms
date - 64 bytes from 1.0.0.1: icmp_seq=2 ttl=56 time=4.31 ms
^C

나는 며칠 전에 이 책을 읽으면서 이것을 스스로 배웠습니다.이 게시물.

당신 말이 맞아요bash.exe더 이상 사용되지 않습니다 (와 wslconfig.exe같이 lxrun.exe).

참고자료


1 에서 는 입니다 wsl.exe --exec bash -c.bash리눅스 명령과윈도우가 아니라 bash.exe명령. – 로
교체하려고 시도하면 출력이 없다는 것을 (간접적으로) 분명하게 알 수 있습니다.bashbash.exe

2 명령줄을 열려면(관리자 권한으로) WinKey+ 를 누르고 r를 입력한 cmdCtrl+를 누른 상태 Shift에서 을 누릅니다 Enter. (그런 다음 + , + 를
사용하여 명령을 복사하여 붙여넣습니다 .)CtrlcCtrlv

관련 정보