Liunx解压缩命令参数详解


一、Linux常用的压缩及解压缩命令如表2-5所示


常用命令

简要中文说明

程序所在目录

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



二、 一下是各解压缩命令及参数详细解释

1、gzip  [-操作选项] [文件名]    

用来将文件、文件夹压缩成  .gz  的压缩文件

 操作选项参数解释:(各选项可以做相应的结合使用)

       -v 压缩过程当中显示进度
 
       -r  将子目录中的文件全部压缩
 
       -d 解压.gz文件
 
       -9  最长的时间压缩最小的文件
 
       -1  与 -9 相反

 

注意事项:


 1) 、gzip压缩命令:不能对目录进行压缩,只能对文件或子目录中的文件进行压缩:

gzip   text.txt        // 对文件text.txt文件进行压缩,生成text.txt.gz
 
gzip -v  text.txt     // 对文件text.txt文件进行压缩,生成text.txt.gz。其中-v显示压缩过程
 
gzip -v  *.txt        // 在但前目录下将所有的以后缀名为txt的压缩,使每个后缀为txt的文件全变成 后缀为txt.gz,支持通配符
 
gzip -vr  text        //将text目录中的所有文件压缩成后缀为.gz ; 必须带个r

 2)、 gzip解压缩命令(必须跟d  [decompression首字母,解压的意思]):

gzip -d  text.txt.gz    // 对文件text.txt.gz文件进行解压缩,生成text.txt  加 v 显示解压进度 如 gzip -vd 文件名
 
gzip -rd  text          //将text目录中的所有文件后缀为.gz的解压 ; 必须带个r 


3)、 gzip  [选项]  多个文件以空格隔开

 

如果您看到 .gz, .tar.gz 的文件,都是 gzip 程序压缩的杰作。

        gzip 是 GNU 组织开发的一种压缩程序,跟 Windows 上的 ZIP 不太一样(稍后会介绍一个一样的)。

我们先介绍压缩的方法。当我们有一个文件叫做 big1.bmp,由于点阵图文件通常都很大,要用 gzip 压缩,命令要怎么下呢?

最简单的可以这样:

gzip big1.bmp

但是如果您希望它压出“最小的文件”,那么就加一个 -9 选项:

gzip -9 big1.bmp

当然,“最小的文件”的代价,就是花最久的时间压缩,如果您希望它在最快时间压缩好,而不计较压缩的比例,那就相反,加一个 -1 (注意,是数字,不是小写英文l)选项:

gzip -1 big1.bmp

而如果您没有加 -1也没有加 -9,它的默认相当于 -6。

另外常用的选项还有:

  l -v 压缩过程当中显示进度。

  l -r 将子目录中的文件全部压缩。

至于它还有解压缩的选项,我们刻意将它挪到下一个命令中gunzip 再说明。

 

2、gunzip [-选项] [文件名.gz] 

用来将 .gz 压缩文件解压

gunzip 命令与 gzip 命令相对,专门把 gzip 压缩的 .gz 文件解压缩。如果您有已经压缩过的文件,例如 big1.gz,这时就可以用解压缩:

  gunzip big1.gz

这个命令也可以用 gzip 自己来完成,效果完全一样:

  gzip -d big1.gz


       其实在有些版本的Linux 上,gunzip是去调用 gzip,顺便帮您加上个 -d 选项罢了(用链接文件做的)!但是有些版本不是,是一个真的程序。不过无论 gunzip到底是一个实在的程序,还是仅是一个连接,都不重要了。因为 gzip 这个程序,本身可以负责压缩,也可以解压缩,一物两用。(不见得每种压缩和解压缩程序都是这样。)所以,如果您记得 -d 选项,就可以根本不用记 gunzip 这个命令了。

  gunzip甚至还可以去解其他压缩程序如 Compress 或 ZIP 压缩出来的文件。不过我们不建议您这样做,这样会让您自己很乱。而且它自己也承认,用它来解 zip 的文件并不是每一种情形都能完成。所以既然如此,何必这样麻烦呢?哪一种工具就固定做什么用,不是比较有条理又好记吗?


gunzip 有几个选项较常使用:

  l -f 当解压时如果遇到有同名的文件存在,就直接覆盖,不必再询问。

  l -r 将子目录中的文件全部解压缩。

  l -v 解压缩过程当中显示进度。

