reset -c
を実行して Joshua Briefman の答えを詳しく説明するには 問題の原因となっている制御文字のみをリセットします:
tset
、 reset
- 端末の初期化
Usage: tset [options] [terminal]
Options:
-c set control characters
-e ch erase character
-I no initialization strings
-i ch interrupt character
-k ch kill character
-m mapping map identifier to type
-Q do not output control key settings
-r display term on stderr
-s output TERM set command
-V print curses-version
-w set window-size
また、コマンドのマニュアルの次のフォームにも注意してください:
<ブロック引用>入力が必要な場合があることに注意してください
<LF>reset<LF>
(改行文字は通常は control-J です) 異常な状態ではキャリッジ リターンが機能しなくなる可能性があるため、端末を機能させるために使用します。また、端末はしばしばコマンドをエコーしません。
コマンド reset
を実行します 端末を復元する必要があります (参照)。
この問題は通常、バイナリ データを端末 STDOUT
にダンプするときに発生します。 受信したエスケープ コードが処理されると、テキストの色の変更、エコーの無効化、文字セットの変更など、あらゆることができます。
これを回避する簡単な方法は、不明なバイナリ データを端末にダンプしないようにすることです。その後、16 進数に変換する必要がある場合は、端末の設定が変更されないようにします。