shell脚本中if与case使用,查找文件locate与find的使用,压缩,解压及归档工具

shell脚本中if与case使用

查找文件locate与find的使用

压缩,解压及归档工具


执行的循序

 顺序执行

 选择执行

 循环执行

条件语句if

if只是一个有含义的词,不能单独作为指令使用。

单分支

     if 条件判断:then

            条件为真的分支代码

     fi

双分支 

     if 判断条件:then

            条件为真的分支代码

     else

         条件为假的分支代码

     fi

多分支

      if 判断条件1,

         if-true

      elif 判断条件2,then

          if-ture

      elif 判断条件3,then 

          if-ture

           …

      else 

          all-false

      fi

QQ图片20160816110625.png

QQ图片20160816110714.png

case 条件判断

多用于离散值的判断

case  

PAT1)

     分支

     ;;

PAT2)

     分支2

     ;;

*)

     默认分支

     ::

esac     

case   *:任意长度任意字符

       ?:任意单个字符

       []:指定范围内的任意单个字符

       a|b: a or b

例子:

case $number in

1|3|6)

echo good

;;

2|4|7)

echo bad

;;

10|8|66)

echo very good

;;

esac

read -p "please input a number: " number

[ -z "$number" ] && echo "you must input a number " && exit

QQ图片2016081414244.png

QQ图片20160816110529.png

判断输入的数字是否正整数

read -p "please input a integer" n

! expr "$n" + 0 &> /dev/null  && echo no digit && exit 

[ $n -gt 0 ] && echo integer || echo "passive inte ger or zoro"

文件查找和压缩文件

文件查找

locate

locate +文件名

默认是全文件系统搜索

基于数据库搜索 /var/lib/mlocate/mlocate,db

updatedb 更新数据库指令

-i 执行忽略大小写

-n 只显示指定的行数目

locate foo  搜索名称或路径带有foo的文件

QQ图片20160816111101.png

locate -r '\.sh$' 搜索以.sh结尾的文件

locate 是外部命令

-r, –regexp REGEXP    搜索基本正则表达式 REGEXP 来代替模式

QQ图片20160816111232.png

find

实时查找工具,通过遍历指定路径完成文件查找:

查找速度慢

精确查找

实时查找

可能只搜索用户具备读取和执行权限的目录

find 是外部命令

查找条件:

-name "文件名称":可以使用 *,?,[],[^]

      find -name "checkint*" 要使用"" ''不然会出现问题

      find -name '[af]*.sh'

-iname:忽略大小写

-inum n :按inode号码查找

-samefile name :查找相同inode号码的文件

-links n:连接数目为n的文件

-regex "PATTERN" :

      find -regex '.*/.sh$'

-p:显示文件所使用的真实路径

根据属主和属组查找

按照UID,GID搜索

-user name:查找属主为指定用户的文件

-group grpname:查找属组为指定组的文件

-uid userID:查找属主指定UID的文件

-gid groupID:查找属组指定GID的文件

-nouser:查找没有属主的文件

        find / nouser

-nogroup:查找没有属组的文件

        find / -nouser -nogroup

        默认可以多指令使用

QQ图片20160816111355.png

文件类型

   -type

f: 普通文件

d: 目录文件

l: 符号链接文件

s:套接字文件

b: 块设备文件

c: 字符设备文件

p: 管道文件

find / -type b  搜索块设备文件

QQ图片20160816111646.png

组合条件:

与:-a

或:-o

非:-not, !

find -not -name "*.sh" -not -name "f*"

默认可以多指令使用

QQ图片20160816111917.png

摩根定律:

非(P 且Q) = (非P) 或(非Q)

非(P 或Q) = (非P) 且(非Q)

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

不加括号括住所选的条件,最后加的-ls只会显示最后的条件的值

-a:与的使用时候可以直接在后面 -ls

-o:或的时候使用要用括号括起来

-path 排除

find /root -path/root/bin -a -prune -o -name "*.sh" -print(打印)  排除了/rootbin ,查找.sh结尾 的文件打印

格式:-path 路径 -a -prune(裁掉)

QQ图片20160816112300.png

根据文件大小来查找:

-size [+|-]#UNIT

常用单位:k, M, G

find / -size 10K =(9K,10K]

#UNIT: (#-1, #],如:6k

        (5k.6k]  5k到6k之间

-#UNIT:[0,#-1], 如:-6k

        [0,5k]  0k到5k

+#UNIT:(#,∞), 如:+6k

        [6k,+∞] 6k到无穷大

根据时间戳:

     用“天”为单位

     -atime [+|-]#

         #: [#,#+1)

        +#: [#+1,∞]

        -#: [0,#)

        -mtime

        -ctime

   -atime 7 [7,8)

   -atime -7 [0,7]

   -atime +7 [8,+∞)

find /etc/ -mmin -1 一分钟以内发生变化的文件

以“分钟”为单位:

-amin

-mmin

-cmin

QQ图片20160816113013.png

根据权限查找

-perm +数字表示的权限

find /bin/ -perm 4755 -ls 精确查找权限为4755的文件

find -perm /222(+222) 7版本用/222 属主属组其他有一个有读权限就满足搜索条件  

find -perm -222 属主属组其他都要有读权限才能满足搜索条件

没有-,/,+,直接+数字就是精确匹配

QQ图片20160816113013.png