同样,这些选项也可以再加在 gzip -d 上,效果一样。

 

3、tar [-选项] [打包文件名] [文件]

打包为 .tar 的打包文件或解开

  如果您真的认真试过 gzip,或者您有使用 DOS, Windows的 ARJ, ZIP 一类程序的经验的话,就会发觉 gzip 有一个致命的缺点:它仅能压缩一个文件。即使针对子目录压缩,它也是针对子目录里的个别文件压缩,并没有把它们压成紧紧的一“包”。

  于是在 Linux上,这个打“包”的任务习惯由 tar 程序来代劳。请注意,tar 并不是压缩程序,因为它打包之后的大小跟原来一样大。所以它不是压缩程序,而是打包程序。而我们习惯上会先打包,产生一个 .tar 文件,再把这个包裹拿去压缩。.tar.gz 的文件名就是这么来的。也有人觉的 .tar.gz 这样的名称太长了,其实浓缩为 .tgz,意思也是一样的。


tar 的选项高达53个。(您用 man tar看就知道了)但是实用上没有那么多,而且同样几个每天重复使用。因此我们直接举例:

  

tar -cf new1.tar my1*.doc  //把所有 my1*.doc 的文件打包成一个 new1.tar文件。其中,-c 是产生新文件;-f 是输出到默认的设备,您可以把它当做一定要加的选项就好

tar -rf new1.tar my2*.doc  //new1.tar 是一个已经存在的打包文件了。我们再把 my2*.doc 的所有文件也打包进去。-r 是再增加文件的意思。

tar -uf new1.tar my18.doc  //方才 my1*.doc 已经打包进去了,但是其中的 my18.doc 后来又做了更改,我们把新改过的文件再重新打包进去,-u 是更新的意思。


  说到这里,如果您是用过 ARJ 程序的人可能会嫌它有点笨。因为 ARJ 程序类似上述3个过程,都只要用一个 a 选项就都可以操作了,不是吗?如果您没用过 ARJ,就继续往下看。

tar -tf new1.tar   //列出来 new1.tar 中有哪些文件被打包在里面。-t 是列出的意思。这个选项很像 ARJ 程序的 l 选项

tar -xf new1.tar  //把 new1.tar打包文件中的全部文件解出来,-x 是解开

tar -xf new1.tar my2*.doc  //只把 new1.tar打包文件中的所有 my2*.doc 文件解出来,-x 是解开。这个选项很像 ARJ 程序的 x 选项

  您注意到了吗?它也与 ARJ 程序很像,自己就可以负责打包,也可以负责解开,无需另外一个解压的程序。而它与ARJ的差别再强调一次,就是没有压缩能力!

但是,我可以向 gzip 程序借!就像便利店虽然没有面包房,还是可以代卖面包!对消费者来说,还是一样的嘛。-z 选项就是这个秘密进货管道!

tar -zcf new1.tar.gz my1*.doc  //请注意这道命令与方才一道类似命令的不同之处。第一,加了 z 选项,它会向 gzip 借用压缩能力;第二,注意产生出来的文件名是 new1.tar.gz,两个过程,一次完成!

  如果您想配合 Compress 程序(后面会介绍),压缩出另一种 .tar.Z 文件,那么只要把 -z 选项改为 -Z 选项就可以。

tar -Zcf new1.tar.Z my1*.doc  //最后,我们再加一个选项-v,就是打包兼压缩或者解压的过程。因此,您最常看到的解压手续就是这样了(因为 Linux 上最常见的软件包///装文件就是 .tar.gz 文件了):

tar -zxvf onepackage.tar.gz  //如果是 .tgz 的文件名也是一样的,因为性质一样,只是文件名简单一点而已:

tar -zxvf onepackage.tgz  //这个 -zxvf 的选项几乎可以是固定的,值得您背下来的。而这种文件当初是怎么生成的呢?可能是这样(您也可以背起来,以后就方便自己制///造 .tar.gz 文件了):

tar -zcvf onepackage.tar.gz *.* 

或者 tar -zcvf onepackage.tgz *.*

 

4、compress [-选项] [文件名]

压缩成文件名为 .Z 的压缩文件

  compress 跟 gzip 很近似,是一个压缩兼解压缩工具。如果您看到 .Z 、.tar.Z 的文件,都是compress 程序压缩的杰作。

我们先介绍压缩的方法。假设我们有一个字形文件叫做 taipei24.pcf ,字形文件通常都很大,要用 compress 压缩,命令要怎么下呢?

最简单的是这样:

  compress taipei24.pcf

它就会产生一个 taipei24.pcf.Z 的压缩文件。

另外常用的选项还有:

  l -v 压缩过程当中显示进度和比例。

至于它还有解压缩的选项,我们刻意将它挪到下一个命令uncompress中再说明。

 

5、uncompress [-选项] [文件名.Z]

将 .Z 压缩文件解压

uncompress 命令与compress 命令相对,专门把 compress 压缩出的 .Z 文件解压缩。如果您有已经压缩过的文件,例如 one.Z,这时就可以用

  uncompress one.Z

也可以用 compress 自己来完成,效果完全一样:

  compress -d one.Z

目前大部分版本的Linux中,uncompress其实只是去调用 compress,顺便帮您加上个 -d 选项罢了(用链接文件做的),并不是一个真的程序。

由于 compress 这个程序本身可以负责压缩,也可以解压缩,一物两用。(不见得每种压缩和解压缩程序都是这样。)所以,如果您记得 -d 选项,那就可以根本不用记 uncompress命令了。

  uncompress 一般会用到的选项大概就一个:

  -v 解压缩过程当中显示进度。

同样,这些选项也可以再加在 compress -d 上,效果一样。

 

6、zip [-选项] [文件名.zip] [文件名]

打包并压缩成文件名为 .zip 的文件

  zip与gzip虽然只差一个字母,但是用法差多了。

        zip 所使用的格式其实与 DOS 和 Windows 上的 .zip 是完全一样的!也就是说,它无需经过打包和压缩两道手续,就可以产生兼有两种效用的“压缩文件包”。而且,如果使用这种格式的话,就可以和 .bmp, .jpg, .gif 等文件一样,自由地通行于 Windows 和 Linux 之间,多方便啊!例如,可以在 Windows中用WinZip 程序解开,或者用WinZip 压成 .zip 直接给 Linux 用。

  既然这么好,为什么大家不常用它?不要问我,我也不知道。电脑的世界里常常存在一种怪现象,好的东西不见得大家都用,大家都在用的往往并不是最佳的选择,或者只是听前辈这样用,他就跟着这样用。

  总之,如果您认为大家没在用的东西,就是不好的,那很可能是错。到最后,找人来分析为什么用某某那样东西?优点为何?“普遍”!居然也可成为优点之一,奇怪!


zip 打包兼压缩的命令像是这样下达的(它高达36个选项,但是相信下面这些应该够您用了):


zip new1.zip my1*.doc  //把所有 my1*.doc 的文件打包成一个 new1.zip文件。new1.zip 可以省略扩展名简写成 new1,它会自行默认 .zip 的扩展名。

zip -d new1.zip my18.doc  //如果当初my18.doc 是压缩在 new1.zip 中的一个文件,现在这条命令把它从压缩文件中抽走并删掉。-d 是删除的意思。

zip -g new1.zip my32.doc  //如果当初并没有把 my32.doc 压在 new1.zip 里面,现在把它加进去。-g 选项是增加而不要重新产生的意思(grow,长大,这个字母用得比较 //特别一点)

zip -u new1.zip my2*.doc   //如果当初 my2*.doc都已经压缩进 new1.zip 里面了,但是后来 my2*.doc中有几个文件有更改,又不想去找出到底是哪些文件更改了,这条命 ///令请系统自行帮助检查,更改过的才更新到压缩,否则就不必动。-u 是更新的意思。

zip -r new2.zip mydir    //如果 mydir 是一个目录名称,它会把整个目录的所有文件压缩成一个 new2.zip 文件。-r 选项是压缩子目录的意思。


那么解压缩的选项呢?抱歉,zip只能压缩,没有兼职解压缩的功能。解压缩请用unzip

 

7、unzip [-选项] [文件名.zip] [文件名]

