GZIP(1)

NAME
gzip, gunzip, zcat - 壓縮或展開文件

總攬
gzip [ -acdfhlLnNrtvV19 ] [-S 後綴] [ 文件名 ... ]
gunzip [ -acfhlLnNrtvV ] [-S 後綴] [ 文件名 ... ]
zcat [ -fhLV ] [ 文件名 ... ]

描述
Gzip 採用Lempel-Ziv 編碼算法(LZ77)壓縮給定文件的大小。 在可能的情況下, 每個文件被具有擴展名 .gz, 的文件所替換, 同時保留原屬主狀態，存取和修改時間 (在VMS系統下缺省擴展名爲 -gz 在MSDOS、OS/2 FAT, Windows NT FAT 和Atari系統下，缺省擴展名爲 z ) 如果未指定文件名，或者指定了一個名爲"-"的文件名，則從標準輸入讀取數據，壓縮的 結果輸出到標準輸出。 Gzip 只嘗試壓縮常規文件，特別地，它將忽略符號連接。

如果壓縮後的文件名對於所在的文件系統來說太長， gzip 會將其截斷。 Gzip 只嘗試截斷文件名中大於3個字符的段（每個段由點分隔）。如果文件名只由較小的段 組成，最長的段將被截斷。例如，如果文件名的長度限制是14個字符，文件gzip.msdos.exe 將被壓縮爲gzi.msd.exe.gz。在沒有文件名長度限制的系統中，文件名將不會被截斷。

缺省情況下， gzip 將原始文件名和時間信息保存在壓縮後的文件中。 當採用 -N 選項解壓縮文件時，這些信息將被利用。在經過文件傳輸後文件名被截斷及時間信息 未被保留的情況下，這些信息將將用於恢復文件名及時間信息。

用 gzip -d 或者 gunzip 以及 zcat. 可以將壓縮後的文件恢復到原始的形式。如果保留在壓縮文件中的原始文件名不適合 於當前的文件系統，將根據原文件名新建一個合法的文件名。

gunzip 將命令行中以.gz, -gz, .z, -z, _z 或 .Z結尾並具有正確標誌頭的文件 解壓縮，並以去掉擴展名的解壓縮文件替換原文件。 gunzip 也能識別擴展名爲 .tgz 和 .taz 的文件，並將其分別當作 .tar.gz 和 .tar.Z 的縮寫。 在壓縮時，如果採用 .tar 擴展名則需要對文件名進行截斷處理時， gzip 將採用 .tgz 作爲擴展名。

