全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

bash脚本编程学习之算术运算与文件查找

算术运算

相对于其他编程语言来说在bash里面不能直接以变量加上变量的形式来表现;比如我们先声明两个变量num1和num2然后再做运算。

num1=2
num2=3
echo "$num1+$num2"
2+3

这里我们显示的结果直接为2+3只是做了变量的替换,而不是做两个变量的加法运算;在bash里面变量默认是以字符串类型来存储的;就算我们在这里声明的这两个变量为整数也不会做运算;declare命令-i可以声明我们定义的变量为整型bash也只会做变量替换;

declare -i num3=9
declare -i num4=1
echo “$num3+$unm4”
9+1

对于bash来说要做算数运算必须使用特殊的算术运算格式:

1.使用let命令;

例如

let $num1+$num2

这里不会显示任何数据let命令默认是不会输出结果至屏幕的;所以我们这里需要做变量赋值;将$num1+$num2的运算后的值,赋值个另外一个变量sum;

let $sum=$num1+$unm2
echo “$sum”
5

2.算术运算表达式用[]直接赋值给一个变量;这里可以赋值也可以直接使用

echo $[$num3+$num4]
10

也可以做赋值;

$sum=$[$num3+$num4]
echo "$sum"
10

3.使用两个小括号和[]用法相似

$sum=$(($num3+$num4))
echo "$sum"

4.使用expr命令进行运算;将变量和运算符做参数传递给expr做运算;

$sum=$(expr $num3 + $num4)

注意这里既然是作为命令的参数运算的那个参数之间需要空格;

bash的运算符有+,-,,/,*(次方),%(取模)

乘法符号在bash里面有特殊含义,所以在有些场景里面需要使用转义符

文件查找

在文件系统上查找符合条件的文件可使用的命令有:locate,find

locate

文件查找命令,其工作原理是依赖于事先构建好的索引库.系统性的历遍文件系统的所有文件路径下的文件来构建这个库,用户在查找文件的时候不是直接去历遍目标路径而是直接来搜索这个索引库;以节省系统资源;但是我们手动去更新索引库的时候会消耗大量资源;

他的工作特性是:查找熟读快,模糊查找,非实时查找;

手动更新索引库updatedb

locate:查找文件系统上符合条件的文件
 locate [OPTION]... PATTERN...
 -b:至匹配路径中的基名
 -c:统计出共多少个符合条件的文件
 -r:基本使用正则表达式

find命令

实时查找工具,通过遍历指定的起始目录下文件系统层级结构完成文件查找;与前面locate不同的是find是属于实时查找,可以指定搜索目标的起始路径,默认的是当前目录;find的匹配条件是精确查找,可以根据文件名,大小,类型,从属关系,权限等;而且可以对符合条件的文件作出删除等操作,默认的是输出至标准输出;

工作特性:查找速度略慢;精确查找;实时查找

fnind:

find:
 find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

查找条件;

根据文件名查找:

-name “pattern” 

-iname “pattern“ :忽略大小写

pattern支持glob风格的通配符;

-regex “pattern”:基于正则表达式查找文件,匹配的是路径,并非文件名;

根据文件从属关系查找:

-user USERNAME:查找属主为指定用户的所有文件;
-group GROUPNAME:查找属组为指定组的所有文件;
-uid UID:查找属主为指定UID的所有文件;
-gid GID:查找属组为指定GID的所有文件;
-nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;

根据文件类型找找:

-type TYPE:
 f:普通文件;
 d:目录文件;
 l:符号链接文件;
 b:块设备文件;
 c:字符设备文件;
 p:管道文件;
 s:套接字文件;

根据文件的大小查找:

-size [+|-]#
 常用单位:K,M,G

根据时间戳查找:

以天为单位:
-atime [+|-]#
-mtime
-ctime
以分钟为单位: 
-amin
-mmin 
-cmin

根据权限查找

-perm [/|-]mode
mode:精确权限匹配
/mode:任何一类用户(u,g,o)权限中的任何一位(r,w,x)满足其中一个就行;权限位之间存在或关系;
-mode:每一类用户(u,g,o)权限中的的每一位(r,w,x)同时符合和条件才满足;权限位之间存在与关系;

组合测试:

