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 [AT] 263.net>
[中 文 版 最 新 更 新 ]
2000/12/28
[中 國 Linux論 壇 man手 冊 頁 翻 譯 計 劃 ]
跋
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh