Enterキーを押すことをシミュレートし、数秒後にのみ押す方法は何ですか?

Enterキーを押すことをシミュレートし、数秒後にのみ押す方法は何ですか?

Enter キーを押すのをシミュレートするには、次のようにします。

echo -ne '\n' | mycommand

ただし、「mycommand」は実際にEnterキーを押す前に数秒待つ必要があります。 Enterキーを押すのをシミュレートする前に、数秒間どのように待つことができますか?

答え1

を使用すると、expect次のようにする必要があります。

#!/usr/bin/env expect
spawn "mycommand"
expect "Press Enter to continue" { send "\r" }
interact

もちろん、「続けるにはEnterを押してください」を実際のメッセージに変更する必要があります。

答え2

(sleep 12; echo) | mycommand

mycommand12秒後に空白行が読み取られ、ファイルの終わりがすぐに表示されます。これが問題の場合は、後で遅延を追加することもできます。

(sleep 12; echo; sleep 5) | mycommand

コマンド出力に基づいて入力を送信するも参照してくださいexpect(実際のユーザーがいるように見えるようにする擬似端末も使用します)。

答え3

xdotoolを使用して「入力」をシミュレートできます。

 xdotool key 'Return' | commandhere

または、スリープ状態に設定して次のコマンドを入力することもできます。

sleep 0.5; xdotool key 'Return' | commandhere

関連情報