COMPACT(1) — NEWS-OS Programmer’s Manual
名称
compact、uncompact、ccat − ファイルの圧縮/復元、 およびファイルの cat を行う
形式
compact [ −v ] [ name ... ]
uncompact [ −v ] [ name ... ]
ccat [ −v ] [ file ... ]
解説
compact は、Huffman コードを使って指定のファイルを圧縮します。 ファイル名が指定されないと、標準入力が圧縮されて標準出力に書き出されます。 compact はオンラインアルゴリズムとして動作します。 1バイト読み込まれるたびに、現在のプレフィックスコードに従って即座に エンコードされます。 このコードは、それまでに現れた頻度のセットに対する最適 Huffman コードです。 エンコーダとデコーダは同一の状態から始まり、 同期しているため、 圧縮したファイルに対してデコードツリーを適用する必要はありません。 また、 compact と uncompact はフィルタとして使うこともできます。 たとえば、次のコマンドは nop (ただし非常に遅い)として動作します。 ... | compact | uncompact | ...
引数 file が与えられると、そのファイルは圧縮され、出力ファイルは file.C に書き出されます。 file はリンクされていないものです。 圧縮されたファイルの最初の 2 バイトには、 そのファイルが圧縮されているということを示すコードが入っています。 このコードは、再圧縮を禁止するために使われています。
どのくらい圧縮されるかは、圧縮されるファイルの種類によって違います。 圧縮のおおよその目安としては、通常のテキストが 38%、 Pascal のソースが43%、 C のソースが 36%、バイナリが19%程度です。 この数字は、圧縮の結果、減少したファイルバイト数の割合です。
uncompact は、 compact が圧縮したファイルから、元のファイルを復元します。 ファイル名が指定されないと、標準入力が復元されて標準出力に書き出されます。
ccat は、 compact が圧縮したファイルから元のファイルを cat しますが、 ファイルは復元しません(これは復元した出力を標準出力に書き出す、 単なるシェルスクリプトです)。
compact および、 uncompact、 ccat は通常、作業を寡黙に行います。 −v フラグを与えると、 compact は圧縮したファイルごとに圧縮率を報告し、 uncompact と ccat は、ファイルを復元するごとにそのファイルの名前を表示します。
制限
ファイル名の最後のセグメントは、 ‘.C’ を追加する余裕がある程度に短くなければなりません。
関連ファイル
∗.C compact が作成した圧縮されたファイル。uncompact によって削除されます。
関連事項
Gallager, Robert G., ‘Variation on a Theme of Huffman’, I.E.E.E. Transactions on Information Theory , vol.IT-24, no.6, November 1978, pp.668-674.
著者
Colin L.McMaster
NEWS-OSRelease 4.1C