在Linux系统中对于文件的打包压缩与解压的方法,以及让用户能够基于一个关键词在文本文件中搜索匹配信息,与基于指定的名称或属性在整个文件系统中搜索匹配特定文件的超级实用命令

 tar命令用于对文件打包压缩或解压,格式为:“tar [选项] [文件]”。

        Windows系统中最常见的压缩格式是.rar与.zip吧,而Linux系统中常见的格式比较多,但主要使用的是.tar或.tar.gz或.tar.bz2格式,同学们不用担心格式好多而记不住,其实这些大部分都是由tar命令来完成的,我来把最重要的几个参数讲给你们下,首先“-c”参数是用于创建压缩文件的,“-x”参数是用于解压文件的,因此这两个不能同时放一起使用,其次“-z”参数是指定使用Gzip格式来压缩解压文件,“-j”参数是指定使用bzip2参数来压缩解压文件,解压时候咱们则是根据文件的后缀来决定是何种格式参数,而有些打包操作要数个小时,屏幕没有输出的话你一定会怀疑电脑有没有死机了,也不好判断打包的进度情况,非常推荐使用“-v”参数来不断显示压缩或解压的过程给用户,“-C”参数用于指定要解压到的那个指定的目录,而“-f”参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。因此平时我会一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令来将指定的文件来打包,解压的话则是“tar -xzvf 压缩包名称.tar.gz”命令,让咱们来逐个演示下打包压缩与解压的操作吧。
使用tar命令将/etc目录内文件通过gzip格式进行打包压缩,并将文件命名为etc.tar.gz:

[root@linuxprobe ~]# tar czvf etc.tar.gz /etc
tar: Removing leading `/' from member names
/etc/
/etc/fstab
/etc/crypttab
/etc/mtab
/etc/fonts/
/etc/fonts/conf.d/
/etc/fonts/conf.d/65-0-madan.conf
/etc/fonts/conf.d/59-liberation-sans.conf
/etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
/etc/fonts/conf.d/59-liberation-mono.conf
/etc/fonts/conf.d/66-sil-nuosu.conf
………………省略部分压缩过程………………

将刚刚打包的压缩包文件指定解压到/root/etc目录中:

[root@linuxprobe ~]# mkdir /root/etc
[root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc
etc/
etc/fstab
etc/crypttab
etc/mtab
etc/fonts/
etc/fonts/conf.d/
etc/fonts/conf.d/65-0-madan.conf
etc/fonts/conf.d/59-liberation-sans.conf
etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
etc/fonts/conf.d/59-liberation-mono.conf
etc/fonts/conf.d/66-sil-nuosu.conf
etc/fonts/conf.d/65-1-vlgothic-gothic.conf
etc/fonts/conf.d/65-0-lohit-bengali.conf
etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf



find命令用于查找文件,格式为:“find [查找路径] 寻找条件 操作”。

  “Linux系统中的一切都是文件”。在Linux系统中的搜索工作一般都是通过find命令来完成的,它可以根据不同的文件特性来做为匹配项(如文件名、大小、修改时间、权限等信息),一旦匹配到了则会默认为用户显示到屏幕上来,基础的匹配项目请见下表即可,我主要讲解下“--exec”参数重要的作用,这个参数是用于将find命令搜索到的结果交由给后面的命令再进一步做处理,十分类似于咱们将在下一章中提到的管道符技术。

Linux系统中的配置文件根据FHS协议会被保存到/etc目录中(第六章精讲),如果咱们要想获取到该目录中所有以host开头的文件就可以这样做:

[root@linuxprobe ~]# find /etc -name "host*" -print
/etc/avahi/hosts
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/modules/active/modules/hostname.pp
/etc/hostname

想要在整个系统中搜索所有权限中包括SUID权限的文件,只需使用减号-4000即可:

[root@linuxprobe ~]# find / -perm -4000 -print
/usr/bin/fusermount
/usr/bin/su
/usr/bin/umount
/usr/bin/passwd
/usr/sbin/userhelper
/usr/sbin/usernetctl

拔高题目:在整个的文件系统中找出所有归属于linuxprobe用户的文件并复制到/root/findresults目录。

此题的重点是"-exec {} \;"其中的{}代表find命令搜索出的逐个文件,并且记得命令的结尾必须是\;

[root@linuxprobe ~]# find / -user linuxprobe -exec cp -arf {} /root/findresults/ \;



 grep命令用于对文本内容进行关键词的搜索匹配,格式为:“grep [选项] [文件]”   (不是实时的噢)

      可以把grep命令当作是用途最广泛的文本搜索匹配工具,参数虽然很多但基本是用不到的,我用将近七年的工作和教学经验提出本书籍核心“去掉不实用”的写作理念绝对不是乱说,一名Linux讲师如果写书的水平只能停留在“技术的搬运工”而不成成为一名对真正优质技术知识的提炼者,那绝对会害了一大波学生,因此刘遄老师在这里只讲两个最常用的参数,只要会使用“-n”参数显示搜索到信息的行号,使用“-v”参数用于反选信息(即没有包含关键词的所有信息行)就几乎能完成你以后80%的工作需要,至于其他上百个参数,以后万一工作遇到了,再来用“man grep”命令查一下也来得及。
Linux系统中的/etc/passwd文件是保存着所有用户信息的文件,而一旦用户的登陆终端被设置成“/sbin/nologin”则不再允许登陆系统,因此咱们可以通过使用grep命令来匹配出当前系统中所有不允许登陆系统的用户信息:

[root@linuxprobe ~]# grep /sbin/nologin /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin