端末応答文字列を変数として読み込みます。

端末応答文字列を変数として読み込みます。

使用強く打つ、ユーザーの対話なしで端末応答を変数として読み取るには?次の行は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とコマンドオプションがあります。一般的な用途では使用しません(例:-treadsttydynamic.sh):

stty raw -echo min 0 time 5

read0.5秒以内にタイムアウトし、文字を読み取らずに返すように端末を一時的に設定します。設定を保存/復元する方法を理解するには、スクリプトを読むことが役に立ちます。

追加資料:

おすすめ記事