私が次のようなことをした場合:
$ cat /bin/ls
端末にアクセスすると、ls 実行可能ファイルを表す大量のバイナリ データが表示される理由がわかりました。しかしその後、プロンプトが戻ってくると、自分のキーストロークがおかしく見えます。「a」と入力すると、奇妙な斜線が表示されます。「b」と入力すると、度記号が表示されます。
なぜこれが起こるのですか?
バイナリデータのどこかに、端末が要求として解釈した制御シーケンスがあったためです。たとえば、描画に使用される文字セットを変更します。次のように、すべてを通常の状態に復元できます。
reset
コピー&ペーストするだけです:
echo -e '\017'
バッシュに追加すると、キャラクターは通常に戻ります。bash を実行していない場合は、次のキーストロークを試してください。
<Ctrl-V><Ctrl-O><Enter>
実行する <Ctrl-V><Ctrl-O> または <Ctrl-O> コマンドが見つからないというエラーが表示されたときに、ターミナルのステータスが正常に戻ることを願っています。
<Ctrl-N>、または文字 14 (端末に送信される場合) は、文字と数字が記号に置き換えられる特別なグラフィック モードに切り替えるように命令します。<Ctrl-O>、または文字 15 は、物事を正常に戻します。
ターミナルは、スローされたバイナリ データを制御コードとして解釈しようとし、その過程で文字化けを起こすため、tty をサニタイズする必要があります。
走る:
stty sane
そして、物事は正常に戻るはずです。入力時にコマンドが文字化けしているように見えても、実際の文字は正しく格納されており、return キーを押すとコマンドが呼び出されます。
stty コマンドの詳細については、こちらを参照してください。
シェルにその動作を変更して別の方法で出力するように指示する制御文字をシェルにパイプします。
VT100は、ターミナル ウィンドウで使用される標準コマンド セットのほとんどですが、多くの拡張機能があります。使用される制御文字セット、キーボード マッピングなど。
このような端末にバイナリ文字を大量に送信すると、多くの設定が変更されます。一部の端末には、設定をデフォルトに「クリア」するオプションがありますが、一般的に、それらは単にバイナリ データ用に作成されたものではありません。
VT100 とその後継は、Linux が単純な端末プログラムでカラー テキスト (色付きの ls リストなど) を印刷できるようにするものです。
-アダム
どうしてもバイナリ データを端末にダンプする必要がある場合は、 のようなページャーにパイプするとless
、少し読みやすい形式で表示されるので、運が良いでしょう。(バイナリ ファイルをいじっている場合は、strings
とにも興味があるかもしれません。)od