V Bash 4 můžete nastavit -t
(časový limit) na 0
. V tomto případě read
se okamžitě vrátí se stavem ukončení indikujícím, zda data čekají nebo ne:
# do some time consuming task here
while read -r -t 0; do read -r; done
read -p "Give me some input: " input
Nemyslím si, že existuje způsob, jak vymazat stdin, ale (pomocí bash) si můžete přečíst a zahodit, co tam je, než požádáte o vstup
#do some time consuming task here
read -t 1 -n 10000 discard
read -p "Give me some input: " input
Toto přečte stdin a má časový limit 1 sekundu, ale selže, pokud je v stdin více než 10 000 znaků. Nevím, jak velký můžete udělat parametr nchars.
read -d '' -t 0.1 -n 10000
Toto přečte více řádků vstupů, pokud uživatel neúmyslně několikrát stiskl enter
Přehrávejte soubory MP3 nebo WAV pomocí příkazového řádku systému Linux
Jak najít největší adresáře nebo největší soubory?