.\" 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 .\" %FreeBSD: src/usr.bin/compress/compress.1,v 1.19 2004/07/05 17:12:53 ru Exp % .\" $FreeBSD$ .\" .Dd May 17, 2002 .Dt COMPRESS 1 .Os .Sh 名称 .Nm compress , .Nm uncompress .Nd データを圧縮、展開する .Sh 書式 .Nm compress .Op Fl cfv .Op Fl b Ar bits .Op Ar .Nm uncompress .Op Fl cfv .Op Ar .Sh 解説 .Nm ユーティリティは adaptive Lempel-Ziv 法を用いて、ファイルを圧縮します。 個々の圧縮された .Ar file は、元のファイル名に拡張子 .Dq .Z を付加したものにリネームされます。 そして、ファイルの更新時刻、最終アクセス時刻、ファイルフラグ、モード、 ユーザ ID、グループ ID の大半は、パーミッションの許す範囲で圧縮ファイルに 引き継がれます。 もし圧縮しても .Ar file のサイズが小さくならない場合、compress はそのファイルを無視します。 .Pp .Nm uncompress ユーティリティは、compress されたファイルを元通りのファイルにリストアし、 ファイル名を拡張子 .Dq .Z を除いたものにリネームします。 .Pp compress, uncompress によってリネームされるファイルの名前がすでに存在し、 標準入力が端末の場合は、上書きしてもよいか確認を求めるプロンプトが (標準エラー出力に) 出力されます。 プロンプトが出せなかったり、確認の回答が得られなかった場合には、 ファイルは上書きされません。 .Pp ファイル名が指定されなかった場合または .Ar file 引数が単一のダッシュ .Pq Sq Fl の場合、標準入力からのデータが圧縮もしくは 展開され、結果が標準出力に出力されます。 入力および出力ファイルが通常ファイルでない場合、圧縮後のサイズの チェックとファイルの上書きチェックは行なわれません。 入力ファイルは削除されず、また入力ファイルの属性は引き継がれません。 .Pp オプションは以下のものがあります: .Bl -tag -width indent .It Fl b .Ar bits コードの上限値を指定します (以下を参照)。 .It Fl c compressed または uncompressed の出力を標準出力に出します。 入力元のファイルは参照されるのみで変更されません。 .It Fl f ファイル長が小さくなるならないにかかわらず、ファイルの圧縮を強行します。 また、圧縮ファイルと同名のファイルがすでに存在しても、確認を 求めることなく強制的にファイルの上書きを行ないます。 .It Fl v 圧縮後、ファイルサイズがどれだけ減ったかをパーセント表示します。 .El .Pp .Nm ユーティリティは Lempel-Ziv 修正アルゴリズムを使用します。 ファイル内の重複する部分文字列は、まず、257 以上の 9ビットコードに 置き換えられます。 コードが 512 に達すると、アルゴリズムは 10 ビットコードへ切り替えられ、 .Fl b フラグによって指定された上限 (デフォルトは 16) に達するまで、更に上の ビットを使っていきます。 .Ar bits は、9 から 16 の範囲になければなりません。 .Pp .Ar bits の上限に達すると、 .Nm は圧縮率を定期的にチェックします。 圧縮率が上がっているとき、 .Nm は既存のコード辞書を使い続けますが、 圧縮率が下がったときは .Nm は、部分文字列のテーブルを破棄し、最初からテーブルを作り直します。 こうして、アルゴリズムをファイルの次の "block" へ適用していくことが できます。 .Pp ランダムデータの展開または圧縮されたデータの再圧縮を行わないように するためのマジックナンバと共に、圧縮の際に指定された .Ar bits パラメータがエンコードされ、圧縮ファイルの中に保存されるため、 .Nm uncompress では .Fl b フラグが省略されています。 .Pp 得られる圧縮の量は、入力サイズ、コードあたりの .Ar bits の数, および重複する部分文字列の分布に依存しています。 普通、ソースコードや英語のテキストは、50\-60% 圧縮されます。 一般的に (pack コマンドで使われている) Huffman 法、または (compact コマンドで使われている) 最適化 Huffman 法によって得られるより、 圧縮は良く、計算時間もかかりません。 .Sh 診断 .Ex -std compress uncompress .Pp 圧縮を試みたファイルの大きさが減少しない場合で .Fl f オプションが指定されなかった場合、ユーティリティ .Nm compress は 2 で終了します。 .Sh 関連項目 .Xr gunzip 1 , .Xr gzexe 1 , .Xr gzip 1 , .Xr zcat 1 , .Xr zmore 1 , .Xr znew 1 .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 compress および .Nm uncompress は .St -p1003.1-2001 に適合しています。 .Sh 歴史 .Nm コマンドは .Bx 4.3 から登場しました。