GNU/Linux >> Linux Esercitazione >  >> Linux

Cancella stdin prima di leggere

In Bash 4, puoi impostare -t (timeout) a 0 . In questo caso, read ritorna immediatamente con uno stato di uscita che indica se ci sono dati in attesa o meno:

# do some time consuming task here
while read -r -t 0; do read -r; done
read -p "Give me some input: " input

Non penso che ci sia un modo per cancellare stdin ma (con bash) puoi leggere e scartare ciò che c'è prima di chiedere l'input

#do some time consuming task here
read -t 1 -n 10000 discard 
read -p "Give me some input: " input

Questo legge stdin e ha un timeout di 1 secondo, ma fallisce se ci sono più di 10000 caratteri in stdin. Non so quanto puoi ingrandire il parametro nchars.


read -d '' -t 0.1 -n 10000

Questo legge più righe di input, se l'utente ha inavvertitamente premuto invio più volte


Linux
  1. Capire se?

  2. Leggere e cercare pagine uomo lunghe?

  3. I "se"?

  4. Come segnalare la fine dell'ingresso Stdin?

  5. È possibile in Bash iniziare a leggere un file da un offset arbitrario del conteggio dei byte?

Bash ha letto Comando

5 Esempi pratici del comando Read in Linux

Lettura del flusso di input USB su Linux

Pipe string to GNU Date for conversion - come farlo leggere da stdin?

Come faccio a leggere sed dall'input standard?

Comando Linux/Unix per unire N righe di input con delimitatori?