QQ图片20160816113347.png

处理动作:

  -print:默认的处理动作,显示至屏幕;

-ls:类似于对查找到的文件执行“ls -l”命令

-delete:删除查找到的文件;

  -fls file:查找到的所有文件的长格式信息保存至指定文件中

-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;

对于每个文件执行命令之前,都会交互式要求用户确认

find -perm -222 -ok rm {} \:

                  固定语法要带\:结束

                -ok chmod o-w {} \:

                -exec cp {} {} .bak \:

                {}专门配合find使用,表示搜索出匹配的文件

-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令

{}: 用于引用查找到的文件名称自身

find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

有些命令不能接受过多参数,此时命令执行可能会失败,下面方式可规避此问题

find | xargsCOMMAND

find -perm /222 |xargs 0(换行)

find -perm /002 type f -delete 删除权限002的文件

压缩,解压及归档工具

compress[-dfvcVr] [-b maxbits] [file …]

-d: 解压缩,相当于

-c: 结果输出至标准输出,不删除原文件

-v: 显示详情

uncompress解压缩

zcatfile.Z>file

compress m  压缩,源文件删除了

compress -c m > m.Z

compress -c -d m.Z >m 解压缩,不删除源文件。

uncompress m.Z 解压文件

QQ图片20160816142538.png

zcat m.Z 看压缩文件内容,不进行文件解压

zcat m.gz 

gzip 压缩(较常用

gzip m   压缩文件,.gz格式

gzip -d m.gz 解压文件=gunzip

gzip -9 mgz(文件名)压缩比例(1-9),默认是6

QQ图片20160816143201.png

bzip2  压缩效率更高

bzip2 m(文件)

bzip2 -d m 解压缩文件

bzip2 -k m 压缩保留源文件

bzip2 -9 m (1-9)压缩比例,默认是6

bzcat 不显式解压缩的前提下查看文本文件内容

xz  压缩效率最高

xz m(文件)

xz -d m 解压缩文件

xz -k m 压缩保留源文件

xz -9 m (1-9)压缩比例,默认是6

xzcat :不显示解压缩的前提下查看文本内容

zip 打包压缩 (压缩多个文件)

zip –r sysconfig  sysconfig/

zip m m

unzip m.zip 解压缩

cat /var/log/messages | zip message –  压缩文件

unzip -p message >message 会将解压缩的结果显示到屏幕上,但不会执行任何的转换。

查找/var目录下属主为root,且属组为mail的所有文件

QQ图片20160816143738.png

查找/var目录下不属于root、lp、gdm的所有文件

blob.png

查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件

shell脚本中if与case使用,查找文件locate与find的使用,压缩,解压及归档工具QQ图片20160816144310.png

查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

[root@zczx ~]# find / -nouser -nogroup -atime -7

查找/etc目录下大于1M且类型为普通文件的所有文件

QQ图片20160816144749.png

查找/etc目录下所有用户都没有写权限的文件

QQ图片20160816145435.png

查找/etc目录下至少有一类用户没有执行权限的文件

[root@zczx ~]# find /etc/ -not -perm /111

查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件

[root@zczx ~]# find /etc/init.d/ -perm -113

原创文章,作者:swzczx,如若转载,请注明出处:http://www.178linux.com/36348

(0)
swzczxswzczx
上一篇 2016-08-18 10:10
下一篇 2016-08-18 10:10

相关推荐

  • shell编程

       编程基础   编程基础:       编程:也就是程序+数据           程序编程风格:                  过程式:以指…

    Linux干货 2016-08-15
  • 文本处理工具

    文本处理工具 一、文本处理命令less,cat,more,sort 1.less  less :一页一页地查看文件或STDIN 输出  查看时有用的命令包括:   /文本  搜索 文本   n/N 个 跳到下一个 or  上一个匹配   less 命令是man…

    系统运维 2016-08-08
  • 用户权限管理及课后作业

    一.权限对目录、文件的意义 文件 r 可用文件查看类工具获取文件内容 w 可以修改文件内容(包括清空) x 可执行该文件 [root@localhost testdir]# cat zzz i am fine  thank you [root@localhost testdir]…

    Linux干货 2016-08-08
  • mariadb基础应用

    mariadb基础应用 一、 前言 MariaDB is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users …

    Linux干货 2016-12-16
  • RHCS问题汇总-深圳Eric

    拓补图: 服务器用了4个网卡 两个万兆网卡做了bond连到netgear交换机,交换机端口access 30 对应IP段10.199.16.0/22,网关10.199.16.1做在netgear上 两个千兆网卡做了bond连到cisco 3750交换机,交换机端口truck 30 40 1001-1300 对应IP段10.199.16.0/22、10.176…

    Linux干货 2016-06-22
  • CentOS6基础网络配置

    虽然也可以用命令进行临时修改(ifconfig来设置IP,用route来配置网关,用hostname来配置主机名等等),但是重启后会丢失。所以本文主要通过修改相关配置文件来实现: 配置dns、网关、ip地址 修改网卡名字 单网卡多IP配置 多网卡单IP配置 本次系统运行环境:  配置dns、网关、ip地址 首先,我们对网卡配置相关的主要的几个文件简…

    Linux干货 2016-09-06

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 14:48

    文章写的很详细,也很认真,对当天知识的梳理好好进行了梳理,是不是收获很大呢?继续保持哦