GNU/Linux >> Linux の 問題 >  >> Linux

読み取る前に stdin をクリアする

Bash 4 では、 -t を設定できます (タイムアウト) 0 まで .この場合、read 待機中のデータがあるかどうかを示す終了ステータスですぐに戻ります:

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

標準入力をクリアする方法はないと思いますが、(bash を使用すると) 入力を求める前にそこにあるものを読み取って破棄できます

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

これは stdin を読み取り、タイムアウトは 1 秒ですが、stdin に 10000 文字を超える文字がある場合は失敗します。 nchars パラメータをどれだけ大きくできるかわかりません。


read -d '' -t 0.1 -n 10000

ユーザーが誤って複数回エンターを押した場合、これは複数行の入力を読み取ります


Linux
  1. Journalctlをクリアする方法は?

  2. Dd:複数の入力ファイル?

  3. 実行する前にシェルスクリプト全体を読む方法は?

  1. Bashを使用してファイルから行を読み取る:対その間?

  2. Bash スクリプト - ユーザー入力の読み取り方法

  3. STDIN からデータを読み取りながらファイルを圧縮する

  1. LinuxでUSB入力ストリームを読み取る

  2. Linuxスクリプトで端末のユーザー入力を隠す

  3. SSH 経由で接続しているときに、ホストのキーボードから入力を読み取るにはどうすればよいですか?