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
????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選項,將不顯示標題和合計兩行內容。
????gunzip?-S?""?*???????(在MSDOS下用*.*替換*)
以前版本的gzip采用.z后綴。為了避免與 pack(1). 沖突,后來作了改動。
高級用法
多個被壓縮的文件可以連在一起。在這種情況下, 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。?
轉載于:https://www.cnblogs.com/fanweisheng/p/11082854.html
總結
以上是生活随笔為你收集整理的gzip, gunzip, zcat - 压缩或展开文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git操作手册
- 下一篇: day24-1 元类