gzip, gunzip, zcat - 压缩或展开文件
總攬
gzip [ -acdfhlLnNrtvV19 ] [-S?后綴] [ 文件名 ... ]
gunzip [ -acfhlLnNrtvV ] [-S?后綴] [ 文件名 ... ]
zcat [ -fhLV ] [ 文件名 ... ]
描述
Gzip 采用Lempel-Ziv 編碼算法(LZ77)壓縮給定文件的大小。在可能的情況下, 每個(gè)文件被具有擴(kuò)展名 .gz, 的文件所替換, 同時(shí)保留原屬主狀態(tài),存取和修改時(shí)間 (在VMS系統(tǒng)下缺省擴(kuò)展名為 -gz 在MSDOS、OS/2 FAT, Windows NT FAT 和Atari系統(tǒng)下,缺省擴(kuò)展名為 z ) 如果未指定文件名,或者指定了一個(gè)名為"-"的文件名,則從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),壓縮的結(jié)果輸出到標(biāo)準(zhǔn)輸出。 Gzip 只嘗試壓縮常規(guī)文件,特別地,它將忽略符號(hào)連接。
如果壓縮后的文件名對(duì)于所在的文件系統(tǒng)來(lái)說(shuō)太長(zhǎng), gzip 會(huì)將其截?cái)唷?Gzip 只嘗試截?cái)辔募写笥?個(gè)字符的段(每個(gè)段由點(diǎn)分隔)。如果文件名只由較小的段組成,最長(zhǎng)的段將被截?cái)?。例?#xff0c;如果文件名的長(zhǎng)度限制是14個(gè)字符,文件gzip.msdos.exe 將被壓縮為gzi.msd.exe.gz。在沒(méi)有文件名長(zhǎng)度限制的系統(tǒng)中,文件名將不會(huì)被截?cái)唷?
缺省情況下, gzip 將原始文件名和時(shí)間信息保存在壓縮后的文件中。當(dāng)采用 -N 選項(xiàng)解壓縮文件時(shí),這些信息將被利用。在經(jīng)過(guò)文件傳輸后文件名被截?cái)嗉皶r(shí)間信息未被保留的情況下,這些信息將將用于恢復(fù)文件名及時(shí)間信息。
用 gzip -d 或者 gunzip 以及 zcat. 可以將壓縮后的文件恢復(fù)到原始的形式。如果保留在壓縮文件中的原始文件名不適合于當(dāng)前的文件系統(tǒng),將根據(jù)原文件名新建一個(gè)合法的文件名。
gunzip 將命令行中以.gz, -gz, .z, -z, _z 或 .Z結(jié)尾并具有正確標(biāo)志頭的文件解壓縮,并以去掉擴(kuò)展名的解壓縮文件替換原文件。 gunzip 也能識(shí)別擴(kuò)展名為 .tgz 和 .taz 的文件,并將其分別當(dāng)作 .tar.gz 和 .tar.Z 的縮寫(xiě)。在壓縮時(shí),如果采用 .tar 擴(kuò)展名則需要對(duì)文件名進(jìn)行截?cái)嗵幚頃r(shí), gzip 將采用 .tgz 作為擴(kuò)展名。
gunzip 目前能夠解壓由 gzip, zip, compress, compress -H 以及 pack 產(chǎn)生的文件。對(duì)輸入格式的檢測(cè)是自動(dòng)的。當(dāng)采用前兩種格式時(shí), gunzip 檢查一個(gè)32位的CRC校驗(yàn)碼。對(duì)于 pack, gunzip 則檢查壓縮前的數(shù)據(jù)長(zhǎng)度。標(biāo)準(zhǔn)的 compress 格式的設(shè)計(jì)無(wú)法實(shí)現(xiàn)一致性檢查。但有時(shí) gunzip 仍然能檢測(cè)到壞的.Z文件。如果你在解壓一個(gè).Z文件時(shí)出現(xiàn)錯(cuò)誤,不要簡(jiǎn)單地因?yàn)闃?biāo)準(zhǔn)的 uncompress 沒(méi)有報(bào)錯(cuò)就認(rèn)定.Z文件是正確的。這通常意味著標(biāo)準(zhǔn)的 uncompress 沒(méi)有檢查它的輸入數(shù)據(jù),而盲目地產(chǎn)生了錯(cuò)誤的輸出。SCO的compress -H格式(lzh壓縮方法)不包含CRC校驗(yàn)碼,但也允許一些一致性檢查。
由 zip 生成的文件, 如果其內(nèi)容只有一個(gè)文件并且是以'deflation'方式壓縮的,則可由gzip解壓。這一特性只是為了方便將tar.zip 格式的文件轉(zhuǎn)換為tar.gz格式而加入的。要解壓含有多個(gè)文件的zip文件,請(qǐng)用 unzip.
zcat 的功能與 gunzip -c. 相同。 (在一些系統(tǒng)中, zcat 可能被安裝成 gzcat 以保留 compress 與zcat的原有連接。) zcat 將命令行中列出的文件或由標(biāo)準(zhǔn)輸入輸入的數(shù)據(jù)解壓,解壓后的數(shù)據(jù)寫(xiě)到標(biāo)準(zhǔn)輸出。 zcat 解壓具有正確標(biāo)志頭的文件,而不管其是否帶有 .gz 后綴。
Gzip 采用 zip 和 PKZIP 中所采用的Lempel-Ziv算法。得到的壓縮比依賴于輸入數(shù)據(jù)的大小以及公用子串的分布。例如源程序和英文文檔能夠壓縮60-70%。壓縮比通常比LZW( compress 采用的算法)、Huffman編碼( pack 所采用的算法)、以及自適應(yīng)Huffman編碼( compact) 等方法要好得多。
即使壓縮后的文件略大于原文件,壓縮也照樣進(jìn)行。最壞的情況下,多出的數(shù)據(jù)包括 gzip文件頭中的若干個(gè)字節(jié),加上每塊32K的5個(gè)字節(jié),或者,對(duì)于大文件來(lái)說(shuō)0.015% 的放大率。注意實(shí)際占用的硬盤(pán)塊數(shù)目幾乎從不增加。 gzip 在壓縮和解壓縮時(shí)保留原文件的屬主和時(shí)間信息。
?
選項(xiàng)
-a --ascii
????compressed?size:??壓縮文件的長(zhǎng)度
????uncompressed?size:??壓縮前文件的長(zhǎng)度
????ratio:?壓縮率(如果未知?jiǎng)t為0.0%)
????uncompressed_name:?壓縮前的文件名
對(duì)于非gzip格式的文件,壓縮前文件長(zhǎng)度顯示為-1,例如由compress壓縮的.Z文件。可用下列命令得到這種文件壓縮前的長(zhǎng)度:
????zcat?file.Z?|?wc?-c
如果同時(shí)指定了--verbose選項(xiàng),下列項(xiàng)目也被列出:
????method:?壓縮方式
????crc:?未壓縮數(shù)據(jù)的32位CRC校驗(yàn)碼
????date?&?time:?壓縮前文件的時(shí)間信息
目前支持的壓縮方式有deflate、compress、lzh(SCO下的compress -H)以及pack等方式。對(duì)于非gzip格式的文件,crc校驗(yàn)碼顯示為ffffffff。
若指定了--name選項(xiàng),如果有的話,壓縮前文件名,日期以及時(shí)間是保存在壓縮文件中的內(nèi)容。
若指定了--verbose選項(xiàng),還將列出所有文件的長(zhǎng)度總和,除非某些文件的長(zhǎng)度未知。若指定--quiet選項(xiàng),將不顯示標(biāo)題和合計(jì)兩行內(nèi)容。
????gunzip?-S?""?*???????(在MSDOS下用*.*替換*)
以前版本的gzip采用.z后綴。為了避免與 pack(1). 沖突,后來(lái)作了改動(dòng)。
高級(jí)用法
多個(gè)被壓縮的文件可以連在一起。在這種情況下, gunzip 能一次解壓所有文件。例如:
??????gzip?-c?file1??>?foo.gz
??????gzip?-c?file2?>>?foo.gz
然后
??????gunzip?-c?foo
上面的命令等價(jià)于
??????cat?file1?file2
如果.gz文件中的某一個(gè)文件損壞,其他文件仍可以恢復(fù)(如果損壞的文件被刪除的話)。而且一次壓縮所有文件能得到較好的壓縮率:
??????cat?file1?file2?|?gzip?>?foo.gz
上面用法的壓縮率比下面用法的高:
??????gzip?-c?file1?file2?>?foo.gz
如果想重新壓縮連接起來(lái)的文件以得到較高的壓縮率,可以用下面的命令:
??????gzip?-cd?old.gz?|?gzip?>?new.gz
如果一個(gè)壓縮文件由多個(gè)文件組成,--list選項(xiàng)只能列出最后一個(gè)成員的解壓后文件長(zhǎng)度和CRC校驗(yàn)碼。如果需要所有成員的解壓后文件長(zhǎng)度,可用如下命令:
??????gzip?-cd?file.gz?|?wc?-c
如果想要產(chǎn)生一個(gè)具有多個(gè)成員的存檔文件,以便將來(lái)能夠獨(dú)立地取出其中的成員,可以用tar或zip這樣的歸檔軟件。GNU tar支持-z選項(xiàng),可直接調(diào)用gzip。gzip設(shè)計(jì)為 tar的補(bǔ)充,而非它的取代物。
環(huán)境變量
環(huán)境變量 GZIP 能夠控制一系列 gzip 的缺省選項(xiàng)。這些選項(xiàng)被首先解釋,并且能被命令行參數(shù)中的直接定義覆蓋。例如:
??????在sh下:????GZIP="-8v?--name";?export?GZIP
??????在csh下:???setenv?GZIP?"-8v?--name"
??????在MSDOS下:?set?GZIP=-8v?--name
在Vax/VMS系統(tǒng)中,為了避免與調(diào)用該程序的符號(hào)設(shè)置沖突,該環(huán)境變量名為GZIP_OPT。?
轉(zhuǎn)載于:https://www.cnblogs.com/fanweisheng/p/11082854.html
總結(jié)
以上是生活随笔為你收集整理的gzip, gunzip, zcat - 压缩或展开文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: git操作手册
- 下一篇: day24-1 元类