ただ、擬似ランダムコンテンツファイルを生成しました。
dd if=/dev/urandom bs=1M count=1 of=./filetone.txt
それから猫
cat ./fileone.txt
問題は、このコマンドを完了した後、私の端末がめちゃくちゃになることです(新しい行を開始せずに新しいプロンプトを印刷しないなど...)。
ここで私が理解していないのは、これが私についてです。端末エミュレータ、または一部欠落しているメタデータ?
答え1
これは端末エミュレータに関するものです。
バイナリファイルには、さまざまな制御コードとエスケープコードを含めることができ、ターミナルエミュレータは、画面を消去する()、ベルを鳴らす()、Ctrl-L
前Ctrl-G
景色を赤に設定する(Esc[31m
)など、さまざまな操作を実行するためのコマンドとして解釈できます。ターミナルエミュレータを設定する方法(例:ビジュアル「リング」(画面のちらつき)、可聴着信音、またはまったく鳴らない)、エミュレートするターミナルの種類(VT100またはANSIベースのターミナルは現在、ほぼデフォルト/ "標準")...しかし理解しています非常に異なる制御コードセットを持つ他の端末が存在し、まだ使用されていることを覚えておく価値があります。
これらのコードは、アプリケーションが端末にこれらのタスクを実行するように指示する方法です。意図的に、これらのコマンドを端末に送信するアプリケーションと、偶然にこれらのコードを含む任意のバイナリ文字列を区別する方法はありません。
ちなみに、一部の(ほとんどの)バージョンには、cat
制御コードを次のように変換する(GNU catでそのオプションの長い形式)などのオプションがあります。-v
--show-nonprinting
に慣れる端末コマンドとして解釈されます。
^M
このオプションは、キャリッジリターン()、タブ(^I
)、ESC()などの特定の制御文字が^[
特定のファイルに含まれているかどうかを人々が知るのにも役立ちます。 ESC文字を変換すると、vt100 / ansiまたは同様のESCコードが端末に影響を与えるのを防ぐことができます。