대화형 셸에서 키를 누를 때마다 bash에서 기능 실행

대화형 셸에서 키를 누를 때마다 bash에서 기능 실행

대화형 bash 셸에서 사용자가 키를 누를 때마다 함수를 실행하고 싶습니다.

bash에 zsh의 자체 삽입 기능과 같은 기능이 내장되어 있는지 궁금합니다.

또는 zsh의 $BUFFER 변수와 유사하게 읽을 수 있는 버퍼가 포함된 파일 설명자가 있는지 궁금합니다.

참고: 저는 다음 질문에 대해 알고 있습니다.https://superuser.com/questions/604812/how-to-execute-a-function-in-bash-or-zsh-on-every-letter-being-typed-into-prompt.

script의사 터미널을 사용하지 않고 명령과 비슷한 것을 구축하려고 합니다.

답변1

어쩌면 내가 당신을 오해했을 수도 있지만 read -n1유용할 수도 있습니다.

#!/bin/bash
while read -n1 -r v
do
        printf 'You typed "%s".\n' "$v"
done
  • -r백슬래시( )는 \일반 문자로 허용됩니다 .
  • 사용자가 공백, 탭 또는 를 입력할 때 실제로 볼 수 있도록 이를 조정해야 합니다 Enter. (여기에 적힌 대로 read반환되지만 $v설정되지는 않습니다.)
  • 특수 키(예: F1)는 여러 문자로 나타납니다.
  • 평소와 같이 이러한 문자는 사용자가 입력할 때 나타납니다. 를 사용하여 끌 수 있습니다 stty -echo.
  • 여기에 코드가 작성되었으므로 루프를 벗어나려면 Ctrl+를 사용해야 합니다 . C예를 들어, 자신만의 논리를 추가할 수 있습니다 if [ "$v" = Q ]; then break; fi.

관련 정보