您好,欢迎访问三七文档
11压缩指令与正规表示法11.1压缩指令主要的压缩文件后缀名大都是*.tar.gz,*.Z,*.bz2等类型,那么如何解压缩?此外,如果我们有一个目录要压缩成一个文件,如何做?这些都离不开compress,gzip,bzip2与tar这几个指令。不过,由于Linux目前已经将tar与gzip相结合,因此就更方便。Linux文件的属性基本上与文件名没有绝对关系,能不能执行与它的文件属性有关,与文件名的关系很小。但是,为了帮助我们记忆,适当的文件后缀名还是必要的,因此,目前有一些常见的压缩文件后缀名。*.Zcompress程序压缩的文件;*.bz2bzip2程序压缩的文件;*.gzgzip程序压缩的文件;*.tartar程序打包的数据,没有经过压缩;*.tar.gztar程序打包的文件,且经过gzip压缩。11.1.1compress语法:[root@test/root]#compress[-d]filename-d:解压缩参数!范例:先复制/etc/man.config到root下,再将它压缩[root@test/root]#cp/etc/man.config/root[root@test/root]#compressman.config[root@test/root]#compress-dman.config.Z[root@test/root]#uncompressman.config.Z11.1.2bzip2,bzcat语法:[root@testroot]#bzip2[-dz]filename==压缩解压缩指令[root@testroot]#bzcatfilename.bz2==读取压缩文件内容参数说明:-d:解压缩-z:压缩同样的,我们以刚刚复制过来的/root/man.config文件为例[root@testroot]#bzip2–zman.config[root@testroot]#bzcatman.config.bz2[root@testroot]#bzip2–dman.config.bz2[root@testroot]#bunzip2man.config.bz211.1.3gzip,zcat语法:[root@test/root]#gzip[-d#]filename==压缩与解压缩[root@test/root]#zcatfilename.gz==读取压缩文件内容参数说明:-d:解压缩的参数-#:压缩等级,1最不好,9最好,6为默认值[root@test/root]#gzipman.config会生成man.config.gz文件[root@test/root]#zcatman.config.gz会读取出man.config的内容[root@test/root]#gzip-dman.config.gz[root@test/root]#gunzipman.config.gz解压缩,产生man.config文件[root@test/root]#gzip-9man.config以最大压缩比压缩testing文件11.1.4tar语法:[root@test/root]#tar[-zxcvfpP]filename[root@test/root]#tar-N'yyyy/mm/dd'/path-zcvftarget.tar.gzsource参数说明:-z:是否同时具有gzip-x:解开一个压缩文件-t:查看tarfile里面的文件-c:建立一个压缩文件-v:压缩过程中显示文件-f:使用文件名-p:使用原文件的原有属性(属性不会依据用户而变)-P:可以使用绝对路径-N:比后面接的日期(yyyy/mm/dd)还要新的文件才会被打包进新建的文件中--excludeFILE:在压缩过程中,不要将FILE打包[root@test/root]#tar-cvfdirectory.tardirectory只将目录整合打包成一个文件[root@test/root]#tar-zcvfdirectory.tar.gzdirectory除了将目录打包外,同时以gzip压缩[root@test/root]#tar-zcvffilename.tar.gz/home/test/*将/home/test/目录下的文件全部打包并压缩为一个filename.tar.gz文件[root@test/root]#tar-xvfdirectory.tar解压tar包,请注意,由于没有gzip(.tar而非.tar.gz)的作用,所以只要使用–xvf即可,不需要加上z,否则会有问题[root@test/root]#tar-zxvfdirectory.tar.gz这个就是加上gzip的压缩结果!所以需要加上–z[root@test/root]#tar–ztvfdirectory.tar.gz这个t可以用来查看tar里面的文件信息,而不需要将它解开![root@test/root]#tar-zcvfPhome.tar.gz/home建立起来的压缩文件内文件为绝对路径[root@test/root]#tar-N'2002/06/25'-zcvfhome.tar.gz/home在/home目录中,比2002/06/25还要新的文件才会被打包进入home.tar.gz文件中[root@test/root]#tar-zcvfhost.tar.gz/--exclude/mnt--exclude/proc将根目录的所有数据都打包进host.tar.gz文件中,但是/mnt及/proc则不打包[root@test/root]#tar-cvf-/home|tar-xvf-将/home打包后,直接解压缩在/root下。不需要再建立一次中间文件,不过,使用上面的语法最好使用绝对路径,这样不易产生问题,这个方式适合不想建立中间文件的情况。11.1.5cpio[root@test/root]#cpio-covB[file|device]==备份[root@test/root]#cpio-icduv[file|device]==还原参数说明:-o:将数据复制输出到文件或设备上-i:将数据自文件或设备复制出到系统中-t:查看cpio建立的文件或设备的内容-c:以一种较新的便携格式(portableformat)储存-v:让储存过程中文件名称可以在屏幕上显示-B:让默认的Blocks可以增至5120bytes,默认是512bytes这样的好处是可以让大文件的储存速度加快,请参考i-nodes-d:自动建立目录,由于cpio的内容可能不在同一目录内,如此在反备份过程会有问题。这个时候加上-d,就可以自动将需要的目录建立起来-u:自动用较新的文件覆盖较旧的文件[root@test/root]#find/-print|cpio-covB/dev/st0将搜寻到的文件存到磁带机[root@test/root]#cpio-icduv/dev/st0将磁带机的数据还原回来[root@test/root]#cpio-icdvt/dev/st0/tmp/content将磁带机的内容(文件名)转存到/tmp/content[root@test/root]#find/-type-f|cpio-o/tmp/root.cpio[root@test/root]#cpio-i/tmp/root.cpio上面这个例子可以马上实践,先输出到/tmp/root.cpio文件,然后再还原回来11.2正规表示法正规表示法(也称为常规表示法,是RegularExpress的中文意思)使用的地方相当广泛,我们提一个常用的例子进行说明。假如我们的目录下有很多文件,而要找一个其内容含字符串VBirdtalk的文件,应该如何做?很简单,直接将每个文件的内容提出来,然后逐一比对,如果在比对过程中发现了VBirdtalk字符串,那么就将该行输出到屏幕上,那么您自然可以知道它是在哪个文件里。grep[root@test/root]#grepwordfilename参数说明:范例:[root@test/root]#greproot/var/log/secure将/var/log/secure这个文件中有root的那一行显示出来[root@test/root]#grep*[a-d]*/var/log/secure输出含有a-d的行例题:我想知道/var/log/messages这个文件里所有跟kernel有关的文字。答:想知道的是kernel,找这个关键词即可,所以:grepkernel/var/log/messages例题:我想知道某个文件里含有boot的字眼,而这个文件在/etc/下,我要如何找出这个文件?答:知道这个字眼就好办了,可以直接输入:grepboot/etc/*例题:我想找出在/etc下文件内容含有*的文件名称?答:由于*是特殊字符,在变量命名法则里曾经提过要将特殊字符移除,需要使用跳转字符,即\符号,所以可以这样输入指令:grep\*/etc/*例题:我记得有个文件在/etc/下,而且它的内容中有一行是以boot做为开头,如何查询这个文件?答:由于知道boot是该行的第一个字符,所以可以这样找:grep^boot/etc/*对照上面的表格,您应该可以了解,^表示句首。例题:要列出在/etc下含有XYZ三个字符中任何一个字符的那一行,怎样做?答:只要含有X或Y或Z就将该行列出来,因此,我们的范围很广,这个时候必需使用[]。还记得中括号的用途吗?就是中括号里代表一串字,也可以是几个不连续的字。这里我们仅需要XYZ中任何一个,所以可以这样写:grep[XYZ]/etc/*例题:在/etc里,只要句首是w-z的就将它列出,如何做?答:同样的,使用中括号:grep^[w-z]/etc/*
本文标题:linux11
链接地址:https://www.777doc.com/doc-3658656 .html