日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

gzip, gunzip, zcat - 压缩或展开文件

發(fā)布時(shí)間:2024/8/26 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gzip, gunzip, zcat - 压缩或展开文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

總攬

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
Ascii文本模式:按本地習(xí)慣轉(zhuǎn)換行結(jié)束符。該選項(xiàng)僅在一些非Unix 系統(tǒng)上有效。對(duì)于MSDOS,在壓縮時(shí)CR LF(譯注:即回車(chē)和換行符)被轉(zhuǎn)換為L(zhǎng)F,在解壓時(shí)LF被轉(zhuǎn)換為CR LF。
-c --stdout --to-stdout
將結(jié)果寫(xiě)到標(biāo)準(zhǔn)輸出;原文件保持不變。如果有多個(gè)輸入文件,輸出將由一系列獨(dú)立的壓縮文件組成。如果想得到較好的壓縮率,在壓縮前應(yīng)將多個(gè)文件連在一起。
-d --decompress --uncompress
解壓縮。
-f --force
強(qiáng)制壓縮和解壓縮,即使指定文件具有多重連接,或相應(yīng)文件已經(jīng)存在,或壓縮數(shù)據(jù)來(lái)自或?qū)懲粋€(gè)終端。如果輸入數(shù)據(jù)是 gzip 無(wú)法識(shí)別的格式,同時(shí)在命令行中也給出了--stdout選項(xiàng),gzip將把輸入數(shù)據(jù)拷貝至標(biāo)準(zhǔn)輸出而不做任何改動(dòng),就象cat所做的一樣。如果未給出 -f 選項(xiàng),并且未在后臺(tái)運(yùn)行, gzip 會(huì)提示用戶以確認(rèn)是否覆蓋一個(gè)已存在的文件。
-h --help
顯示幫助信息然后退出。
-l --list
列出每個(gè)壓縮文件的如下項(xiàng)目:


????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)容。

-L --license
顯示 gzip 的許可證信息然后退出。
-n --no-name
在壓縮時(shí),缺省不保留原始文件名和時(shí)間信息。(如果必須對(duì)文件名作截?cái)嗵幚?#xff0c;則原始文件名總是被保存。) 在解壓縮時(shí),即使有也不恢復(fù)原始文件名(僅將壓縮文件名中的 gzip 后綴去掉)和時(shí)間信息(拷貝壓縮文件中相應(yīng)信息)。該選項(xiàng)是壓縮時(shí)的缺省選項(xiàng)。
-N --name
在壓縮時(shí)總是保存原始文件名和時(shí)間信息;該選項(xiàng)為缺省選項(xiàng)。在解壓縮時(shí),如果存在原始文件名和時(shí)間信息則恢復(fù)之。該選項(xiàng)可用于對(duì)文件名長(zhǎng)度有限制的系統(tǒng),以及經(jīng)過(guò)文件傳輸后丟失時(shí)間信息的情況。
-q --quiet
壓制所有警告信息。
-r --recursive
遞歸地訪問(wèn)目錄結(jié)構(gòu)。如果命令行中有目錄名, gzip 將進(jìn)入目錄并壓縮所有找到的文件(如果執(zhí)行的命令是 gunzip 則對(duì)其解壓縮)。
-S .suf --suffix .suf
采用.suf后綴取代.gz后綴。可以指定任何后綴,但應(yīng)避免使用除了.z和.gz以外的其它后綴,以免文件傳輸?shù)狡渌到y(tǒng)時(shí)發(fā)生混淆。一個(gè)空后綴將迫使gunzip 解壓縮所有文件而不管它具有什么樣的后綴,例如:


????gunzip?-S?""?*???????(在MSDOS下用*.*替換*)

以前版本的gzip采用.z后綴。為了避免與 pack(1). 沖突,后來(lái)作了改動(dòng)。

-t --test
測(cè)試。檢查壓縮文件的完整性。
-v --verbose
詳盡模式。顯示每個(gè)壓縮或解壓縮文件的名字和壓縮率。
-V --version
版本。顯示版本號(hào)和編譯選項(xiàng)后退出。 Version. Display the version number and compilation options then quit.
-# --fast --best
用指定的數(shù)字 # 調(diào)整壓縮速度,其中 -1--fast 對(duì)應(yīng)最快壓縮方式(壓縮率較低), -9--best 對(duì)應(yīng)最慢壓縮方式(壓縮率最佳)。缺省的壓縮級(jí)別為 -6 (也就是說(shuō),以速度為代價(jià)偏向于高壓縮率)。

高級(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。