iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >bash脚本编程学习之算术运算与文件查找
  • 181
分享到

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

算术脚本文件 2022-06-04 21:06:46 181人浏览 独家记忆
摘要

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

算术运算

相对于其他编程语言来说在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

总结

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

--结束END--

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

本文链接: https://www.lsjlt.com/news/18998.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • bash脚本编程中算术运算与文件查找怎么用
    bash脚本编程中算术运算与文件查找怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。算术运算相对于其他编程语言来说在bash里面不能直接以变量加上变量的形式...
    99+
    2023-06-09
  • Shell脚本编程中常用的数学运算方法教程
    这篇文章主要介绍“Shell脚本编程中常用的数学运算方法教程”,在日常操作中,相信很多人在Shell脚本编程中常用的数学运算方法教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shell脚本编程中常用的数学...
    99+
    2023-06-09
  • 从Linux文件系统学习Java编程算法?
    在Java编程中,算法是一个非常重要的概念,它是程序设计的基础。而在Linux操作系统中,文件系统也是一个非常重要的概念。那么,有没有一种方法可以将Linux文件系统和Java编程算法结合起来呢?答案是肯定的。在这篇文章中,我将会向你介绍...
    99+
    2023-08-10
    文件 linux 编程算法
  • 从零开始学习Java文件编程算法
    Java是一种广泛使用的编程语言,它被用于开发各种应用程序和软件。Java文件编程算法是Java编程语言的一部分,它允许您在Java程序中读取和写入文件。在本篇文章中,我们将,包括如何读取和写入文件,以及如何处理文件中的数据。 Java...
    99+
    2023-11-04
    文件 编程算法 对象
  • 编程算法学习之路:如何通过 PHP 打包技术提高 LeetCode 挑战的通过率?
    LeetCode 是一个非常受欢迎的算法题库,它包含了各种各样的算法问题,从简单的数组操作到复杂的图论和动态规划问题。对于想要提高自己算法能力的程序员来说,LeetCode 是一个不错的选择。但是,LeetCode 上的题目难度较高,很多...
    99+
    2023-06-28
    打包 leetcode 编程算法
  • Python编程算法学习笔记:如何使用load函数在Python中读取文件?
    在Python编程中,读取文件是一个非常基础的操作。Python中有许多方法可以读取文件,其中最常用的方法之一就是使用load函数。load函数是Python中的一个内置函数,它可以将一个文件中的数据读取到一个变量中。 使用load函数读...
    99+
    2023-06-23
    编程算法 学习笔记 load
  • 想要成为编程算法高手?学习Java和Shell的文件处理技巧吧!
    作为一名程序员,处理文件是我们经常需要处理的任务之一。无论是读取文件内容、写入文件、修改文件权限或是对文件进行搜索和匹配,我们都需要用到文件处理技巧。在这篇文章中,我们将重点介绍Java和Shell的文件处理技巧,并提供一些代码示例,帮助...
    99+
    2023-09-09
    shell 编程算法 文件
  • 如何在Linux环境下运用Java编程实现高效的算法与文件操作?
    在Linux环境下,Java编程是一种非常流行的方式。Java具有跨平台的特性,使得其在Linux和其他操作系统上都得到了广泛应用。而且,Java的面向对象编程模型和丰富的类库,也使得它成为了一种十分适合编写高效算法和进行文件操作的语言。 ...
    99+
    2023-08-27
    编程算法 文件 linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作