で壊れた端末から回復する方法を示す多くの質問がSEにありますcat /dev/urandom
。この問題に慣れていない人のために-ここでそれが何であるかについて:
- 実行
cat /dev/urandom
または同等(たとえばcat binary_file.dat
)。 - ごみが印刷されます。
コマンドが終了した後でも端末がゴミを出力し続けることを除いて、それは大丈夫でしょう!これは、実際にはg ++出力である誤ってレンダリングされたテキストのスクリーンショットです。
私は、C ++エラーが時々不可解すぎることについて人々は正しかったと思います!
通常の解決策はを実行stty sane && reset
することですが、これが発生するたびに実行するのは面倒です。
そのため、この質問で私が注目したいのは、これが起こる元の理由と、そのようなコマンドが発行された後に端末が壊れないようにする方法です。問題のあるコマンドをtr
やにパイプするなどのソリューションを探しているわけではありません。xxd
これには、実際に実行/印刷する前にプログラム/ファイルがバイナリを出力し、そのようなデータを出力するたびに記憶する必要があることを知る必要があるためです。
URxvt、PuTTY、Linuxフレームバッファーで同じ動作に気づいたので、これは端末固有の問題ではないと思います。私の主な疑いは、ランダムな出力に文字エンコーディングを反転するANSIエスケープコードが含まれていることです(実際、cat /dev/urandom
もう一度実行すると、端末が壊れない可能性があり、これがこの理論を裏付けているようです)。これが正しい場合、このエスケープコードは何ですか?それを無効にする標準的な方法はありますか?