在linux中,gzip命令用于對文件進行壓縮和解壓縮,通過此命令壓縮得到的新文件,其擴展名通常標記為“.gz”,使用語法為“gzip [選項] 源文件”。語法中的源文件,當進行壓縮操作時,指的是普通文件;當進行解壓縮操作時,指的是壓縮文件。gzip命令只能用來壓縮文件,不能壓縮目錄,即便指定了目錄,也只能壓縮目錄內(nèi)的所有文件。
程序員必備接口測試調(diào)試工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api設計、調(diào)試、文檔、自動化測試工具
后端、前端、測試,同時在線協(xié)作,內(nèi)容實時同步
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
gzip 是 Linux 系統(tǒng)中經(jīng)常用來對文件進行壓縮和解壓縮的命令,通過此命令壓縮得到的新文件,其擴展名通常標記為“.gz”。
再強調(diào)一下,gzip 命令只能用來壓縮文件,不能壓縮目錄,即便指定了目錄,也只能壓縮目錄內(nèi)的所有文件。
gzip 命令的基本格式如下:
[root@localhost ~]# gzip [選項] 源文件
命令中的源文件,當進行壓縮操作時,指的是普通文件;當進行解壓縮操作時,指的是壓縮文件。該命令常用的選項及含義如表 1 所示。
選項 | 含義 |
---|---|
-c | 將壓縮數(shù)據(jù)輸出到標準輸出中,并保留源文件。 |
-d | 對壓縮文件進行解壓縮。 |
-r | 遞歸壓縮指定目錄下以及子目錄下的所有文件。 |
-v | 對于每個壓縮和解壓縮的文件,顯示相應的文件名和壓縮比。 |
-l | 對每一個壓縮文件,顯示以下字段:
|
-數(shù)字 | 用于指定壓縮等級,-1 壓縮等級最低,壓縮比最差;-9 壓縮比最高。默認壓縮比是 -6。 |
【例 1】基本壓縮
gzip 壓縮命令非常簡單,甚至不需要指定壓縮之后的壓縮包名,只需指定源文件名即可。我們來試試:
[root@localhost ~]# gzip install.log #壓縮instal.log 文件 [root@localhost ~]# ls anaconda-ks.cfg install.log.gz install.log.syslog #壓縮文件生成,但是源文件也消失了
【例 2】保留源文件壓縮
在使用 gzip 命令壓縮文件時,源文件會消失,從而生成壓縮文件。這時有些人會有強迫癥,就逼問筆者:能不能在壓縮文件的時候,不讓源文件消失?好吧,也是可以的,不過很別扭。
[root@localhost ~]# gzip -c anaconda-ks.cfg >anaconda-ks.cfg.gz #使用-c選項,但是不讓壓縮數(shù)據(jù)輸出到屏幕上,而是重定向到壓縮文件中,這樣可以縮文件的同時不刪除源文件 [root@localhost ~]# ls anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog #可以看到壓縮文件和源文件都存在
【例 3】 壓縮目錄
我們可能會想當然地認為 gzip 命令可以壓縮目錄。 我們來試試:
[root@localhost ~]# mkdir test [root@localhost ~]# touch test/test1 [root@localhost ~]# touch test/test2 [root@localhost ~]# touch test/test3 #建立測試目錄,并在里面建立幾個測試文件 [root@localhost ~]# gzip -r test/ #壓縮目錄,并沒有報錯 [root@localhost ~]# ls anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog test #但是查看發(fā)現(xiàn)test目錄依然存在,并沒有變?yōu)閴嚎s文件 [root@localhost ~]# ls test/ testl .gz test2.gz test3.gz #原來gzip命令不會打包目錄,而是把目錄下所有的子文件分別壓縮
在 Linux 中,打包和壓縮是分開處理的。而 gzip 命令只會壓縮,不能打包,所以才會出現(xiàn)沒有打包目錄,而只把目錄下的文件進行壓縮的情況。
案例演示:
壓縮文件
[root@localhost ~]# ls //顯示當前目錄文件 a.c b.h d.cpp [root@localhost ~]# gzip * //壓縮目錄下的所有文件 [root@localhost ~]# ls //顯示當前目錄文件 a.c.gz b.h.gz d.cpp.gz [root@localhost ~]#
接范例1, 列出詳細的信息
gzip -dv * //解壓文件,并列出詳細信息
接范例1,顯示壓縮文件的信息
gzip -l *