2017-11-19 11:43:22 guohao_zhang 阅读数 153
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1208 人正在学习 去看看 王利涛

首先,总的来说,

解压
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 解压


详细:

tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-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.jpg
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 解压

2019-10-16 20:02:02 LOG_IN_ME 阅读数 75
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1208 人正在学习 去看看 王利涛

常见的打包/压缩格式

因为Linux 支援的压缩指令非常多,且不同的指令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件。所以,当你下载某个压缩文件时,自然就需要知道该文件是由哪种压缩指令所创建出来的,好用来对照着解压。

*.Z  compress程序压缩的文件;
*.zip  zip程序压缩的文件;
*.gz  gzip程序压缩的文件;
*.bz2  bzip2程序压缩的文件;
*.xz  xz程序压缩的文件;
*.tar  tar程序打包的文件,并没有压缩过;
*.tar.gz  tar程序打包的文件,其中并且经过gzip 的压缩
*.tar.bz2  tar程序打包的文件,其中并且经过bzip2 的压缩
*.tar.xz  tar程序打包的文件,其中并且经过xz 的压缩

Linux上常见的压缩指令就是gzip, bzip2以及最新的xz ,至于compress已经退流行了。为了支持windows常见的zip,其实Linux也早就有zip指令了。不过,这些指令通常仅能针对一个文件来压缩与解压缩。

虽然gzip, bzip2, xz也能够针对目录(文件夹)来进行压缩,不过,这几个指令对目录的压缩指的是『将目录内的所有文件"分别"进行压缩』的动作!而不像在Windows的系统,可以使用类似WinRAR这一类的压缩软件来将好多资料『包成一个文件』的样式。

这种将多个文件或目录包成一个大档案的指令功能,我们可以称呼他是一种『打包指令』。tar 可以将多个目录或档案打包成一个大档案,同时还可以透过gzip/bzip2/xz 的支援,将该档案同时进行压缩!更有趣的是,由于tar 的使用太广泛了,目前Windows 的WinRAR 也支援.tar.gz 档名的解压缩。(单纯的tar功能仅是打包而已,即将很多文件集结成为一个文件,事实上,他并没有提供压缩的功能,后来,GUN计划中,将整个tar与压缩的功能结合在一起,如此一来提供使用者更方便并且更强大的压缩与打包功能。)

常见的压缩指令

gzip, zcat/zmore/zless/zgrep

gzip 可以说是应用度最广的压缩指令了!目前gzip 可以解开compress, zip 与gzip 等软件所压缩的档案。gzip 所创建的压缩文件拓展名为*.gz 。

