回答:
ファイルは、長さが0以上のバイトストリームです。1バイトは8ビットです。8ビットには256の組み合わせがあるため、1バイトは0から255までの任意の数になります。したがって、すべてのファイルは、その最低レベルでは、0から255までの数の大きな塊になります。
数値の「意味」を決めるのは、プログラムとユーザー次第です。テキストを保存する場合は、コードとして数値を使用することをお勧めします。各数値には文字が割り当てられます。それがASCIIとUnicodeが行うことです。テキストを表示したい場合は、デバイスを作成するか、これらの数値を取得して対応するASCII / Unicodeコードのようなビットマップを表示できるプログラムを作成することをお勧めします。これがターミナルとターミナルエミュレータが行うことです。
もちろん、グラフィックスの場合、ピクセルとその色を表す数値が必要になるでしょう。次に、ファイルを調べ、すべてのバイトを読み取り、それに応じて画像をレンダリングするプログラムが必要です。端末エミュレータは、バイトがASCII / Unicode番号であることを期待しており、同じバイトのチャンク(またはファイル)に対して異なる動作をします。
Catは、入力ファイルの内容を標準出力(この場合はテキストデバイス:端末ウィンドウ)にダンプします。画像はバイナリデータで構成されているため、ASCIIテキストであるかのように解釈された生のバイナリデータが表示されます。たとえば、値65のバイトは大文字A、66は大文字Bなどとして表示されます。画像ファイルを正しく解釈できるアプリケーションでファイルを開くと、ファイルのバイナリコンテンツが表示されます。画像として。
cat
は、のようにファイルをまとめるcat filea fileb > filec
ことです。(この例のように)端末を経由しない場合は、ファイルがテキストかバイナリかは関係ありません。UNIXの世界では、バイナリファイルとテキストファイルは同じように格納され、テキストファイルだけが多少制限されたバイトのセットを含んでいます。catの一般的な使用法は、ファイル名をパラメーターとして使用せず、標準入力からの入力を受け入れるコマンドにファイルの内容を送信することです。