Linux常用的压缩及解压缩命令.docx
- 文档编号:10564881
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:12
- 大小:21.76KB
Linux常用的压缩及解压缩命令.docx
《Linux常用的压缩及解压缩命令.docx》由会员分享,可在线阅读,更多相关《Linux常用的压缩及解压缩命令.docx(12页珍藏版)》请在冰豆网上搜索。
Linux常用的压缩及解压缩命令
Linux常用的压缩及解压缩命令
关键词:
gzip tar compress zip bzip2
Linux常用的压缩及解压缩命令如表1所示。
表1Linux常用的压缩及解压缩命令说明
常用命令
简要中文说明
程序所在目录
gzip
压缩成文件名为.gz的压缩文件(也可用–d选项变成解压)
/bin
gunzip
将.gz压缩文件解压(可用gzip加–d参数代替)
/bin
tar
打包为.tar的打包文件或解开(也可配合–z选项呼叫gzip进行.gz文件的压缩或解压)
/bin
compress
压缩成文件名为.Z的压缩文件(也可用–d选项变成解压)
/usr/bin
uncompress
将.Z压缩文件解压(可用compress加–d选项代替)
/usr/bin
zip
打包并压缩成文件名为.zip的文件(本身没有解压能力,一定要用unzip来解压才行)
/usr/bin
unzip
将.zip文件解压
/usr/bin
bzip2
压缩成文件名为.bz2的压缩文件(也可用–d选项变成解压)
/bin
bunzip2
将.bz2压缩文件解压(可用bzip2加–d选项代替)
/bin
gzip[-选项][文件名]
压缩成文件名为.gz的压缩文件
如果您看到.gz,.tar.gz的文件,都是gzip程序压缩的杰作。
gzip是GNU组织开发的一种压缩程序,跟Windows上的ZIP不太一样(稍后会介绍一个一样的)。
我们先介绍压缩的方法。
当我们有一个文件叫做big1.bmp,由于点阵图文件通常都很大,要用gzip压缩,命令要怎么下呢?
最简单的可以这样:
gzipbig1.bmp
但是如果您希望它压出“最小的文件”,那么就加一个-9选项:
gzip-9big1.bmp
当然,“最小的文件”的代价,就是花最久的时间压缩,如果您希望它在最快时间压缩好,而不计较压缩的比例,那就相反,加一个-1(注意,是数字,不是小写英文l)选项:
gzip-1big1.bmp
而如果您没有加-1也没有加-9,它的默认相当于-6。
另外常用的选项还有:
l-v压缩过程当中显示进度。
l-r将子目录中的文件全部压缩。
至于它还有解压缩的选项,我们刻意将它挪到下一个命令中gunzip再说明。
------------------------------------------------------------------------------------------------------------
gunzip[-选项][文件名.gz]
将.gz压缩文件解压
gunzip命令与gzip命令相对,专门把gzip压缩的.gz文件解压缩。
如果您有已经压缩过的文件,例如big1.gz,这时就可以用解压缩:
gunzipbig1.gz
这个命令也可以用gzip自己来完成,效果完全一样:
gzip-dbig1.gz
其实在有些版本的Linux上,gunzip是去调用gzip,顺便帮您加上个-d选项罢了(用链接文件做的)!
但是有些版本不是,是一个真的程序。
不过无论gunzip到底是一个实在的程序,还是仅是一个连接,都不重要了。
因为gzip这个程序,本身可以负责压缩,也可以解压缩,一物两用。
(不见得每种压缩和解压缩程序都是这样。
)所以,如果您记得-d选项,就可以根本不用记gunzip这个命令了。
gunzip甚至还可以去解其他压缩程序如Compress或ZIP压缩出来的文件。
不过我们不建议您这样做,这样会让您自己很乱。
而且它自己也承认,用它来解zip的文件并不是每一种情形都能完成。
所以既然如此,何必这样麻烦呢?
哪一种工具就固定做什么用,不是比较有条理又好记吗?
gunzip有几个选项较常使用:
l-f当解压时如果遇到有同名的文件存在,就直接覆盖,不必再询问。
l-r将子目录中的文件全部解压缩。
l-v解压缩过程当中显示进度。
同样,这些选项也可以再加在gzip-d上,效果一样。
------------------------------------------------------------------------------------------------------------
tar[-选项][打包文件名][文件]
打包为.tar的打包文件或解开
如果您真的认真试过gzip,或者您有使用DOS,Windows的ARJ,ZIP一类程序的经验的话,就会发觉gzip有一个致命的缺点:
它仅能压缩一个文件。
即使针对子目录压缩,它也是针对子目录里的个别文件压缩,并没有把它们压成紧紧的一“包”。
于是在Linux上,这个打“包”的任务习惯由tar程序来代劳。
请注意,tar并不是压缩程序,因为它打包之后的大小跟原来一样大。
所以它不是压缩程序,而是打包程序。
而我们习惯上会先打包,产生一个.tar文件,再把这个包裹拿去压缩。
.tar.gz的文件名就是这么来的。
也有人觉的.tar.gz这样的名称太长了,其实浓缩为.tgz,意思也是一样的。
tar的选项高达53个。
(您用mantar看就知道了)但是实用上没有那么多,而且同样几个每天重复使用。
因此我们直接举例:
tar-cfnew1.tarmy1*.doc
把所有my1*.doc的文件打包成一个new1.tar文件。
其中,-c是产生新文件;-f是输出到默认的设备,您可以把它当做一定要加的选项就好。
tar-rfnew1.tarmy2*.doc
new1.tar是一个已经存在的打包文件了。
我们再把my2*.doc的所有文件也打包进去。
-r是再增加文件的意思。
tar-ufnew1.tarmy18.doc
方才my1*.doc已经打包进去了,但是其中的my18.doc后来又做了更改,我们把新改过的文件再重新打包进去,-u是更新的意思。
说到这里,如果您是用过ARJ程序的人可能会嫌它有点笨。
因为ARJ程序类似上述3个过程,都只要用一个a选项就都可以操作了,不是吗?
如果您没用过ARJ,就继续往下看。
tar-tfnew1.tar
列出来new1.tar中有哪些文件被打包在里面。
-t是列出的意思。
这个选项很像ARJ程序的l选项。
tar-xfnew1.tar
把new1.tar打包文件中的全部文件解出来,-x是解开。
tar-xfnew1.tarmy2*.doc
只把new1.tar打包文件中的所有my2*.doc文件解出来,-x是解开。
这个选项很像ARJ程序的x选项。
您注意到了吗?
它也与ARJ程序很像,自己就可以负责打包,也可以负责解开,无需另外一个解压的程序。
而它与ARJ的差别再强调一次,就是没有压缩能力!
但是,我可以向gzip程序借!
就像便利店虽然没有面包房,还是可以代卖面包!
对消费者来说,还是一样的嘛。
-z选项就是这个秘密进货管道!
tar-zcfnew1.tar.gzmy1*.doc
请注意这道命令与方才一道类似命令的不同之处。
第一,加了z选项,它会向gzip借用压缩能力;第二,注意产生出来的文件名是new1.tar.gz,两个过程,一次完成!
如果您想配合Compress程序(后面会介绍),压缩出另一种.tar.Z文件,那么只要把-z选项改为-Z选项就可以。
tar-Zcfnew1.tar.Zmy1*.doc
最后,我们再加一个选项-v,就是打包兼压缩或者解压的过程。
因此,您最常看到的解压手续就是这样了(因为Linux上最常见的软件包装文件就是.tar.gz文件了):
tar-zxvfonepackage.tar.gz
如果是.tgz的文件名也是一样的,因为性质一样,只是文件名简单一点而已:
tar-zxvfonepackage.tgz
这个-zxvf的选项几乎可以是固定的,值得您背下来的。
而这种文件当初是怎么生成的呢?
可能是这样(您也可以背起来,以后就方便自己制造.tar.gz文件了):
tar-zcvfonepackage.tar.gz*.*
或者
tar-zcvfonepackage.tgz*.*
------------------------------------------------------------------------------------------------------------
compress[-选项][文件名]
压缩成文件名为.Z的压缩文件
compress跟gzip很近似,是一个压缩兼解压缩工具。
如果您看到.Z、.tar.Z的文件,都是compress程序压缩的杰作。
我们先介绍压缩的方法。
假设我们有一个字形文件叫做taipei24.pcf,字形文件通常都很大,要用compress压缩,命令要怎么下呢?
最简单的是这样:
compresstaipei24.pcf
它就会产生一个taipei24.pcf.Z的压缩文件。
另外常用的选项还有:
l-v压缩过程当中显示进度和比例。
至于它还有解压缩的选项,我们刻意将它挪到下一个命令uncompress中再说明。
练习:
(1)用gzip和用compress压缩同样一个文件,哪一种的压缩效果比较好?
(2)要把所有a*.pcf的文件经过tar命令打包,再经过compress压缩而变成一个afont.tar.Z的文件,需要哪些命令?
uncompress[-选项][文件名.Z]
将.Z压缩文件解压
uncompress命令与compress命令相对,专门把compress压缩出的.Z文件解压缩。
如果您有已经压缩过的文件,例如one.Z,这时就可以用
uncompressone.Z
也可以用compress自己来完成,效果完全一样:
compress-done.Z
目前大部分版本的Linux中,uncompress其实只是去调用compress,顺便帮您加上个-d选项罢了(用链接文件做的),并不是一个真的程序。
由于compress这个程序本身可以负责压缩,也可以解压缩,一物两用。
(不见得每种压缩和解压缩程序都是这样。
)所以,如果您记得-d选项,那就可以根本不用记uncompress命令了。
uncompress一般会用到的选项大概就一个:
-v解压缩过程当中显示进度。
同样,这些选项也可以再加在compress-d上,效果一样。
------------------------------------------------------------------------------------------------------------
zip[-选项][文件名.zip][文件名]
打包并压缩成文件名为.zip的文件
zip与gzip虽然只差一个字母,但是用法差多了。
zip所使用的格式其实与DOS和Windows上的.zip是完全一样的!
也就是说,它无需经过打包和压缩两道手续,就可以产生兼有两种效用的“压缩文件包”。
而且,如果使用这种格式的话,就可以和.bmp,.jpg,.gif等文件一样,自由地通行于Windows和Linux之间,多方便啊!
例如,可以在Windows中用WinZip程序解开,或者用WinZip压成.zip直接给Linux用。
既然这么好,为什么大家不常用它?
不要问我,我也不知道。
电脑的世界里常常存在一种怪现象,好的东西不见得大家都用,大家都在用的往往并不是最佳的选择,或者只是听前辈这样用,他就跟着这样用。
总之,如果您认为大家没在用的东西,就是不好的,那很可能是错。
到最后,找人来分析为什么用某某那样东西?
优点为何?
“普遍”!
居然也可成为优点之一,奇怪!
zip打包兼压缩的命令像是这样下达的(它高达36个选项,但是相信下面这些应该够您用了):
zipnew1.zipmy1*.doc
把所有my1*.doc的文件打包成一个new1.zip文件。
new1.zip可以省略扩展名简写成new1,它会自行默认.zip的扩展名。
zip-dnew1.zipmy18.doc
如果当初my18.doc是压缩在new1.zip中的一个文件,现在这条命令把它从压缩文件中抽走并删掉。
-d是删除的意思。
zip-gnew1.zipmy32.doc
如果当初并没有把my32.doc压在new1.zip里面,现在把它加进去。
-g选项是增加而不要重新产生的意思(grow,长大,这个字母用得比较特别一点)。
zip-unew1.zipmy2*.doc
如果当初my2*.doc都已经压缩进new1.zip里面了,但是后来my2*.doc中有几个文件有更改,又不想去找出到底是哪些文件更改了,这条命令请系统自行帮助检查,更改过的才更新到压缩,否则就不必动。
-u是更新的意思。
zip-rnew2.zipmydir
如果mydir是一个目录名称,它会把整个目录的所有文件压缩成一个new2.zip文件。
-r选项是压缩子目录的意思。
那么解压缩的选项呢?
抱歉,zip只能压缩,没有兼职解压缩的功能。
解压缩请用unzip。
------------------------------------------------------------------------------------------------------------
unzip[-选项][文件名.zip][文件名]
将.zip压缩文件解压
zip和unzip这组程序真正是一对搭档。
zip程序本身没有解压能力,一定要用unzip程序来解压才行。
unzip是一个真正的程序,并不是zip的替身。
因为zip程序会把一大堆文件压缩在一起,而解压时,有可能这一大堆文件的其中一些已经存在了(如果都不存在,当然很简单),于是产生了一些错综复杂、纠葛缠绵的解压情况,您要有心里准备!
例如,我们要把这些已经存在的文件通通无条件地覆盖过去呢,还是只有把比它新才覆盖过去?
或者无论新旧,只有不存在的文件才压缩加上去,还是每次遇到已有文件存在时,都要询问我,由我来决定?
所谓已经存在,是用UNIX的判别法则,还是DOS的判别法则?
也就是说,如果压缩文件里有一个大写的MYFILE,它和现有的小写myfile算同名文件,还是算不同名文件?
还有,因为zip可以把整个子目录压缩起来,那么解压缩的时候,又会遇到无可避免的抉择情况:
您是要解压回与原来目录一样的位置,还是在现有目录上解压并产生目录?
因为上面情况太复杂了,所以我们只列一道范例命令,然后其他都直接列出选项了:
unziponepackage.zipa*.doc
把onepackage.zip里面凡是a*.doc的都解压出来。
如果a*.doc文件名没有输入,就会把onepackage.zip全部解压。
但是最好配合下面的选项,决定您遇到现有相同文件名时的8个处理决策:
-f只解压更新已存在的文件,其他文件不解压(但更新时会一一询问)。
-u解压更新已存在的文件,并把不存在的文件也解压(但更新时会一一询问)。
-fo只解压更新已存在的文件,其他文件不解压(但不询问直接覆盖更新)。
-uo解压更新已存在的文件,并把不存在的文件也解压(但不询问直接覆盖更新)。
-o不论文件是新是旧,一律从压缩文件中解压,并直接覆盖。
-n只把不存在的文件解压,已存在的文件则无论新旧一律保留原状。
-C不计较大小写的不同,视为相同文件名(默认是视为不同)。
-L解压时一律将文件名转为小写。
还有,遇到有子目录时的处理决策:
-j不管原来压缩时的目录为何,均全部解开于现行目录。
-d后面接一个目录名称。
可以指定解压到该目录。
一个其他的常用选项:
-l只列出压缩包里面有哪些文件,而不真的解开压缩。
------------------------------------------------------------------------------------------------------------
bzip2[-选项][文件名]
压缩成文件名为.bz2的压缩文件
bzip2是新一代的压缩程序,但是仍然改不掉gzip的老毛病:
只能压缩一个文件,要打包还得靠tar帮忙。
所以您还是会看到tar.bz2这种文件。
bzip2引用的是一套称为Burrows-Wheelerblocksorting的文字压缩演算法,以及有名的霍夫曼编码法(Huffmancoding),所以名称为B字开头。
这种压缩法在压缩的过程会用到称为block的内存单位,您可以自定义这个block内存单位的大小,block用得越大,压缩的效果越好,当然用的内存就越多。
我们可以给定1~9的选项,它所用的内存算法如下。
压缩时:
内存用量=400KB+(block大小×7)
block大小=选项×100KB
解压时:
内存用量=400KB+(block大小×4)
解压时的block大小已经在压缩时决定了,所以不用选项决定。
所以,压缩时可以这样下达命令:
bzip2-9-kmyfile.doc
把myfile.doc命令压缩成最小的文件,-9选项其实是默认的。
它会产生myfile.doc.bz2文件。
加上-k选项表示虽然产生了myfile.doc.bz2,但仍要保留myfile.doc原文件,这就是gzip程序所做不到的了。
------------------------------------------------------------------------------------------------------------
bunzip2[-选项][文件名.bz2]
将.bz2压缩文件解压
bunzip2命令与bzip命令相对,专门把bzip压缩出的.bz2文件解压缩。
如果您有已经压缩过的文件,例如myfile.bz2,这时就可以用:
bunzip2myfile.bz2
也可以用bzip2自己来完成,效果完全一样:
bzip2-dmyfile.bz2
目前大部分版本的Linux中,bunzip2其实只是去调用bzip2,顺便帮您加上个-d选项罢了(用链接文件做的),并不是一个真的程序。
由于bzip2本身可以负责压缩,也可以解压缩,一物两用(不见得每种压缩和解压缩程序都是这样。
)。
所以,如果您记得-d选项,那就可以根本不用记bunzip2这个命令了。
但记得我们在bzip2命令时提过,bunzip2/bzip2程序解压时所需的内存为:
内存用量=400KB+(block大小×4)
因为解压时的block大小已经在压缩时决定了,所以不用选项决定。
但是,我们有改变那个“×4”倍的机会。
如果我们在解压时加了-s的选项,它会这样去计算:
内存用量=400KB+(block大小×2.5)
很显然,-s是small的意思,它可以节省一半内存用量。
表2所示为bzip2和bunzip2压缩和解压缩时的内存用量总表。
表2内存用量总表
压缩时的选项
压缩时用量
解压时用量
加了-s选项解压时用量
-1
1100KB
500KB
350KB
-2
1800KB
900KB
600KB
-3
2500KB
1300KB
850KB
-4
3200KB
1700KB
1100KB
-5
3900KB
2100KB
1350KB
-6
4600KB
2500KB
1600KB
-7
5400KB
2900KB
1850KB
-8
6000KB
3300KB
2100KB
-9
6700KB
3700KB
2350KB
另外,bunzip2一般常用到的选项如下:
-v解压缩过程当中显示进度。
-k解压缩,但保留原压缩文件。
同样,这些选项也可以再加在bzip2-d上,效果一样。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 常用 压缩 解压缩 命令