> Linux教程 > Linux学习 >

linux 神奇的压缩指令与正规表示法

》》 *.Z  compress程序压缩的文件

*.bz2  bzip2程序压缩的文件

*.gz  gzip程序压缩的文件

*.tar  tar程序打包的数据,没有经过压缩

*.tar.gz tar程序打包的文件,且经过gzip压缩

》》compress

-d:解压缩参数

example:

先复制/etc/man.config到root下,再将他压缩

cp /etc/man.config /root

compress man.config

compress -d man.config.z

uncompress man.config.z

注意:如果没有给出其它参数,那么原始文件会被后来的*.Z文件取代。

uncompress时也是一样。

compress -d与uncompress功能相同。

》》bzip2,bzcat

-d:解压缩

-z:压缩

example:

bzip2 -z man.config

bzcat man.config.bz2

bzip2 -d man.config.bz2

bunzip2 man.config.bz2

如果不想解压文件,又想看的话,使用bzcat即可。

遇到.bz,.bz2,.tbz,tbz2为后缀的文件时,可以尝试bzip2解压。

bzip2 -d 与 bunzip2功能相同。

》》gzip,zcat

-d:解压缩的参数

-#:压缩等级,1最不好,9最好,6为默认值

example:

gzip man.config

会生成man.config.gz文件

zcat man.config.gz                                        会读取man.config的内容,zcat可以同时读取compress与gzip的压缩文件

gzip -d man.config.gz

gunzip man.config.gz

都产生man.config文件

gzip -9 man.config

以最大压缩比压缩文件

》》tar

-z:是否同时具有gzip

-x:解开一个压缩文件

-t:查看tarfile里面的文件

-c:建立一个压缩文件

-v:压缩过程中显示文件

-f:使用文件名

-P:使用原文件的原有属性(属性不会依据用户而变)

-p:可以使用绝对路径

-N:比后面接的日期 (yyyy/mm/dd)还要新的文件才会被打包进新建的文件中

--exclude File:在压缩过程中,不要将FILE打包

example:

mkdir supxmen

cp /root supxmen

tar -cvf supxmen.tar supxmen                           只将目录整合打包成一个文件

tar -acvf supxmen.tar.gz supxmen                     除了将目录打包外,同时以gzip压缩

tar -zcvf supxmen.tar.gz supxmen/home/*         将supxmen/home/目录下的文件全部打包并压缩为一个supxmen.tar.gz文件

tar -xvf supxmen.tar                                          解压tar包,请注意,由于没有gzip(.tar而非.tar.gz)的作用,所以只要使用-xvf

                                                                          即可,不要加上z,否则会有问题

tar -zxvf supxmen.tar.gz                                          这个就是加上gzip的压缩结果所以要加上-z

tar -zxvf supxmen.tar.gz                                          这个t可以用来查看tar里面的文件信息,而不需要将它解开

tar -zcvfp supxmen.tar.gz /home                              建立起来的压缩文件内文件为绝对路径

tar -N ''''2002/06/25'''' -zcvf home.tar.gz /home         在/home目录中,比2002/06/25还要新的文件才会被打包进入ome.tar.gz中

tar -acvf - /home | tar -xvf -                                  将/home打包后,直接解压缩在/root下。不需要再建立一次中间文件,

                                             不过,使用上面的语法最好使用绝对路径,这样不易产生问题,这个方式适合不想建立中间文件的情

                                              况。

》》注意:compress与gzip只适用于在一个文件的压缩,如果要压缩目录应该

使用tar。

另外为了提高安全性,如果一定要以绝对路径建立打包文件,那么就加入-P(大写)参数。

使用-p(小写)之后,被打包的文件将不会依据用户的身份来改变权限。

在Linux中,gzip已经被整合到tar中,但是Sun或其他较旧的Unix版本中的tar并没有整合gzip,所以如果你需要解压缩,就需要这么做:

gzip -d supxmen.tar.gz

tar -xvf supxmen.tar

》》cpio

-o:将数据复制输出到文件或设备上

-i:将数据自文件或设备复制出到系统中

-t:查看cpio建立的文件或设备的内容

-c:以一种较新的便携格式(portaable format)存储

-v:让存储过程中文件名称可以在屏幕上显示

-B:让默认的Blocks可以增至5120bytes,默认是512bytes

这样的好处是可以让大文件的存储速度加快

-d:自动建立目录,由于cpio的内容可能不在同一目录内

-u:自动用较新的文件覆盖较旧的文件

example:

find / -print | cpio -covB > /dev/st0                            将搜寻到的文件存到磁带机

cpio -icduv < /dev/st0                                                将磁带机的数据还原回来

cpio -icdvt < /dev/st0 > /tmp/content                          将磁带机的内容(文件名)转存到/tmp/content

find / -type f | cpio -o > /tmp/root.cpio

cpio -i < /tmp/root.cpio

cpio很神奇,它最适合用于备份,因为它并不像cp,它可以直接将文件复制过去。

》》正规表示法

》》grep

example:

grep root /var/log/secure                                   将/var/log/secure这个文件中有root的那一行显示出来

grep "*[a-d]*" /var/log/secure                           输出含有a-d的行

grep kernel /var/log/messages                           显示/var/log/messages文件里所有跟kernel有关的文字

grep * /etc/*                                                      显示/etc下文件内容含有*的文件名称,由于*是特殊字符,必须使用跳转字符。

grep ^boot /etc/*                                               查找内容中有一行是一boot开头的

grep [XYZ] /etc/*                                                列出/etc下含有XYZ三个字符中任何一个字符的

grep ^[w-z] /etc/*                                               只要在每一行中发现XYZ中任何一个,就显示出来

》》可搭配的通配符及其含义

通配符                意义

^                     句首字符相符

-----------------------------------
$                     句尾相同的字符

-----------------------------------
?                     任何一个单一字符

-----------------------------------
*                    随意几个任意字符

-----------------------------------
                     跳转符号,将特殊字符变成普通字符

-------------------------------------------------
[list]              列表中的字符

-----------------------------
[range]          列表范围中的字符

---------------------------------
[^list]           反向选择,与[list]相反

-------------------------------------
[^range]       反向选择,与[range]相反

-----------------------------------------
{n}            与前一个相同字连续n个

--------------------------------------
{n,m}        与前一个相同字联系n-m个

------------------------------------------



(责任编辑:IT)