GNU/Linux >> Tutoriels Linux >  >> Linux

Effacer stdin avant de lire

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


Linux
  1. Comprendre les Si ?

  2. Lire et rechercher de longues pages de manuel ?

  3. Les "si" ?

  4. Comment signaler la fin de l'entrée Stdin ?

  5. Est-il possible dans Bash de commencer à lire un fichier à partir d'un décalage arbitraire du nombre d'octets ?

Commande de lecture bash

5 exemples pratiques de la commande Read sous Linux

Compresser les fichiers lors de la lecture des données de STDIN

Canalisez la chaîne vers la date GNU pour la conversion - comment la faire lire à partir de stdin?

Comment puis-je faire en sorte que sed lise à partir de l'entrée standard?

Comment puis-je lire les entrées du clavier de l'hôte lorsque je suis connecté via SSH ?