읽기 전에 Bash 플러시 표준 입력

읽기 전에 Bash 플러시 표준 입력

Bash에서 stdin을 지우는 쉬운 방법이 있습니까?

자주 실행되는 스크립트가 있는데 스크립트의 어느 시점에서는읽다사용자 입력을 얻는 데 사용됩니다. 문제는 대부분의 사용자가 웹 기반 문서에서 명령줄을 복사하여 붙여넣는 방식으로 이 스크립트를 실행한다는 것입니다. 여기에는 후행 공백이 포함되거나 더 나쁜 경우 예제 명령 뒤에 일부 텍스트가 포함되는 경우가 많습니다. 프롬프트를 표시하기 전에 과도한 정크를 간단히 제거하도록 스크립트를 조정하고 싶습니다.

답변1

이것Bash의 비차단 I/O 스레드도움이 될 수도 있습니다.

stty및 를 사용하는 것이 좋습니다 dd.

bash read또는 옵션 과 함께 내장된 기능을 사용할 수도 있습니다 -t 0.

# do your stuff

# discard rest of input before exiting
while read -t 0 notused; do
   read input
   echo "ignoring $input"
done

사용자가 터미널에 있을 때만 이 작업을 수행하려면 다음을 시도하십시오.

# if we are at a terminal, discard rest of input before exiting
if test -t 0; then
    while read -t 0 notused; do
       read input
       echo "ignoring $input"
    done
fi

답변2

다음은 내가 선택한 것과 유사한 한 줄입니다.

while read -t 1 discard; do echo "ignoring input..."; done # Flush input

관련 정보