与:-a;默认组合逻辑;两个条件都满足为与;
或:-o;满足两个条件其中一只为或;
非:!;-not!取反

处理动作:

-print:输出至标准输出;默认的动作;
-ls:类似于对查找到的文件执行“ls -l”命令;显示文件的详细信息
-delete:删除查找到的文件;
-fls /PSTH/TO/SOMEFILE:吧查找到的文件长格式信息保存至指定的的文件中;
-ok COMAND {} \; :对查找到的每个文件执行由COMAND表示的命令每次操作都由用户确认;
-exec COMAND {} \; :对查找到的每个文件执行由CMOAND代表的命令;

练习:

1、找出/tmp目录下属主为非root的所有文件;

find /tmp/ -! -user root

2、找出/tmp目录下文件名中不包含fstab字符串的文件

find / -name [^fstab]

3、找出/tmp目录下属主为非root,而且文件名不包含fstab字符串的文件;

find /tmp -! -user root -a -name [^fstab]

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

find /var/ -user root -a -group mail

2、查找/usr目录下不属于root, bin或hadoop的所有文件或目录;用两种方法

find /usr/ -not -user root -not -user bin -not -user hadoop

find /usr/ -not ( -user root -o -user bin -o -user hadoop )

3、查找/etc目录下最近一周内其内容修改过,且属主不是root用户也不是hadoop用户的文件或目录;

find -atime -7 -a -not ( -user root -o -user hadoop )

4、查找当前系统上没有属或属组,且最近一周内曾被访问过的文件或目录;

find / ( -nouser -o -nogroup ) -a -atime -7

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

find /etc/ -size +1M -a -type f

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

find /etc/ -not -perm /222 -type f

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

find /etc -not -perm /111 -type f

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

find /etc/init.d/ -prem -113 -type f

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# bash算术运算  # bash  # 查找文件  # bash中的算术运算  # bash批量修改文件名称的方法小结(增加  # 去除  # 修改后缀)  # 使用bash shell删除目录中的特定文件的3种方法  # 使用Bash Shell获取文件名和目录名的简单方法  # Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录  # 使用Bash Shell对目录中的文件实现递归式拷贝  # bash shell命令行选项与修传入参数处理  # bash 编程中循环语句用法  # BASH 学习笔记小结  # 的是  # 目录下  # 文件系统  # 符合条件  # 会做  # 量为  # 一周内  # 运算符  # 也不  # 都有  # 在这里  # 两种  # 遍历  # 这两个  # 就行  # 要做  # 可以直接  # 正则表达式  # 只为  # 另外一个 


相关文章: 安云自助建站系统如何快速提升SEO排名?  再谈Python中的字符串与字符编码(推荐)  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  建站之星如何快速解决建站难题?  建站之星展会模板:智能建站与自助搭建高效解决方案  c++ stringstream用法详解_c++字符串与数字转换利器  如何在云主机上快速搭建多站点网站?  建站之星如何开启自定义404页面避免用户流失?  如何通过NAT技术实现内网高效建站?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  建设网站制作价格,怎样建立自己的公司网站?  广德云建站网站建设方案与建站流程优化指南  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  制作证书网站有哪些,全国城建培训中心证书查询官网?  行程制作网站有哪些,第三方机票电子行程单怎么开?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  建站之星如何实现网站加密操作?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  南京网站制作费用,南京远驱官方网站?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  如何选择高效响应式自助建站源码系统?  建站之星好吗?新手能否轻松上手建站?  建站168自助建站系统:快速模板定制与SEO优化指南  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  网站制作新手教程,新手建设一个网站需要注意些什么?    昆明网站制作哪家好,昆明公租房申请网上登录入口?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  测试制作网站有哪些,测试性取向的权威测试或者网站?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何彻底卸载建站之星软件?  b2c电商网站制作流程,b2c水平综合的电商平台?  建站之星安装后如何自定义网站颜色与字体?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  想学网站制作怎么学,建立一个网站要花费多少?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  如何在景安云服务器上绑定域名并配置虚拟主机?  ,怎么在广州志愿者网站注册?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何在VPS电脑上快速搭建网站?  如何快速建站并高效导出源代码?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站主机选购指南:核心配置与性价比推荐解析  建站之星收费标准详解:套餐费用及年费价格表一览  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。