WSL은 Windows 호스트에서 창을 엽니다.

WSL은 Windows 호스트에서 창을 엽니다.

나는 작은 bash 스크립트를 만들었습니다. 지금까지는 Windows WSL 및 Linux에서 잘 작동합니다.

이제 사용자가 설정 목록에서 선택할 수 있는 그래픽 팝업을 원합니다. VBS를 사용하여 이 작업을 수행할 수 있다는 것을 이해하지만 이에 대해 아무것도 모릅니다. 선택 항목을 내 bash 스크립트로 되돌릴 수 있습니까? .vbs는 어떤 모습이어야 합니까?

아니면 더 쉬운 방법이 있을까요?

내 스크립트는 일부 파일을 열고 사용자가 이를 위해 편집기를 선택하도록 하고 싶습니다.

예를 들어 Linux에서는 sublime과 vim이 있습니다. 또는 Windows에서는 메모장++ 및 숭고한 기능을 사용할 수 있습니다.

Windows 사용자가 모든 x11 라이브러리를 설치하지 않아도 되도록 zenity를 사용하고 싶지 않습니다. Linux에서는 zenity를 사용하겠습니다. 제가 처음 발견한 것은 Windows의 .vbs 스크립트였습니다.

답변1

Linux 환경에서 그래픽 UI를 사용하려면 반드시 X11이 필요합니다. 하지만 단지 Windows GUI와 상호 작용하고 싶다면 그렇게 할 수 있습니다. 기본적으로 지금은 괜찮아요WSL에서 Windows 도구 실행. 즉, 실행할 수 있는 Windows 스크립트(예: CMD 또는 WScript)가 있는 경우 다음을 수행할 수 있습니다.

cmd.exe /c "path to script"
vbscript.exe /b "path to script"  :: where /b = batch mode

그런 다음 반환 값 부분이 옵니다. Bash에서는 $?항상 이전 명령의 종료 상태입니다. 따라서 위의 줄을 실행하면닫혔다가 돌아옵니다1 이를 사용하여 $?스크립트가 반환하는 내용을 확인할 수 있습니다. (이것은 종료 상태를 약간 남용한 것이지만 작동한다면...) 2 이는 물론 Windows 스크립트가 가능한 모든 반환 값에 대해 고유한 int가 필요하고 두 스크립트 모두 각 값이 무엇인지 알아야 함을 의미합니다. 무엇에 해당하는지.

(물론 GUI를 렌더링하는 스크립트를 작성하는 것은 완전히 다른 문제이지만뿌리.)

1explorer.exe 이 부분은 매우 중요합니다. 오류를 발생시키는 명령 직후에 실행하여 직접 테스트할 수 있습니다. Bash로 연 탐색기 창을 닫지 않으면 $?이전 명령의 종료 상태가 0이 아닌 값으로 표시되지만 explorer.exe, 일단 탐색기를 닫으면 $?0이 표시됩니다(탐색기에 문제가 없다는 가정).

2 경고: 실제로 이 프로세스를 직접 시도한 적은 없습니다. 일부 조정이 필요할 수 있습니다.

답변2

zenity댓글에서 제가 언급한 클론은 성장했고, 꽤 많은 대화 상자를 지원하며, 여전히 X에 의존하지 않습니다.https://github.com/ncruces/zenity

당신이 사용하는 경우스스로 만든

관련 정보