Dans Bash 4, vous pouvez définir -t
(timeout) à 0
. Dans ce cas, read
revient immédiatement avec un statut de sortie indiquant s'il y a des données en attente ou non :
# do some time consuming task here
while read -r -t 0; do read -r; done
read -p "Give me some input: " input
Je ne pense pas qu'il existe un moyen d'effacer stdin mais (avec bash) vous pouvez lire et supprimer ce qui s'y trouve avant de demander l'entrée
#do some time consuming task here
read -t 1 -n 10000 discard
read -p "Give me some input: " input
Cela lit stdin et a un délai d'attente de 1 seconde, mais il échoue s'il y a plus de 10 000 caractères dans stdin. Je ne sais pas quelle taille vous pouvez donner au paramètre nchars.
read -d '' -t 0.1 -n 10000
Cela lit plusieurs lignes d'entrées, si l'utilisateur a appuyé plusieurs fois sur Entrée par inadvertance