gunzip 目前能夠解壓由 gzip, zip, compress, compress -H 以及 pack 產生的文件。 對輸入格式的檢測是自動的。當採用前兩種格式時， gunzip 檢查一個32位的CRC校驗碼。對於 pack, gunzip 則檢查壓縮前的數據長度。標準的 compress 格式的設計無法實現一致性檢查。但有時 gunzip 仍然能檢測到壞的.Z文件。如果你在解壓一個.Z文件時出現錯誤，不要簡單地因爲標準的 uncompress 沒有報錯就認定.Z文件是正確的。 這通常意味着標準的 uncompress 沒有檢查它的輸入數據，而盲目地產生了錯誤的輸出。SCO的compress -H格式(lzh壓縮方 法）不包含CRC校驗碼，但也允許一些一致性檢查。

由 zip 生成的文件, 如果其內容只有一個文件並且是以'deflation'方式壓縮的，則可 由gzip解壓。這一特性只是爲了方便將tar.zip 格式的文件轉換爲tar.gz格式而加入的。 要解壓含有多個文件的zip文件，請用 unzip.

zcat 的功能與 gunzip -c. 相同。 (在一些系統中, zcat 可能被安裝成 gzcat 以保留 compress 與zcat的原有連接。) zcat 將命令行中列出的文件或由標準輸入輸入的數據解壓，解壓後的數據寫到標準輸出。 zcat 解壓具有正確標誌頭的文件，而不管其是否帶有 .gz 後綴。

Gzip 採用 zip 和 PKZIP 中所採用的Lempel-Ziv算法。得到的壓縮比依賴於輸入數據的大小以及公用 子串的分佈。例如源程序和英文文檔能夠壓縮60-70%。 壓縮比通常比LZW( compress 採用的算法)、Huffman編碼( pack 所採用的算法）、以及自適應Huffman編碼( compact) 等方法要好得多。

即使壓縮後的文件略大於原文件，壓縮也照樣進行。最壞的情況下，多出的數據包括 gzip文件頭中的若干個字節，加上每塊32K的5個字節，或者，對於大文件來說0.015% 的放大率。注意實際佔用的硬盤塊數目幾乎從不增加。 gzip 在壓縮和解壓縮時保留原文件的屬主和時間信息。

選項

-a --ascii
    Ascii文本模式：按本地習慣轉換行結束符。該選項僅在一些非Unix 系統上有效。 對於MSDOS，在壓縮時CR LF(譯註：即回車和換行符)被轉換爲LF，在解壓時LF被 轉換爲CR LF。

-c --stdout --to-stdout
    將結果寫到標準輸出；原文件保持不變。如果有多個輸入文件，輸出將由一系列 獨立的壓縮文件組成。如果想得到較好的壓縮率，在壓縮前應將多個文件連在一起。

-d --decompress --uncompress
    解壓縮。

-f --force
    強制壓縮和解壓縮，即使指定文件具有多重連接，或相應文件已經存在，或壓縮數據 來自或寫往一個終端。 如果輸入數據是 gzip 無法識別的格式，同時在命令行中也給出了--stdout選項，gzip將把輸入數據拷貝至標準 輸出而不做任何改動，就象cat所做的一樣。 如果未給出 -f 選項，並且未在後臺運行， gzip 會提示用戶以確認是否覆蓋一個已存在的文件。

-h --help
    顯示幫助信息然後退出。

-l --list
    列出每個壓縮文件的如下項目：
        compressed size: 壓縮文件的長度
        uncompressed size: 壓縮前文件的長度
        ratio: 壓縮率(如果未知則爲0.0%)
        uncompressed_name: 壓縮前的文件名 對於非gzip格式的文件，壓縮前文件長度顯示爲-1，例如由compress壓縮的.Z文件。 可用下列命令得到這種文件壓縮前的長度：
        zcat file.Z | wc -c 如果同時指定了--verbose選項，下列項目也被列出:
        method: 壓縮方式
        crc: 未壓縮數據的32位CRC校驗碼
        date & time: 壓縮前文件的時間信息 目前支持的壓縮方式有deflate、compress、lzh(SCO下的compress -H)以及pack等方式。 對於非gzip格式的文件，crc校驗碼顯示爲ffffffff。 若指定了--name選項，如果有的話，壓縮前文件名，日期以及時間是保存在壓縮文件中 的內容。 若指定了--verbose選項，還將列出所有文件的長度總和，除非某些文件的長度未知。 若指定--quiet選項，將不顯示標題和合計兩行內容。

-L --license
    顯示 gzip 的許可證信息然後退出。

-n --no-name
    在壓縮時，缺省不保留原始文件名和時間信息。(如果必須對文件名作截斷處理， 則原始文件名總是被保存。) 在解壓縮時，即使有也不恢復原始文件名（僅將壓 縮文件名中的 gzip 後綴去掉）和時間信息（拷貝壓縮文件中相應信息）。該選項是壓縮時的缺省選項。

-N --name
    在壓縮時總是保存原始文件名和時間信息；該選項爲缺省選項。在解壓縮時，如果 存在原始文件名和時間信息則恢復之。該選項可用於對文件名長度有限制的系統， 以及經過文件傳輸後丟失時間信息的情況。

-q --quiet
    壓制所有警告信息。

-r --recursive
    遞歸地訪問目錄結構。如果命令行中有目錄名， gzip 將進入目錄並壓縮所有找到的文件（如果執行的命令是 gunzip 則對其解壓縮）。

-S .suf --suffix .suf
    採用.suf後綴取代.gz後綴。可以指定任何後綴，但應避免使用除了.z和.gz以外 的其它後綴，以免文件傳輸到其它系統時發生混淆。一個空後綴將迫使gunzip 解壓縮所有文件而不管它具有什麼樣的後綴，例如：
        gunzip -S "" * (在MSDOS下用*.*替換*) 以前版本的gzip採用.z後綴。爲了避免與 pack(1). 衝突，後來作了改動。

-t --test
    測試。檢查壓縮文件的完整性。

-v --verbose
    詳盡模式。顯示每個壓縮或解壓縮文件的名字和壓縮率。

-V --version
    版本。顯示版本號和編譯選項後退出。 Version. Display the version number and compilation options then quit.

-# --fast --best
    用指定的數字 # 調整壓縮速度， 其中 -1 及 --fast 對應最快壓縮方式（壓縮率較低）， -9 及 --best 對應最慢壓縮方式（壓縮率最佳）。缺省的壓縮級別爲 -6 （也就是說，以速度爲代價偏向於高壓縮率）。

高級用法
多個被壓縮的文件可以連在一起。在這種情況下， gunzip 能一次解壓所有文件。例如：
      gzip -c file1 > foo.gz
      gzip -c file2 >> foo.gz 然後
      gunzip -c foo 上面的命令等價於
      cat file1 file2 如果.gz文件中的某一個文件損壞，其他文件仍可以恢復（如果損壞的文件被刪除的話）。 而且一次壓縮所有文件能得到較好的壓縮率：
      cat file1 file2 | gzip > foo.gz 上面用法的壓縮率比下面用法的高:
      gzip -c file1 file2 > foo.gz 如果想重新壓縮連接起來的文件以得到較高的壓縮率，可以用下面的命令:
      gzip -cd old.gz | gzip > new.gz 如果一個壓縮文件由多個文件組成，--list選項只能列出最後一個成員的 解壓後文件長度和CRC校驗碼。如果需要所有成員的解壓後文件長度，可用如下命令：
      gzip -cd file.gz | wc -c 如果想要產生一個具有多個成員的存檔文件，以便將來能夠獨立地取出其中的成員， 可以用tar或zip這樣的歸檔軟件。GNU tar支持-z選項，可直接調用gzip。gzip設計爲 tar的補充，而非它的取代物。

環境變量
環境變量 GZIP 能夠控制一系列 gzip 的缺省選項。 這些選項被首先解釋，並且能被命令行參數中的直接定義覆蓋。例如:
      在sh下: GZIP="-8v --name"; export GZIP
      在csh下: setenv GZIP "-8v --name"
      在MSDOS下: set GZIP=-8v --name 在Vax/VMS系統中，爲了避免與調用該程序的符號設置衝突，該環境變量名爲GZIP_OPT。

另見
znew(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1), pack(1), compact(1)

診斷
正常的退出狀態爲0；如果出現錯誤，退出狀態爲1。如果出現警告信息，退出狀態爲2。

Usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
在命令行中出現非法的選項。
file: not in gzip format
指定給 gunzip 的文件沒有被壓縮。
file: Corrupt input. Use zcat to recover some data.
壓縮文件已損壞。在損壞點以前的數據可以用下列命令恢復。
zcat file > recover
file: compressed with xx bits, can only handle yy bits
文件 File 是由一個比在當前機器上能處理更多 位 的程序壓縮的（採用LZW算法）。用gzip重新壓縮該文件，將得到較好的壓縮率，並且 佔用的內存較少。
file: already has .gz suffix -- no change
gzip認爲該程序已經壓縮。改變文件名再試。
file already exists; do you wish to overwrite (y or n)?
如果你想覆蓋該文件回答"y"，如果不是回答"n"。
gunzip: corrupt input
探測到一個SIGSEGV非法操作，這通常意味着輸入文件已經損壞。
xx.x%
由於壓縮而減少的數據量相對於輸入數據的百分比。（僅對應於 -v 和 -l 選項。）
-- not a regular file or directory: ignored
如果輸入文件不是常規文件或目錄，（例如符號連接，socket文件，FIFO文件， 設備文件），該文件將保持不變。
-- has xx other links: unchanged
該文件有連接，將保持不變。更多信息參見 ln(1). 採用 -f 強制壓縮多重連接文件。

警告
在向磁帶寫壓縮數據時，通常需要在數據尾部充零以使數據總長度爲磁帶數據塊 長度的整數倍。當用 gunzip 對這樣的數據解壓縮時， gunzip 能檢測到尾部的無用數據，在缺省情況下將發出一個警告信息。必須採用--quiet 選項才能壓制這一警告信息。該選項可以設在 GZIP 環境變量中，例如：
  在sh下: GZIP="-q" tar -xfz --block-compress /dev/rst0
  在csh下: (setenv GZIP -q; tar -xfz --block-compr /dev/rst0 在上面的例子中，gzip被採用了-z選項的GNU tar調用。在磁帶上讀寫壓縮數據時， 應確保採用同樣的數據塊長度（tar的 -b 選項）。（本例假定使用的是GNU版本的tar。）

缺陷
如果數據長度超過2GB, 採用--list選項時報告的文件長度不正確。 如果壓縮文件位於不能定位的存儲介質上，採用--list選項時報告的文件長度爲-1，crc 校驗碼爲ffffffff。 在極少數情況下，--best選項得到的壓縮率比缺省情況(-6)還差。對於一些高度冗餘 的文件， compress 比 gzip 壓縮得更好。

[中文版維護人]
Liu JingSong <js-liu@263.net>

[中文版最新更新]
2000/12/28

[中國Linux論壇man手冊頁翻譯計劃]
http://cmpp.linuxforum.net

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh