溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux基礎命令gzip的用法

發(fā)布時間:2021-08-31 20:40:08 來源:億速云 閱讀:227 作者:chen 欄目:建站服務器

本篇內(nèi)容介紹了“Linux基礎命令gzip的用法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

gzip

gzip通過Lempel-ziv算法來壓縮文件,壓縮的時候保留每個文件的所有者、權(quán)限、修改時間。對于符號鏈接,gzip將會忽略它。

如果壓縮的文件名對其文件系統(tǒng)來說太長,則gzip將截斷它。Gzip試圖只截斷文件名中超過3個字符的部分。(部分由點分隔。)如果名稱僅由小部件組成,最長的部分將被截斷。例如,如果文件名限制為14個字符,則“gzip.msdos.exe”壓縮為“gzi.msd.exe.gz”。在沒有文件名長度限制的系統(tǒng)中,名稱不會被截斷。

默認情況下,gzip將原始文件名和時間戳保存在壓縮文件中。這些在使用“-N”選項解壓縮文件時使用。當壓縮文件名被截斷或文件傳輸后沒有保留時間戳時,這是非常有用的。壓縮文件可以使用“gzip –d”或“gunzip”或“zcat”恢復到它們的原始形式。如果保存在壓縮文件中的原始名稱不適合其文件系統(tǒng),則從原始文件中構(gòu)造新名稱以使其合法。

gunzip在其命令行中獲取一個文件列表,并替換其名稱以.gz、-z、-z、_z或.z結(jié)尾的每個文件,該文件以正確的魔術(shù)號開頭,文件的未壓縮文件沒有原來的擴展名。gunzip還將特殊的擴展名.tgz和.taz分別識別為.tar.gz和.tar.z的縮寫。壓縮時,gzip在必要時使用.tgz擴展名,而不是截斷擴展名為.tar的文件。

gunzip目前可以解壓縮由gzip,zip,compress-H或Pack創(chuàng)建的文件.輸入格式的檢測是自動的。當使用前兩種格式時,gunzip檢查32位CRC。對于包,槍拉鏈檢查未壓縮長度。標準壓縮格式的設計不是為了允許一致性檢查。然而,gunzip有時能夠檢測到一個壞的.z文件。如果在解壓縮.z文件時出現(xiàn)錯誤,請不要僅僅因為標準解壓縮不抱怨而認為.Z文件是正確的。這通常意味著標準解壓縮不檢查其輸入,并愉快地生成垃圾輸出。上海合作組織壓縮-H格式(lzh壓縮方法)不包括一個CRC,但也允許一些一致性檢查。

由zip創(chuàng)建的文件只有在使用“通縮”方法壓縮單個成員的情況下才能被gzip解壓縮。此特性僅用于幫助將tar.zip文件轉(zhuǎn)換為tar.gz格式。要使用單個成員提取zip文件,可以使用諸如“gunzip  <  foo.zip”或“gunzip  –S  .zip  foo.zip”之類的命令。要提取包含多個成員的zip文件,請使用解壓縮而不是gunzip。

Zcat和“gunzip  –c”是一樣的。(在某些系統(tǒng)上,可以將zcat安裝為gzcat,以保留原始鏈接以進行壓縮。)zcat解壓縮命令行上的文件列表或其標準輸入,并將未壓縮的數(shù)據(jù)寫入標準輸出。無論是否有.gz后綴,zcat都會解壓縮具有正確魔術(shù)號的文件。

Gzip使用用于zip和PKZIP的Lempel-Ziv算法。獲得的壓縮量取決于輸入的大小和常用子字符串的分布。通常,像源代碼或英語這樣的文本會減少60-70%.壓縮通常比LZW(用于壓縮)、Huffman編碼(用于Pack)或自適應Huffman編碼(緊湊)要好得多。

壓縮總是被執(zhí)行,即使壓縮文件比原始文件稍大。最壞的情況是gzip文件頭的幾個字節(jié),加上每32K塊5個字節(jié),或者大文件的擴展率為0.015%。注意,使用過的磁盤塊的實際數(shù)量幾乎從未增加。gzip在壓縮或解壓縮時保留文件的模式、所有權(quán)和時間戳。

此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法

gzip [ -acdfhlLnNrtvV19 ]  [-S suffix]  [ name ... ] 

 

2、選項列表

選項

說明

-h | --help

幫助信息

-V | --version

顯示命令版本信息

-a | --ascii

文本模式,只適用于某些系統(tǒng)

-c | --stdout | --to-stdout

將解壓文件寫到標準輸出,源文件不變。如果有多個輸入文件,則輸出由一系列獨立壓縮的成員組成。為了獲得更好的壓縮,在壓縮所有輸入文件之前先將它們連接起來。

-d | --decompress | --uncompress

解壓

-f | --force

強制執(zhí)行

-l | --list

對于每一個壓縮的文件,列出壓縮文件大小、解壓大小、壓縮比列、壓縮前的文件名字

-L | --license

列出gzip的許可證

-n | --no-name

壓縮文件的時候,不保留原始文件名字和時間屬性

-N | --name

壓縮的時候,保留原始文件和時間屬性

-q | --quite

跳過所有的警告信息

-r | --recursive

遞歸壓縮子目錄

-S |.suf | --suffix | .suf

指定壓縮文件后綴。壓縮時,使用后綴.suf代替.gz??梢蕴峁┤魏畏强蘸缶Y,但應避免使用.z和.gz以外的后綴,以避免文件傳輸?shù)狡渌到y(tǒng)時出現(xiàn)混淆。

-t | --test

測試

-v | --verbose

顯示執(zhí)行過程

-num | --fast | --best

使用指定的數(shù)字num調(diào)整壓縮速度,其中-1或--fast表示最快的壓縮方法(較小的壓縮)和-9或--best表示最慢的壓縮方法(最佳壓縮)。默認的壓縮級別是-6(也就是說,以犧牲速度為代價傾向于高壓縮)。

 

3、環(huán)境變量

環(huán)境變量GZIP可以保存gzip的一組默認選項。這些選項首先被解釋,可以被顯式命令行參數(shù)覆蓋。例如

for sh:    GZIP="-8v --name"; export GZIP

for csh:   setenv GZIP "-8v --name"

for MSDOS: set GZIP=-8v --name

在VAX/VMS上,環(huán)境變量的名稱為GZIP_OPT,以避免與用于調(diào)用程序的符號設置沖突。

4、診斷信息

退出狀態(tài)通常為0;如果發(fā)生錯誤,退出狀態(tài)為1。如果發(fā)生警告,退出狀態(tài)為2。

Usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]

在命令行上指定了無效選項

file: not in gzip format

指定給gunzip的文件尚未壓縮。

file: Corrupt input. Use zcat to recover some data.

壓縮文件已損壞。

file: compressed with xx bits, can only handle yy bits

gzip重新壓縮文件,壓縮更好,內(nèi)存更少。

file: already has .gz suffix -- no change

假定該文件已被壓縮。重命名該文件,然后再試一次。

file already exists; do you wish to overwrite (y or n)?

如果希望替換輸出文件,請響應“y”;如果不希望替換輸出文件,則響應“n”

gunzip: corrupt input

檢測到SIGSEGV違規(guī),這通常意味著輸入文件已損壞。

xx.x% Percentage of the input saved by compression.

只與-v-l有關。

-- not a regular file or directory: ignored

當輸入文件不是常規(guī)文件或目錄(例如符號鏈接、套接字、FIFO、設備文件)時,它將保持不變。

-- has xx other links: unchanged

輸入文件有鏈接;它保持不變。有關更多信息,請參見ln(1)。使用-f標志強制壓縮多鏈接文件。

5、一些先進用法

可以連接多個壓縮文件。在這種情況下,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

如果希望創(chuàng)建一個包含多個成員的單個歸檔文件,以便以后可以獨立提取成員,請使用一個歸檔程序(如tar或zip)。GNUtar支持-z選項來透明地調(diào)用gzip。gzip是作為tar的補充,而不是替代。

6、實例

1)壓縮文件

[root@localhost weijie]# gzip 1.c              //壓縮

[root@localhost weijie]# ls                     //壓縮之后,源文件被刪除了

11.c  1.c.gz  2.c  3.c  4.c  5.c  6.c  foo

2)解壓

[root@localhost weijie]# gzip -ld 1.c.gz       //解壓,并顯示詳細過程

         compressed        uncompressed  ratio uncompressed_name

                 70                  53   9.4% 1.c

3)將兩個文件壓縮到一個文件中

[root@localhost weijie]# cat 1.c 2.c                   //輸出兩個文件的內(nèi)容

hello world, 

i am david. 

i love linux, 

love code.

123

23

212

[root@localhost weijie]# gzip –c 1.c > foo.gz        //1.c壓縮到foo

[root@localhost weijie]# gzip –c 2.c >> foo.gz       //2.c壓縮到foo

[root@localhost weijie]# gzip -d foo.gz               //解壓foo

[root@localhost weijie]# cat foo                       //顯示foo的內(nèi)容

hello world, 

i am david. 

i love linux, 

love code.

123

23

212

“Linux基礎命令gzip的用法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI