COMPRESS(1) | FreeBSD General Commands Manual | COMPRESS(1) |
名称
compress, uncompress — データを圧縮、展開する書式
compress | [ -fv][ -b bits][ file ...] |
compress | -c [ -b bits][ file] |
uncompress | [ -f][ file ...] |
uncompress | -c [ file] |
解説
compress ユーティリティは、adaptive Lempel-Ziv 法を用いて、ファイルを圧縮します。個々の圧縮された file は、元のファイル名に .Z 拡張子を付加したものにリネームされます。 .Z 拡張子のついた file 引数は、他の引数が処理された後、それがエラー終了を引き起こす場合を除いて、無視されます。もし圧縮しても file のサイズが小さくならない場合、compress はそのファイルを無視します。uncompress ユーティリティは、compress されたファイルを元通りのファイルにリストアし、ファイル名を .Z 拡張子を除いたものにリネームします。ファイルを指定する際、ファイルの .Z 拡張子を含める必要はありません。ファイルシステム上のファイル名に .Z 拡張子がないなら、他の引数が処理された後に、それは展開されずにエラー終了を引き起こします。
compress, uncompress によってリネームされるファイルの名前がすでに存在し、標準入力が端末の場合は、上書きしてもよいか確認を求めるプロンプトが (標準エラー出力に) 出力されます。プロンプトが出せなかったり、確認の回答が得られなかった場合には、ファイルは上書きされません。
そして、ファイルの更新時刻、最終アクセス時刻、ファイルフラグ、モード、ユーザ ID、グループ ID の大半は、パーミッションの許す範囲で圧縮ファイルに引き継がれます。
ファイル名が指定されなかった場合または file 引数が単一のダッシュ (‘ -’) の場合、標準入力からのデータが圧縮または展開され、結果が標準出力に出力されます。入力および出力ファイルが通常ファイルでない場合、圧縮後のサイズのチェックとファイルの上書きチェックは行なわれません。入力ファイルは削除されず、また入力ファイルの属性は出力ファイルに引き継がれません。
オプションは以下のものがあります:
- -b bits
- コードサイズ (以下を参照) は bits に制限されます。それは 9 から 16 の間でなければなりません。デフォルトは 16 です。
- -c
- 圧縮または展開した出力を標準出力に出します。入力元のファイルは参照されるのみで変更されません。 -v オプションは無視されます。たとえ結果がオリジナルよりも大きくなったとしても、圧縮は試みられます。
- -f
- 確認を求めるプロンプトなしで、ファイルが上書きされます。また compress では、たとえサイズが小さくならなくても、ファイルの圧縮がおこなわれます。
- -v
- 圧縮後、ファイルサイズがどれだけ減ったかをパーセント表示します。 uncompress、または -c オプションが使用されたなら、無視します。
compress ユーティリティは Lempel-Ziv 修正アルゴリズムを使用します。ファイル内の重複する部分文字列は、まず、257 以上の 9 ビットコードに置き換えられます。コードが 512 に達すると、アルゴリズムは 10 ビットコードへ切り替えられ、 -b オプションによって指定された上限、またはデフォルト値に達するまで、更に上のビットを使用し続けます。
上限に達する後、 compress は圧縮率を定期的にチェックします。圧縮率が上がっているとき、 compress は既存のコード辞書を使い続けますが、圧縮率が下がったときは compress は、部分文字列のテーブルを破棄し、最初からテーブルを作り直します。こうして、アルゴリズムをファイルの次の "block"へ適用していくことができます。
ランダムデータの展開または圧縮されたデータの再圧縮を行わないようにするためのマジックナンバと共に、圧縮の際に指定された bits パラメータがエンコードされ、圧縮ファイルの中に保存されるため、 -b オプションは uncompress では利用できません。
得られる圧縮の量は、入力サイズ、コードあたりの bits の数, および重複する部分文字列の分布に依存しています。普通、ソースコードや英語のテキストは、 50-60% 圧縮されます。一般的に (pack コマンドで使われている) Huffman 法、または (compact コマンドで使われている) 最適化 Huffman 法によって得られるより、圧縮は良く、計算時間もかかりません。
終了ステータス
The compress and uncompress utilities exit 0 on success, and >0 if an error occurs.compress ユーティリティは、圧縮を試みたファイルの大きさが減少しないで、 -f オプションが指定されず、他のエラーが生じなければ、2 で終了します。
関連項目
gunzip(1), gzexe(1), gzip(1), zcat(1), zmore(1), znew(1) Welch, Terry A., A Technique for High Performance Data Compression, IEEE Computer, 17:6, pp. 8-19, June, 1984.規格
ユーティリティ compress および uncompress は IEEE Std 1003.1-2001 (“POSIX.1”) に適合しています。歴史
compress コマンドは、 4.3BSD で登場しました。バグ
これらのうちのいくつかは、文書化されていない他の機能とみなされるかもしれません。compress: サイズが小さくならないので、ユーティリティがファイルを圧縮せず、 .Z 拡張子を除いて同じ名前のファイルが存在するなら、指定されたファイルは、実際には前述のように無視されません。拡張子つきのファイルを上書きするか確認を求めるプロンプトを出します。操作が確認されるなら、そのファイルは削除されます。
uncompress: 空のファイルが ( -f を使用して) 圧縮されるなら、結果の .Z ファイルも空です。それは正しく見えますが、次にこのファイルに対し uncompress を使用するなら、エラーとなります。
両方のユーティリティ: ‘ -’引数が使用され、ユーティリティがユーザにプロンプトを出したなら、標準入力はプロンプトに対するユーザの応答に使用されます。
両方のユーティリティ: 指定されたファイルが存在しませんでしたが、 ( compress の場合) .Z 拡張子が有る、または ( uncompress の場合) 拡張子がない同じ名前のものが存在するなら、ユーティリティは、ファイルの不足と続行に関するエラーメッセージを、すぐには出さずにユーザの時間を費します。代わりに、最初に既存のファイルを上書きするかの確認を求め、その結果、上書きしません。
May 17, 2002 | FreeBSD |