[dmtsai@study ~]$ gzip [-cdtv#] 文件名
[dmtsai@study ~]$ zcat 文件名.gz 
选项与参数:
-c :将压缩的资料输出到萤幕上,可透过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v :可以显示出原文件/压缩文件的压缩比等信息;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是-6

当你使用gzip进行压缩时,在预设的状态下原本的文件会被压缩成为.gz的文件名,原文件就不再存在了。这点与一般习惯使用windows做压缩的朋友所熟悉的情况不同!要注意!要注意!此外,使用gzip压缩的档案在Windows系统中,竟然可以被WinRAR/7zip这个软件解压缩!

cat/more/less 可以使用不同的方式来读取纯文本文件,那zcat/zmore/zless 则可以对应于cat/more/less 的方式来读取纯文本文件被压缩后的压缩文件!由于gzip 这个压缩指令主要想要用来取代compress 的,所以不但compress 的压缩文件可以使用 gzip 来解开,同时zcat 这个指令可以同时读取compress 与gzip 的压缩文件。

另外,如果你还想要从文本文件当中找资料的话,可以透过zgrep 来搜寻关键字喔!而不需要将压缩档解开才以grep 进行!这对查询备份中的文字档资料相当有用!

bzip2, bzcat/bzmore/bzless/nzgrep

若说gzip 是为了取代compress 并提供更好的压缩比而成立的,那么bzip2 则是为了取代gzip 并提供更佳的压缩比而来的。bzip2 的用法几乎与gzip 相同。 

[dmtsai@study ~]$ bzip2 [-cdkzv#] 文件名
[dmtsai@study ~]$ bzcat 文件名.bz2 
选项与参数:
-c :将压缩的过程产生的数据输出到萤幕上!
-d :解压缩的参数
-k :保留原始文件,而不会删除原始的文件喔!
-z :压缩的参数(预设值,可以不加)
-v :可以显示出原档案/压缩档案的压缩比等信息;
-# :与gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!

    xz, xzcat/xzmore/xzless/xzgrep

虽然bzip2 已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了xz 这个压缩比更高的软件!这个软件的用法也跟gzip/bzip2 几乎一模一样。

[dmtsai@study ~]$ xz [-dtlkc#] 文件名 
[dmtsai@study ~]$ xzcat 文件名.xz 
选项与参数:
-d :就是解压缩啊!
-t :测试压缩文件的完整性,看有没有错误
-l :列出压缩文件的相关资讯
-k :保留原本的文件不删除~
-c :同样的,就是将数据由萤幕上输出的意思!
-# :同样的,也有较佳的压缩比的意思!

常见的打包指令:tar

tar

tar 的选项与参数非常的多!我们只讲几个常用的选项,更多选项您可以自行man tar 查询。

[dmtsai@study ~]$ tar [-z|-j|-J] [cv] [-f 待建立的新文件名] filename...  <==打包与压缩 
[dmtsai@study ~]$ tar [-z|-j|-J] [tv] [-f 既有的tar文件名]              <==察看文件名 
[dmtsai@study ~]$ tar [-z|-j|-J] [xv] [ -f 既有的tar文件名] [-C目录]    <==解压缩
选项与参数:
-c :建立打包文件,可搭配-v 来察看过程中被打包的文件名(filename)
-t :察看打包文件的内容含有哪些文件名,重点在察看『文件名』;
-x :解打包或解压缩的功能,可以搭配-C (大写) 在特定目录解开
      特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。
-z :透过gzip 的支援进行压缩/解压缩:此时文件名最好为*.tar.gz
-j :透过bzip2 的支援进行压缩/解压缩:此时文件名最好为*.tar.bz2
-J :透过xz 的支援进行压缩/解压缩:此时文件名最好为*.tar.xz
      特别留意, -z, -j, -J 不可以同时出现在一串指令列中
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
-f filename:-f 后面要立刻接要被处理的文件名!建议-f 单独写一个选项啰!(比较不会忘记)
-C 目录:这个选项用在解压缩,若要解压到特定目录,可以使用这个选项。

-p(小写) :保留备份资料的原本权限与属性,常用于备份(-c)重要的设定档
-P(大写) :保留绝对路径,亦即允许备份资料中含有根目录存在之意;
--exclude=FILE:在压缩的过程中,不要将FILE 打包! 

其实最简单的使用tar 就只要记忆下面的方式即可:

压缩:tar -j c v -f filename.tar.bz2 要被压缩的文件或目录名称
查询:tar -j t v -f filename.tar.bz2
解压缩:tar -j x v -f filename.tar.bz2 -C 欲解压缩的目录

如果不加[-z|-j|-J] 的话,文件名最好取为*.tar 即可。如果是-j 选项,代表有 bzip2 的支援,因此文件名最好就取为*.tar.bz2 ,因为bzip2 会产生.bz2 的扩展名之故!

另外,由于『 -f filename 』是紧接在一起的,过去很多文章常会写成『-jcvf filename』,这样是对的, 但由于选项的顺序理论上是可以变换的,所以很多读者会误认为『 -jvfc filename』也可以~事实上这样会导致产生的文件名变成c !因为-fc 嘛!所以啰,建议您在学习tar 时,将『 -f filename 』与其他选项独立出来,会比较不容易发生问题。

2014-10-27 00:59:44 rlanffy 阅读数 759
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1208 人正在学习 去看看 王利涛
Linux下常用压缩格式:.zip     .gz    .bz2    .tar.gz    .tar.bz2
  1. zip
    与windows中的zip是通用的
    压缩命令:zip 压缩文件名 源文件名
                     zip -r 压缩文件名 源文件夹名
    解压缩命令:unzip 被解压文件包
  2. gzip
    linux专用的格式,但在windows中也能解压
    压缩命令:gzip 源文件,将源文件压缩为:源文件.gz。源文件会消失
                      gzip -c 源文件 > 压缩文件名,源文件不会消失
                      gzip -r 目录,压缩目录,只会将目录中的文件压缩,不会压缩目录
    解压缩:gzip -d 包文件名
                  gunzip 包文件名
  3. bz2格式
    不能压缩目录
    压缩命令:bzip2 源文件,将源文件压缩为:源文件.bz2。源文件会消失
                      bzip2 -k 源文件,保留源文件
    解压缩:bzip2 -d 包文件
                  bunzip2  包文件
                  bunzip2 -k 包文件,保留包文件
  4. .tar.gz
    压缩:tar -cvf 打包文件名 源文件
    解压:tar -xvf 包文件名
    tar -tvf 包文件名:查看包里面的内容
    tar -zcvf 压缩包名.tar.gz 源文件。-z:压缩为.tar.gz格式
    tar -zxvf 包名.tar.gz,解压:解压缩.tar.gz文件
  5. .tar.bz
    tar -jcvf 压缩包名.tar.bz2 源文件。-z:压缩为.tar.bz2格式
    tar -jxvf 包名.tar.bz2,解压:解压缩.tar.bz2文件


    指定解压位置:
    tar -jxvf 包名.tar.bz2 -C 目的路径
    压缩多个文件:tar -jcvf 压缩包名.tar.bz2 源文件1 源文件2
    查看包中的内容:tar -jtvf 包名
2016-04-27 16:45:24 keda8997110 阅读数 511
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1208 人正在学习 去看看 王利涛

一.tar命令

利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文 件或将几个文件组合成为一个文件以便于网络传输是非常有用的。


语法:tar [主选项+辅选项] 文件或者目录
使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
主选项:
c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
t 列出档案文件的内容,查看已经备份了哪些文件。
u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
x 从档案文件中释放文件。

辅助选项:
b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。
f 使用档案文件或设备,这个选项通常是必选的
k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。
m 在还原文件时,把所有文件的修改时间设定为现在。
M 创建多卷的档案文件,以便在几个磁盘中存放。
v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
w 每一步都要求确认。
z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

二.Linux下的压缩文件剖析

           

在具体总结各类压缩文件之前,首先要 弄清两个概念:打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这 两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另外的工具将这一大堆文件先打 成一个包,然后再就原来的压缩程序进行压缩。
  Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法:

 tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面来举例说明一下:
  # 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的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压缩程序,比如调用gzip、bzip2等。


  1) tar调用gzip
  gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下:
  # tar -czf all.tar.gz *.jpg
  这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz
  # tar -xzf all.tar.gz
  这条命令是将上面产生的包解开


  2) tar调用bzip2
  bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用bzip2。下面来举例说明一下:
  # tar -cjf all.tar.bz2 *.jpg
  这条命令是将所有.jpg的文件打成一个tar包,并且调用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2
  # tar -xjf all.tar.bz2
  这条命令是将上面产生的包解开。


    3)tar调用compress 

compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结果。与compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用gzip。下面来举例说明一下:

  # tar -cZf all.tar.Z *.jpg
  这条命令是将所有.jpg的文件打成一个tar包,并且调用compress压缩,生成一个uncompress压缩过的包,包名为all.tar.Z
  # tar -xZf all.tar.Z
  这条命令是将上面产生的包解开


小结:

 有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文件作一个小结
  1)对于.tar结尾的文件
  tar -xf all.tar
  2)对于.gz结尾的文件
  gzip -d all.gz
  gunzip all.gz
  3)对于.tgz或.tar.gz结尾的文件
  tar -xzf all.tar.gz
  tar -xzf all.tgz
  4)对于.bz2结尾的文件
  bzip2 -d all.bz2
  bunzip2 all.bz2
  5)对于tar.bz2结尾的文件
  tar -xjf all.tar.bz2
  6)对于.Z结尾的文件
  uncompress all.Z
  7)对于.tar.Z结尾的文件
  tar -xZf all.tar.z
  另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:
  1)对于.zip
  linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
  # zip all.zip *.jpg
  这条命令是将所有.jpg的文件压缩成一个zip包

      注意:如果要压缩的是个文件夹,则要加上-r参数,表示调用递归压缩,如:

      zip -r temp.zip temp

        # unzip all.zip
  这条命令是将all.zip中的所有文件解压出来

  2)对于.rar
  要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux
不是免费的;然后安装:
  # tar -xzpvf rarlinux-3.2.0.tar.gz
  # cd rar
  # make
  这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
  # rar a all *.jpg
  这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar 扩展名将自动附加到包名后。
  # unrar e all.rar
  这条命令是将all.rar中的所有文件解压出来
   到此为至,我们已经介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、 zip、unzip、rar、unrar等程式,你应该已经能够使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar这10种压缩文件进行解压了,以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方 法对于Unix也基本有效。


2018-07-20 16:18:30 weixin_41896508 阅读数 98
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1208 人正在学习 去看看 王利涛
  • tar命令

      解包:tar zxvf FileName.tar

      打包:tar czvf FileName.tar DirName

     

  • gz命令

      解压1:gunzip FileName.gz

      解压2:gzip -d FileName.gz

      压缩:gzip FileName

      .tar.gz 和 .tgz

      解压:tar zxvf FileName.tar.gz

      压缩:tar zcvf FileName.tar.gz DirName

       压缩多个文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...

     

  • bz2命令

      解压1:bzip2 -d FileName.bz2

      解压2:bunzip2 FileName.bz2

      压缩: bzip2 -z FileName

      .tar.bz2

      解压:tar jxvf FileName.tar.bz2

      压缩:tar jcvf FileName.tar.bz2 DirName

     

  • bz命令

      解压1:bzip2 -d FileName.bz

      解压2:bunzip2 FileName.bz

      压缩:未知

      .tar.bz

      解压:tar jxvf FileName.tar.bz

     

  • Z命令

      解压:uncompress FileName.Z

      压缩:compress FileName

      .tar.Z

      解压:tar Zxvf FileName.tar.Z

      压缩:tar Zcvf FileName.tar.Z DirName

     

  • zip命令

      解压:unzip FileName.zip

      压缩:zip FileName.zip DirName

Linux解压缩命令

阅读数 414

没有更多推荐了,返回首页