아무 키나 누를 때마다 동일한 세 가지 명령을 실행하는 반복 기능을 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)