Provided by: manpages-zh_1.5.2-1_all bug

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)還差。對於一些高度冗餘 的檔案, compressgzip 壓縮得更好。

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

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

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

                                     local                             GZIP(1)