대화형 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
.