5

想像上の状況: mysqldumpを使用してmysqlデータベースのバックアップを作成しました。このデータベースには、blobである列があります。つまり、「テキスト」ダンプファイルには、文字列とバイナリデータ(文字列として保存されているバイナリデータ?)の両方が含まれています。

このファイルを画面に表示する場合

$ cat dump.mysql

多くの場合、予期しない結果が得られます。ターミナルはビープ音を鳴らし始め、出力はスクロールを終了します。多くの場合、入力したとおりにガベージチャクターがターミナルに入力され、プロンプトや入力したものがガベージ文字になることがあります。

なぜこれが起こるのですか?言い換えれば、バイナリ文字列をファイルに格納するとき、それらのファイルをcatするとき、catの結果がターミナルに報告されるとき、およびその他の手順で実際に何が起こっているのかについての概要を探していると思います。私は行方不明です。

4

3 に答える 3

6

バイナリファイルを作成すると、誤って制御文字を端末に送信する可能性があります。

たとえば、端末アプリケーションがビープ音を送信する場合は、次のバイナリを端末に送信します:0x007(SYS Vのみ)。

色やカーソル位置なども同様です。

于 2010-04-12T18:58:48.793 に答える
5

ここから始めてください:http://www.faqs.org/docs/Linux-HOWTO/Keyboard-and-Console-HOWTO.html

特に、セクション3(コンソールの一般性)とセクション4(端末のリセット)。

それはあなたが話しているより少し多くをカバーします、しかしあなたが必要とするものをあなたに与えるべきです。

于 2010-04-12T18:58:04.130 に答える
2

バイナリデータを画面に表示すると、端末はそのバイナリデータをASCII(またはUTF)に解釈しようとします。一部のキャラクターは端末を制御することができます。例えば、

echo "^[[0;31;40m" # The first ^[ comes from pressing Ctrl+v, Esc

背景を黒、前景を赤に変えます。reset端末を通常に戻すために使用します。

于 2010-04-12T19:06:13.330 に答える