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