xtermで実行されているシェルを入力しecho -e '\eZ'
てEnterキーを押すと、端末エミュレータが暗号化されたコードを印刷することがわかります1;2c
。これは xterm が VT100 制御シーケンス\eZ
(ESC Z
端末 ID を返す) を解釈し、それに応じて動作することを示すようです。
今、ESC Z
同じコンソールを押すと何も起こりません。これは、キーボードを使用して直接制御文字を送信できないという意味ですか?
CTRL s
(制御フロー)を押すと、を押すまでコンソール出力が停止するので、ここで何が起こっているのかわかりませんCTRL q
。それではなぜCTRL s/q
動作しますが、動作しませんかESC Z
?
答え1
VT100は送信された文字シーケンスに応答します。出力。したがって、エコー文字は端末がそれを出力として扱うので有効です。文字を入力すると、端末は受信コンピュータが文字をエコーするときにのみ応答します。一般的なシェルはESCを反映しませんが、ESCをいくつかの対話型入力コマンドの接頭辞として解釈します。実行しcat
てESC Z RETURNと入力すると、一般的なVT100応答が表示されます。
答え2
あるいは、通常、キーボードでCTL-Vを押してESCを使用する代わりに、ESCを直接渡したいと端末に通知することもできます。もちろん、まだエコーを受け取る必要があるので、これは必ずしも役に立つわけではありませんが、VIMでファイルを編集してエスケープコードを含めたい場合にはそうする便利な方法です。