端末は、制御コマンドとして一連の異なる文字シーケンスを受け入れて実行します。たとえば、すべてのカーソル移動はそれらを使用して行われます。一部のコードは、色の設定、または代替文字セットの使用を端末に指示するなど、永続的な変更を行います。実行可能ファイルおよびその他のバイナリファイルには、これらのコマンドを表すバイトが含まれている可能性が高いため、バイナリファイルを端末にダンプすると、迷惑な副作用が生じる可能性があります。制御コードのいくつかについては、例えばこちらをご覧ください。
これの歴史的背景は、もともと、端末は画面とキーボードを備えたかなりダムなデバイスであり、シリアルポートを介して実際のコンピューターに接続したことです。それ以前は、キーボードを備えたプリンターでした。コマンドバイトからデータバイトを分離するためのプロトコルはあまりなかったため、コマンドは端末に「インライン」で渡されました。(むしろ、エスケープコードと制御文字がプロトコルでした。)システムが今日考案された場合、データとコマンドの間の明確な分離があると仮定するかもしれません。
ターミナルウィンドウを閉じるか、エミュレータを強制終了する代わりに、同様のコマンド(または複数)を送信してターミナルを正常なデフォルトにリセットするreset
コマンドを使用できます。
何がハッシュをパウンド変化させるのか正確にはわかりません。(しかし、@ Random832はそうです、その答えを見てください。)私はすべての文字を線画グリフに変えることができる「代替文字セット」にもっと精通しています。それが起こったとしても、キーボードからの入力は通常変更されずに通過するためreset
Enter、文字が文字化けしているかまったく表示されていなくても書き込みは機能します。(プロンプトが多数の行に変換されるのと比較すると、わずかな効果しかありません。)