.\" Copyright (c) 1986, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" James A. Woods, derived from original work by Spencer Thomas .\" and Joseph Orost. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)compress.1 8.2 (Berkeley) 4/18/94 .\" jpman %Id: compress.1,v 1.2 1997/04/03 02:01:53 mutoh Stab % .\" .Dd April 18, 1994 .Dt COMPRESS 1 .Os BSD 4.3 .Sh 名称 .Nm compress , .Nm uncompress , .Nm zcat .Nd データを圧縮、展開する .Sh 書式 .Nm compress .Op Fl cfv .Op Fl b Ar bits .Op Ar .Nm uncompress .Op Fl cfv .Op Ar .Nm zcat .Op Ar .Sh 解説 .Nm compress は adaptive Lempel-Ziv 法を用いて、ファイルを圧縮します。 個々の圧縮された .Ar file は、元のファイル名に拡張子 .Dq .Z を付加したものにリネームされます。そして、ファイルの更新時刻、 最終アクセス時刻、ファイルフラグ、モード、ユーザID、グループID の大半 は、パーミッションの許す範囲で圧縮ファイルに引き継がれます。 もし圧縮しても .Ar file のサイズが小さくならない場合、compress はそのファイルを無視します。 .Pp .Nm uncompress は、compress されたファイルを元通りのファイルにリストアし、 ファイル名を拡張子 .Dq .Z を除いたものにリネームします。 .Pp .Nm zcat は .Dq "uncompress -c" の別名です。 .Pp compress, uncompress によってリネームされるファイルの名前がすでに存在 し、標準入力が端末の場合は、上書きしてもよいか確認を求めるプロンプトが (標準エラー出力に) 出力されます。 プロンプトが出せなかったり、確認の回答が得られなかった場合には、 ファイルは上書きされません。 .Pp ファイル名が指定されなかった場合、標準入力からのデータが圧縮もしくは 展開され、結果が標準出力に出力されます。 入力および出力ファイルが通常ファイルでない場合、圧縮後のサイズの チェックとファイルの上書きチェックは行なわれません。 入力ファイルは削除されず、また入力ファイルの属性は引き継がれません。 .Pp オプションは以下のものがあります: .Bl -tag -width Ds .It Fl b .Ar bits コードの上限値を指定します(以下を参照)。 .It Fl c compressed または uncompressed の出力を標準出力に出します。 入力元のファイルは参照されるのみで変更されません。 .It Fl f ファイル長が小さくなるならないにかかわらず、ファイルの圧縮を強行 します。また、圧縮ファイルと同名のファイルがすでに存在しても、確認を 求めることなく強制的にファイルの上書きを行ないます。 .It Fl v 圧縮後、ファイルサイズがどれだけ減ったかをパーセント表示します。 .El .Pp .Nm compress は Lempel-Ziv修正アルゴリズムを使用します。 ファイル内の重複する部分文字列は、まず、257 以上の 9ビットコードに 置き換えられます。コードが 512 に達すると、アルゴリズムは 10ビットコードへ切り替えられ、 .Fl b フラグによって指定された上限(デフォルトは16)に達するまで、更に上の ビットを使っていきます。 .Ar Bits は、9 から 16 の範囲になければなりません。 .Pp .Ar bits の上限に達すると、 .Nm compress は圧縮率を定期的にチェックします。 圧縮率が上がっているとき、 .Nm compress は既存のコード辞書を使い続けますが、 圧縮率が下がったときは .Nm compress は、部分文字列のテーブルを破棄し、最初からテーブルを作り直します。 こうして、アルゴリズムをファイルの次の "block" へ適用していくことが できます。 .Pp ランダムデータの展開または圧縮されたデータの再圧縮を行わないように するためのマジックナンバと共に、圧縮の際に指定された .Ar bits パラメータがエンコードされ、圧縮ファイルの中に保存されるため、 .Nm uncompress では .Fl b フラグが省略されています。 .Pp .ne 8 得られる圧縮の量は、入力サイズ、コードあたりの .Ar bits の数, および重複する部分文字列の分布に依存しています。 普通、ソースコードや英語のテキストは、50\-60% 圧縮されます。 一般的に (packコマンドで使われている) Huffman法、または (compactコマンドで使われている)最適化Huffman法よって得られるより、圧縮 は良く、計算時間もかかりません。 .Pp .Nm compress ユーティリティは正常終了時には 0 を、エラー終了時には 0 より大きい値を 返します。 .Sh 関連項目 .Rs .%A Welch, Terry A. .%D June, 1984 .%T "A Technique for High Performance Data Compression" .%J "IEEE Computer" .%V 17:6 .%P pp. 8-19 .Re .Sh 歴史 .Nm コマンドは .Bx 4.3 から登場しました。