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

相关推荐

  • Linux网络管理之路由和team网络组

    如何实现把linux当路由器来使用,实现不同网段之间的通信访问,这就是今天所要实现的路由配置   环境准备:4台虚拟机,两台中间两台作为路由器来使用(每天主机两块网卡),其他两台作为终端主机,目的是让不同网段的两台主机之间互相访问(这里在vmware里面做的实验,所以网卡的类型都设置为桥接)   拓扑图:   步骤一:将A、D两…

    系统运维 2016-09-10
  • N25-第三周作业

    第三周作业 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]#who | cut -d' ' -f 1 | sort | uniq 2、取出最后登录到当前系统的用户的相关信息。 ~]#who |tail -1 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 ~]#cat…

    Linux干货 2016-12-18
  • shell,系统启动和内核管理

    shell中的for和while循环,Linux的组成,系统启动的步骤,以及内核的管理

    2017-12-21
  • Linux文本处理工具和正则表达式

    概述:     Linux核心哲学思想中很重硬件要的一条内容就是一切皆文件,在Linux系统上,无论硬件、软件、配置文件等等一切,都以文件形式呈现出来。一般文件类型有:普通文件、目录文件、链接文件、管道文件、套接字文件、字符设备文件、块设备文件等。而普通文件里面又有一些文本文件、二进制文件等细分化的文件类型,而我们日常…

    Linux干货 2016-08-07
  • lamp简介

    lamp 构建一个有着动态服务器端技术的网站 LAMP基础 1)开源领域LAMP组成: L:Linux;A:apache (httpd);M:mysql, mariadb;P:php, perl, python httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本交由php来运行; php:运行p…

    Linux干货 2016-11-07
  • 行编辑器sed

    行编辑器sed   Sed,grep,awk命令被称为文本编辑三剑客,目前学习了grep命令,sed命令 自我觉得sed命令更强大,排名第一,grep暂居第二,awk没学不太清楚。   这次的博客写一下刚学习的sed命令,grep命令是全局搜索剪切,sed命令则是逐行进行处理,它一次处理一行内容。Sed命令有两个空间,…

    2017-08-26

评论列表(1条)

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

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