GNU/Linux >> Znalost Linux >  >> Linux

Před čtením vymažte stdin

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


Linux
  1. Jak vymazat Journalctl?

  2. Jak signalizovat konec vstupu Stdin?

  3. Čtení řádků ze souboru s Bash:For vs. Zatímco?

  1. Komprimujte soubory při čtení dat ze STDIN

  2. Řetězec potrubí do GNU Datum pro konverzi - jak to udělat, aby četl ze stdin?

  3. Jak se dostanu ke čtení ze standardního vstupu?

  1. Rozumět Ifs?

  2. Čtete a prohledáváte dlouhé mužské stránky?

  3. Jak mohu číst vstup z klávesnice hostitelů při připojení přes SSH?