使用強く打つ、ユーザーの対話なしで端末応答を変数として読み取るには?次の行はEnter一度だけ押す必要があります。
echo -ne '\005' && read -s && echo ${REPLY}
また、どのように構成しますか?Xterm意味のある応答を送信します^E
か?これまでに応答を送信する唯一の端末エミュレータは次のとおりです。パテ。
ベストアンサー1
応答文字列は、次のコマンドを使用してxtermで構成できます。answerbackString
リソース。このリソースは次に追加されました。1998年。 「xterm」は最初に返されます。1999年一部のユーザーが制御シーケンスを乱用してコンピュータに予期しないコマンドを送信できることを指摘したため、デフォルトは空の文字列です。
他の端末は常に空の文字列(konsole、mlterm、vte)を返すことができます。ただし、rxvt(およびrxvt-unicode)は、予期しない応答であるVT102に対するデバイス属性の応答(エスケープシーケンス)を返します。 PuTTY は「PuTTY」を返します。(おそらくxtermの初期影響によるものです)。
すばやく確認すると、Linuxコンソールに「a」(おそらくバグ)が表示されます。
もともとVT100は、この機能を設定/設定可能な機能として提供していたため、次のものに制限されていました。印刷可能数値。したがって、rxvt / urxvtの応答は予期しないものです。マニュアルページには、これについて秘密の説明が記載されています。
answerbackString
:ひも
ENQ(control-E)文字が渡されたときにrxvt-unicodeがシェルに送信する応答を指定します。項目に指定されているようにエスケープされた値を含めることができます。keysym
次のような。
(Promiseの説明はありません。)
応答文字列の長さがわからないため、この文字列を読み取るアプリケーションは待機を許可する必要があります(文字が複数の読み取り操作で到着した場合)。もちろん、シェルスクリプトに役立つksh / bash関連の機能TMOUT
とコマンドオプションがあります。一般的な用途では使用しません(例:-t
read
stty
dynamic.sh
):
stty raw -echo min 0 time 5
read
0.5秒以内にタイムアウトし、文字を読み取らずに返すように端末を一時的に設定します。設定を保存/復元する方法を理解するには、スクリプトを読むことが役に立ちます。
追加資料:
- これ
vttests
scriptsxterm
、その多くは端末応答文字列を読み込みます。 stty
- 端末オプションの設定(POSIX)read
- 標準入力から1行読みます。(POSIX)