COMPRESS(1)

名称
compress, uncompress - データを圧縮、展開する

書式
compress [-cfv] [-b bits] [file ...] uncompress [-cfv] [file ...]

解説
compress は adaptive Lempel-Ziv 法を用いて、ファイルを圧縮します。 個々の圧縮された file は、元のファイル名に拡張子 “.Z” を付加したものにリネームされます。そして、ファイルの更新時刻、 最終アクセス時刻、ファイルフラグ、モード、ユーザID、グループID の大半 は、パーミッションの許す範囲で圧縮ファイルに引き継がれます。 もし圧縮しても file のサイズが小さくならない場合、compress はそのファイルを無視します。

uncompress は、compress されたファイルを元通りのファイルにリストアし、 ファイル名を拡張子 “.Z” を除いたものにリネームします。

compress, uncompress によってリネームされるファイルの名前がすでに存在 し、標準入力が端末の場合は、上書きしてもよいか確認を求めるプロンプトが (標準エラー出力に) 出力されます。 プロンプトが出せなかったり、確認の回答が得られなかった場合には、 ファイルは上書きされません。

ファイル名が指定されなかった場合、標準入力からのデータが圧縮もしくは 展開され、結果が標準出力に出力されます。 入力および出力ファイルが通常ファイルでない場合、圧縮後のサイズの チェックとファイルの上書きチェックは行なわれません。 入力ファイルは削除されず、また入力ファイルの属性は引き継がれません。

オプションは以下のものがあります:

-b  bits コードの上限値を指定します(以下を参照)。

-c  compressed または uncompressed の出力を標準出力に出します。 入力元のファイルは参照されるのみで変更されません。

-f  ファイル長が小さくなるならないにかかわらず、ファイルの圧縮を強行 します。また、圧縮ファイルと同名のファイルがすでに存在しても、確認を 求めることなく強制的にファイルの上書きを行ないます。

-v  圧縮後、ファイルサイズがどれだけ減ったかをパーセント表示します。

compress は Lempel-Ziv修正アルゴリズムを使用します。 ファイル内の重複する部分文字列は、まず、257 以上の 9ビットコードに 置き換えられます。コードが 512 に達すると、アルゴリズムは 10ビットコードへ切り替えられ、 -b フラグによって指定された上限(デフォルトは16)に達するまで、更に上の ビットを使っていきます。 Bits は、9 から 16 の範囲になければなりません。

bits の上限に達すると、 compress は圧縮率を定期的にチェックします。 圧縮率が上がっているとき、 compress は既存のコード辞書を使い続けますが、 圧縮率が下がったときは compress は、部分文字列のテーブルを破棄し、最初からテーブルを作り直します。 こうして、アルゴリズムをファイルの次の "block" へ適用していくことが できます。

ランダムデータの展開または圧縮されたデータの再圧縮を行わないように するためのマジックナンバと共に、圧縮の際に指定された bits パラメータがエンコードされ、圧縮ファイルの中に保存されるため、 uncompress では -b フラグが省略されています。

得られる圧縮の量は、入力サイズ、コードあたりの bits の数, および重複する部分文字列の分布に依存しています。 普通、ソースコードや英語のテキストは、50-60% 圧縮されます。 一般的に (packコマンドで使われている) Huffman法、または (compactコマンドで使われている)最適化Huffman法よって得られるより、圧縮 は良く、計算時間もかかりません。

診断

関連項目
gunzip(1), gzexe(1), gzip(1), zcat(1), zmore(1), znew(1) Welch, Terry A., June, 1984, A Technique for High Performance Data Compression, IEEE Computer, 17:6, pp. 8-19.

歴史
compress コマンドは 4.3BSD から登場しました。