COMPRESS(1)

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

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

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

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

zcat は “uncompress -c” の別名です。

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法よって得られるより、圧縮 は良く、計算時間もかかりません。

compress ユーティリティは正常終了時には 0 を、エラー終了時には 0 より大きい値を 返します。

関連項目
Welch, Terry A., June, 1984, A Technique for High Performance Data Compression, IEEE Computer, 17:6, pp. 8-19.

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