名称
compress, uncompress, zcat, compressdir, uncompressdir ― データの圧縮および展開
構文
ファイルの圧縮
compress [-d] [-f|-z]
[-z] [-v] [-c]
[-V] [-b maxbits] [file ...]
uncompress [-f] [-v]
[-c] [-V] [file ...]
zcat [-V] [file ...]
ディレクトリ
サブツリー全体の圧縮
compressdir [options] [directory ...]
uncompressdir [options] [directory ...]
説明
以下のコマンドは、次に示すようにファイルおよびディレクトリ
サブツリーの圧縮および展開を行います。
| compress | | 適切な Lempel-Ziv コーディングを使って指定 file のサイズを縮小します。 縮小が可能ならば、指定した各 file は同じ名前の新しいファイルに置き換えられ、ファイル名には接尾辞 .Z が追加されて圧縮ファイルであることを示します。
元の所有権、モード、アクセス、および修正時刻は保存されます。 file が指定されなかったか、または - が指定された場合は、
標準入力が圧縮されて標準出力に出力されます。 |
| uncompress | | 圧縮された file を元の形式に復元します。 生成されるファイルには、元のファイル名、所有権、およびパーミッションがあり、ファイル名の接尾辞 .Z は削除されます。 file が指定されなかったか、または - が指定された場合は、
標準入力が展開されて標準出力に出力されます。 |
| zcat | | 圧縮された file を元の形式に復元して、その結果を標準出力に送ります。 file が指定されなかったか、または - が指定された場合は、 標準入力が展開されて標準出力に出力されます。 |
| compressdir | | フロントエンドプロセッサ。 指定した各 directory サブツリーを再帰的にたどり、 compress を使用して directory にある各指定ファイルを圧縮します。 生成されるファイルが既存のファイルより小さくなれば、元のファイルは
圧縮ファイルに置き換えられ、ファイル名には接尾辞 .Z,
が付けられます。 ディレクトリを指定しなければ、圧縮は 現在のディレクトリから始まるすべてのファイルに適用されます。 options には、有効な compress コマンドオプションをどれでも指定できます (これらは compress にそのまま渡されます)。
すべてのファイルの圧縮を強行する場合は、結果が 元のファイルより大きくなるときでも、 -f オプションを指定してください。 |
| uncompressdir | | compressdir の反対。 圧縮ファイルを元の形式に復元します。 options には、有効な uncompress コマンドオプションをどれでも指定できます (これらは uncompress にそのまま渡されます)。 |
圧縮量は 入力のサイズ、コード当たりの最大ビット数 maxbits) および共通の副文字列の分散状況によって異なります。
通常、ソースコードまたは英語文などのテキストは、 50〜60 パーセント縮小されます。
圧縮は通常、ハフマン (Huffman) コーディング (pack で使用されている) または最適ハフマン (Huffman) コーディング
(compact) によって達成される圧縮より良好で、
計算に必要な時間は少なくなります。
オプション
これらのコマンドは、上記の 構文 で示された組合わせで、次のオプションを認識します。
| -d | | file を展開します。 compress -d は uncompress と同じです。 |
| -f | | file の圧縮を強制的に行ないます。 圧縮できないファイルがある場合でも、
ディレクトリ全体を圧縮する場合に便利です。 -f を指定せず、 compress をフォアグラウンドで実行する場合には、ユーザーは 既存のファイルをオーバライトするかどうか入力を求められます。 |
| -z | | これは -f オプションと同じですが、ヌル圧縮がある場合は圧縮を強制しない点が異なります。 |
| -v | | 圧縮した各ファイルの縮小率を説明するメッセージを表示します。 |
| -c | | compress と uncompress を強制的に標準出力に書き込みます。ファイルの変更はありません。 zcat の非破壊的な動作は uncompress
-c の動作と同じです。 |
| -V | | 標準エラーに現在のバージョンとコンパイルオプションを出力します。 |
| -b maxbits | | compress アルゴリズムが使用する最大ビット数を指定します。
デフォルトは 16 であり、範囲は 9〜16 の任意の整数とすることができます。 |
compress は A Technique for High Performance Data Compression, Terry A. Welch, IEEE Computer, vol. 17, no. 6 (June 1984)、8-19 ページで 紹介された修正 Lempel-Ziv アルゴリズムを使用しています。
ファイルに共通の副文字列は最初に、9 ビットコード 257 以上に置き換えられます。
コード 512 に達すると、アルゴリズムは 10 ビットコードに切り換わり、 -b フラグの指定する制限に達するまで (デフォルト 16)、
使用ビットを増やし続けます。
maxbits 制限に到達した後、 compress は定期的に圧縮比をチェックします。
圧縮比が上がると、 compress は既存のコード辞書を使用し続けます。
ただし、圧縮比が落ちると、 compress は副文字列のテーブルを捨て、最初からそれを構築し直します。
これにより、アルゴリズムは、ファイルの次の「ブロック」に適応できます。
-b フラグは uncompress の場合には省略されることに注意してください。
これは、ランダムなデータを復元したり、圧縮されたデータを再圧縮したりしないように、圧縮時に指定した maxbits パラメータが、マジックナンバーとともに出力時にコード化されるためです。
アクセス制御リスト
データの圧縮および展開を行う際、 compress はファイルのアクセス制御リストを保持しています。
多言語化対応
環境変数
LC_MESSAGES は、メッセージの表示に使われる言語を指定します。
LC_MESSAGES が環境内で指定されていないか空白文字列に設定されている場合、
未指定または空白の各変数に対して LANG の値がデフォルトとして使われます。 LANG が指定されていないか空白文字列に設定されている場合、 LANG の代わりに
C がデフォルトとして使われます ( lang(5) を参照)。
国際化変数のどれかが無効な設定を含む場合、 compress 、 uncompress 、
および zcat は全ての国際化変数が"C"に設定されているように振る舞います。 environ(5) を参照してください。
サポートされるコードセット
シングルバイトおよびマルチバイトの文字コードセットがサポートされます。
戻り値
これらのコマンドは次の値を終了時に戻します。
| 0 | | 正常終了。 |
| 2 | | ファイルは圧縮を試みた後の方が大きくなる。 |
| 1 | | エラーが発生。 |
診断
| Usage:
compress [-f|-z] [-dvcV] [-b maxbits] [file ...] |
| | | 正しくないオプションがコマンド行で指定されました。 |
| Missing maxbits | | maxbits は、 -b に後続しなければなりません。 |
| file: not in compressed format |
| | | uncompress に指定したファイルは圧縮されていません。 |
| file: compressed with xxbits, can only handle yybits |
| | | file は、マシン上の圧縮コードより大きな maxbits 値を処理できるプログラムによって圧縮されました。
より小さな maxbits 値で、ファイルを再圧縮してください。 |
| file: already has .Z suffix -- no change |
| | | ファイルは、すでに圧縮済みであるとされています。
ファイルの名称を変更して、もう一度試してください。 |
| file: filename too long to tack on .Z |
| | | 出力ファイル名は、 .Z 接尾辞の付いたソースファイル名ですが、これは
ソースファイルが属すファイルシステムには長すぎます。 ソースファイル名を短くして再び試みてください。 |
| file already exists; do you wish to
overwrite (y or n)? |
| | | 出力で既存のファイルを置き換えたい場合には、 y と応答してください。さもなければ、 n と応答してください。 |
| uncompress: corrupt input |
| | | 入力ファイルが破壊されたことを意味する SIGSEGV 違反が検出されました。 |
| Compression: xx.xx% |
| | | 圧縮によって節約される入力のパーセンテージ ( -v の場合のみ)。 |
| -- not a regular file: unchanged |
| | | 入力ファイルが通常のファイルでない場合 (例えばディレクトリ) は、変更されません。 |
| -- has xxother links: unchanged |
| | | 入力ファイルは、シンボリックリンク以外のリンクを持っています。変更されません。詳細は、 ln(1) を参照してください。 |
| -- has symbolic links:
unchanged |
| | | 入力ファイルにはシンボリックリンクがあります。変更されません。
詳細は、 ln(1) を参照してください。 |
| -- file unchanged |
| | | 圧縮によって節約されません。 入力は変更されません。 |
例
zenith という名前のファイルを圧縮して、圧縮情報をターミナルにプリントします。
ターミナルディスプレイには、2 種類の行のいずれかが表示されます。
その例を示します。
zenith: Compression: 23.55% -- replaced with zenith.Z
これは、圧縮されたファイルが元のファイルより 23.55% 小さくなったことを示します。
また、
zenith: Compression: -12.04% -- file unchanged
は、ファイルの圧縮を行うと 12.04% のスペースを追加使用しなければならないことを示します。
以下のコマンドのいずれかをタイプ入力して、圧縮を復元します。
uncompress zenith.Z
compress -d zenith.Z
これにより、ファイル zenith.Z は元の展開された形式および名前に復元されます。
uncompress は、ファイルの指定がなければ標準入力を展開します。
例えば、圧縮された tar ファイルをリストするには次のように指定します。
uncompress -c arch.tar.Z | tar -tvf -
警告
圧縮されたファイルは大容量のメモリがあるマシン間では使用できますが、
データ処理スペースが小さい (64K バイト以下) アーキテクチャにファイル転送する場合には、
オプション -b12 を指定する必要があります。
NFS
ネットワーク化されたファイルのアクセス制御リストは要約されます ( stat() によって st_mode の中に戻されるのと同じですが、
新しいファイルにはコピーされません ( stat(2) を参照))。
著者
compress は、Joseph M. Orost、Kenneth E.
Turkowski、Spencer W. Thomas、および James A. Woods によって開発されました。
ファイル
| *.Z | | compress によって作成され、 uncompress によって削除される圧縮ファイル |
参照
compact(1), pack(1), acl(5).