Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ zcat(1) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

COMPRESS(1)  —  UNIX Programmer’s Manual

名称

compress, uncompress, zcat − データの圧縮と展開を行う

形式

compress [ −f ] [ −v ] [ −c ] [ −b bits ] [ name ...  ]
uncompress [ −f ] [ −v ] [ −c ] [ name ...  ]
zcat [ name ...  ]

解説

compress は、 適応可能な Lempel Zib のコーディングを使用して、 指定されたファイルのサイズを縮小します。 可能な場合にはいつでも、各ファイルは拡張子 .Z を持ったファイルに置き換えられます。 しかし、同じ所有者のモード、アクセス、 および修正時刻はそのまま保存されます。 ファイルが指定されない場合には、標準入力が圧縮され、 標準出力へ出力されます。圧縮されたファイルは、 uncompress または zcat を使用して元の形に復元することができます。

−f オプションは、たとえ name が実際に圧縮しない(圧縮を取りやめる)ものである場合、 または対応する name.Z ファイルが既に存在している場合であっても、 name の圧縮を強制します。 /bin/sh のバックグラウンドで実行されるとき以外は、 −f が与えられていなければ、ユーザは、存在している name.Z ファイルがオーバーライトされるべきか否かを尋ねられます。

−c (“cat”)オプションは、 compress/uncompress に標準出力へ出力させます。ファイルは変更されません。 zcat の非破壊的な働きは、 uncompress −c と同様にファイルを変換しません。

compress は、 "A Technique for High Performance Data Compression", Terry A. Welch, IEEE Computer, vol.17, no.6 (1984年6月), pp. 8−19 で普及された Lempel Ziv のアルゴリズムを修正したものを使用しています。 ファイル内の一般的な部分文字列は、 まず、9 ビットコード 257 以上によって置き換えられます。 コードが 512 に達すると、アルゴリズムは 10 ビットコードへ切り替わり、 −b フラグによって指定された限界値 (デフォルトは 16) に達するまで、 ビットの使用を継続していきます。 bits は、9 から 16 の範囲になければなりません。 デフォルトは、 compress が小型のマシンで実行できるようにするために、 ソース内で変更することができます。

bits の限界値に到達すると、 compress は、 圧縮率を定期的にチェックします。 圧縮率が増大している場合には、 compress は、 既存のコード辞書を継続して使用します。 しかし、圧縮率が減少している場合には、 compress は部分文字列のテーブルを破棄し、 最初から作りなおします。 これによって、 アルゴリズムはファイルの次の“ブロック”へ適応することが可能になります。

圧縮の際に指定された bits パラメータは、 ランダムデータの展開または圧縮されたデータの再圧縮の いずれも試みられないことを確実にするためのマジック番号と共に、 出力内でコード化されるので、 uncompress では −b フラグが省略されていることに注意してください。

得られる圧縮の量は、入力のサイズ、コード当りの bits の数、および一般的な部分文字列の配分に依存します。 普通、 ソースコードや英語のようなテキストは、50〜60% 圧縮されます。 圧縮は、一般的に、 (pack で使用されているような) Huffman のコーディング、 すなわち適応可能なコーディング (compact) によって達成される圧縮より優れていて、計算時間も少なくてすみます。

−v オプションは、各ファイルの圧縮量を % で表示します。 終了ステータスは、エラーが発生した場合には 1、 大きくなったのが原因で最後のファイルが圧縮されなかった場合は 2、 その他の場合には 0 になります。

診断

Usage: compress [ −fvc ] [ −b maxbits ] [ file ... ]

コマンド行で無効なオプションが指定された。

Missing maxbits

−b のあとに最大ビット数が指定されていなければならない。

file: not in compressed format

uncompress に対して指定されたファイルが圧縮されていない。

file: compressed with xx bits, can only handle yy bits

このマシンの圧縮コードより大きな bits を扱うことのできるプログラムによって file が圧縮された。小さな bits を用いてファイルを圧縮しなおすこと。

file: already has .Z suffix -- no change

ファイルは既に圧縮されていると見なされる。 ファイルのリネームを行い、再び試みること。

file: filename too long to tack on .Z

名前が 12 キャラクタより長いために、 ファイルを圧縮することができなかった。 ファイルのリネームを行い、 再び試みること(指定したファイルは重ね書きされる。

file already exists; do you wish to overwrite (y or n)? 

出力ファイルを取り替えたい場合には "y" で応答する。 そうでない場合には "n" で応答する。

uncompress: corrupt input

SIGSEGB 違反が検出された。 普通、これは入力ファイルが破壊されていることを意味する。

Compression: xx.xx%

圧縮によって節約された入力の割合 (−v の場合だけ)。

-- not a regular file: unchanged

入力ファイルが正規のファイル (例えばディレクトリ)ではないときには、ファイルは変更されない。

-- has xx other links: unchanged

入力ファイルにリンクがある。 ファイルは変更されない。詳細については、 ln(1) を参照のこと。

-- file unchanged

圧縮によって節約が達成されなかった。入力ファイルは変更されない。

バグ

compress は、 ‘.Z’サフィックスの存在に関してより柔軟であるべきです。

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026