私はインタラクティブメニューを作成するために「ダイアログボックス」ユーティリティを使用しようとしてきました。端末で作業すると、すべてがうまく機能します。メニューが表示され、キーボードを使用してこれらのメニューと対話できます。
しかし、今では他のデバイスが出力先になり、他のデバイス(キーボード/ポインタ)がダイアログボックスに入力を提供したいと思います。
既存のTTY(/ dev / console)でダイアログボックスを実行し、出力を/ dev / tty0にリダイレクトします。メニューはtty0に表示されますが、今度は会話スクリプトを開始する端末から入力を導きたいと思います。これはうまくいかないようです。
したがって、既存のTTYがダイアログボックスに入力を提供していることを確認し、TTYデバイスではなくデバイスからダイアログボックスにイベントを挿入するにはどうすればよいですか?何とか一連の文字をダイアログボックスに表示できますか?それとも、すべてのTTY ioctlを含むTTYのように動作する実際のデバイスが必要ですか?
単純な入力リダイレクトが機能しないようですか?
答え1
私のdialog
コマンドには、--input-fd
読み取る場所を知らせるオプションが必要です。たとえば、1つの端末タイプでtty
使用されている項目を見つけて、読み取らないように/dev/pts/4
設定します。
stty -icanon && sleep 1000
他の端末から開始
dialog --yesno 'shall we answer yes?' 0 0 --input-fd 3 3</dev/pts/4
これにより、最初の端末に入力された内容がダイアログボックスに影響します。
スリープモードを中止してstty icanon
最初の端末を再起動するには、入力してください。