키를 누르자마자 명령을 실행하는 스크립트

키를 누르자마자 명령을 실행하는 스크립트

아무 키나 누를 때마다 동일한 세 가지 명령을 실행하는 반복 기능을 bash에서 만들고 싶습니다.

Windows에서는 배치 파일의 무한 루프에서 일시정지 명령을 사용하여 이 작업을 수행할 수 있는데, 이는 내 요구에 잘 맞습니다.

대부분의 *nix 배포판에는 이에 상응하는 일시 중지 명령이 없으며 read -p원하는 방식으로 작동하지 않습니다.

나에게 필요한 것을 달성하는 가장 좋은 방법은 무엇입니까? 또한 특정 키 조합(예: - )을 입력 Ctrl하면 다른 명령(청소용)을 실행할 수 있습니까 ?C

답변1

bash를 사용한다고 가정하면 이 read옵션이 -N유용할 수 있습니다.

  -N nchars return only after reading exactly NCHARS characters, unless
            EOF is encountered or read times out, ignoring any delimiter

를 사용하면 read -N 1 x개행 문자를 기다리지 않고 문자가 입력되는 즉시 반환됩니다.

질문의 두 번째 부분에 대해서는 클릭하세요 Ctrl. CINT 신호를 스크립트로 보내는 것은 단순히 신호를 잡는 것입니다.

모든 것을 하나로 묶는 예:

trap 'echo special command' INT

while read -N 1 foo; do
    echo normal command
done

그리고 상호 작용의 예( x두 번 클릭한 다음 Ctrl한 번 클릭했습니다 C):

xnormal command
xnormal command
^Cspecial command

(이 스크립트를 종료하는 것은 짜증날 수 있습니다. 이를 수행하는 한 가지 방법은 -를 사용하여 스크립트를 중지한 다음 작업을 종료하는 것입니다 Ctrl. Z)

관련 정보