将 .zip 压缩文件解压

  zip 和 unzip这组程序真正是一对搭档。zip 程序本身没有解压能力,一定要用unzip 程序来解压才行。unzip 是一个真正的程序,并不是 zip 的替身。

  因为 zip 程序会把一大堆文件压缩在一起,而解压时,有可能这一大堆文件的其中一些已经存在了(如果都不存在,当然很简单),于是产生了一些错综复杂、纠葛缠绵的解 压情况,您要有心里准备!例如,我们要把这些已经存在的文件通通无条件地覆盖过去呢,还是只有把比它新才覆盖过去?或者无论新旧,只有不存在的文件才压缩 加上去,还是每次遇到已有文件存在时,都要询问我,由我来决定?所谓已经存在,是用 UNIX 的判别法则,还是 DOS 的判别法则?也就是说,如果压缩文件里有一个大写的MYFILE,它和现有的小写myfile算同名文件,还是算不同名文件?

  还有,因为 zip可以把整个子目录压缩起来,那么解压缩的时候,又会遇到无可避免的抉择情况:您是要解压回与原来目录一样的位置,还是在现有目录上解压并产生目录?

  因为上面情况太复杂了,所以我们只列一道范例命令,然后其他都直接列出选项了:

  

unzip onepackage.zip a*.doc

  把 onepackage.zip 里面凡是 a*.doc 的都解压出来。如果 a*.doc文件名没有输入,就会把onepackage.zip 全部解压。但是最好配合下面的选项,决定您遇到现有相同文件名时的8个处理决策:

 

 -f   只解压更新已存在的文件,其他文件不解压(但更新时会一一询问)。
 -u   解压更新已存在的文件,并把不存在的文件也解压(但更新时会一一询问)。
 -fo  只解压更新已存在的文件,其他文件不解压(但不询问直接覆盖更新)。
 -uo  解压更新已存在的文件,并把不存在的文件也解压(但不询问直接覆盖更新)。
 -o   不论文件是新是旧,一律从压缩文件中解压,并直接覆盖。
 -n   只把不存在的文件解压,已存在的文件则无论新旧一律保留原状。
 -C   不计较大小写的不同,视为相同文件名(默认是视为不同)。
 -L   解压时一律将文件名转为小写。

  还有,遇到有子目录时的处理决策:

  -j   不管原来压缩时的目录为何,均全部解开于现行目录。
  -d   后面接一个目录名称。可以指定解压到该目录。

  一个其他的常用选项:

  -l   只列出压缩包里面有哪些文件,而不真的解开压缩。


8、bzip2 [-选项] [文件名]

压缩成文件名为 .bz2 的压缩文件

  bzip2 是新一代的压缩程序,但是仍然改不掉 gzip 的老毛病:只能压缩一个文件,要打包还得靠 tar帮忙。所以您还是会看到 tar.bz2 这种文件。

  bzip2 引用的是一套称为Burrows-Wheeler block sorting的文字压缩演算法,以及有名的霍夫曼编码法(Huffman coding),所以名称为B字开头。这种压缩法在压缩的过程会用到称为block的内存单位,您可以自定义这个block内存单位的大小,block用 得越大,压缩的效果越好,当然用的内存就越多。我们可以给定1~9的选项,它所用的内存算法如下。

压缩时:
  内存用量=400KB+(block 大小×7)
  block 大小=选项×100KB

解压时:
  内存用量=400KB+(block 大小×4)

解压时的block 大小已经在压缩时决定了,所以不用选项决定。所以,压缩时可以这样下达命令:
  bzip2 -9 -k myfile.doc

  把 myfile.doc 命令压缩成最小的文件,-9选项其实是默认的。它会产生myfile.doc.bz2 文件。加上 -k 选项表示虽然产生了 myfile.doc.bz2,但仍要保留 myfile.doc 原文件,这就是 gzip 程序所做不到的了。

 

9、bunzip2 [-选项] [文件名.bz2]

将 .bz2 压缩文件解压

  bunzip2 命令与 bzip 命令相对,专门把 bzip 压缩出的 .bz2 文件解压缩。如果您有已经压缩过的文件,例如 myfile.bz2,这时就可以用:

  bunzip2 myfile.bz2

也可以用 bzip2 自己来完成,效果完全一样:

  bzip2 -d myfile.bz2

  目前大部分版本的Linux中,bunzip2其实只是去调用bzip2,顺便帮您加上个 -d 选项罢了(用链接文件做的),并不是一个真的程序。

由于bzip2本身可以负责压缩,也可以解压缩,一物两用(不见得每种压缩和解压缩程序都是这样。)。所以,如果您记得 -d 选项,那就可以根本不用记 bunzip2 这个命令了。

但记得我们在 bzip2 命令时提过,bunzip2/bzip2程序解压时所需的内存为:

  内存用量=400KB+(block 大小×4)

因为解压时的block 大小已经在压缩时决定了,所以不用选项决定。但是,我们有改变那个“×4”倍的机会。如果我们在解压时加了 -s 的选项,它会这样去计算:

  内存用量=400KB+(block大小×2.5)

很显然,-s 是 small的意思,它可以节省一半内存用量。


表2-6所示为bzip2 和 bunzip2 压缩和解压缩时的内存用量总表:

压缩时的选项

压缩时用量

解压时用量

加了 -s 选项解压时用量

-1

1 100 KB

500 KB

350 KB

-2

1 800 KB

900 KB

600 KB

-3

2 500 KB

1 300 KB

850 KB

-4

3 200 KB

1 700 KB

1 100 KB

-5

3 900 KB

2 100 KB

1 350 KB

-6

4 600 KB

2 500 KB

1 600 KB

-7

5 400 KB

2 900 KB

1 850 KB

-8

6 000 KB

3 300 KB

2 100 KB

-9

6 700 KB

3 700 KB

2 350 KB


  另外,bunzip2一般常用到的选项如下:

-v 解压缩过程当中显示进度。

-k 解压缩,但保留原压缩文件。

同样,这些选项也可以再加在 bzip2 -d 上,效果一样。

 

 

-----------------------tar------------------------------

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个:

 -c: 建立压缩档案 

 -x: 解压

 -t: 查看内容

 -r: 向压缩归档文件末尾追加文件

 -u: 更新原压缩包中的文件

 下面的参数是根据需要在压缩或解压档案时可选的:

 -z: 有gzip属性的

 -j: 有bz2属性的

 -Z: 有compress属性的

 -v: 显示所有过程 

 -O: 将文件解开到标准输出(大写的o)

下面的参数-f是必须的

 -f: 使用档案名字 ,切记,这个参数是最后一个参数,后面只能接档案名。

示例:

# tar -cf all.tar *.jpg 
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

# tar -rf all.tar *.gif 
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 

# tar -uf all.tar logo.gif 
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 

# tar -tf all.tar 
这条命令是列出all.tar包中所有文件,-t是列出文件的意思 

# tar -xf all.tar 
这条命令是解出all.tar包中所有文件,-x是解开的意思 

 

压缩

tar –cvf jpg.tar *.jpg // 将目录里所有 jpg 文件打包成 tar.j pg
 
tar –czf jpg.tar.gz *.jpg   // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为jpg.tar.gz
 
tar –cjf jpg.tar.bz2 *.jpg // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2
 
tar –cZf jpg.tar.Z *.jpg   // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为 jpg.tar.Z
 
rar a jpg.rar *.jpg //rar 格式的压缩,需要先下载 rar for linux

zip jpg.zip *.jpg //zip 格式的压缩,需要先下载 zip for linux


解压

tar –xvf file.tar // 解压 tar 包
 
tar -xzvf file.tar.gz // 解压 tar.gz
 
tar -xjvf file.tar.bz2   // 解压 tar.bz2
 
tar –xZvf file.tar.Z   // 解压 tar.Z
 
unrar e file.rar // 解压 rar
 
unzip file.zip // 解压 zip


总结

 

1、*.tar 用 tar –xvf 解压

 

2、*.gz 用 gzip -d 或者 gunzip 解压

 

3、*.tar.gz 和 *.tgz 用 tar –xzf 解压

 

4、*.bz2 用 bzip2 -d 或者用 bunzip2 解压

 

5、*.tar.bz2 用 tar –xjf 解压

 

6、*.Z 用 uncompress 解压

 

7、*.tar.Z 用 tar –xZf 解压

 

8、*.rar 用 unrar e 解压


9、*.zip 用 unzip 解压


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值