双目测试
file1 -ef file2 是否指向同一个inode
file1 -nt file2 file1是否新于file2
file1 -ot file2 file1是否旧于file2
例子:
[ -z "$a" -o "$a"=="localhost.localdomain" ] 等价于[ -z "$a" ] || [ "$a"=="localhost.localdomain" ]
bash中自定义退出状态码
exit [n] 自定义退出状态码
脚本中一旦遇到exit命令,脚本会立即终止,终止退出的状态取决于exit命令后面的数字,如果
未指定退出状态码,整个脚本的退出状态码取决于脚本中最后一个命令执行的状态码。
文件查找
命令 locate ,find
locate 依赖于事先构建好的索引库,系统自动实现(周期性任务),手动更新索引库updatedb
特性:查找速度快,模糊查找,非实时查找
locate [option] ....pattern
-b:匹配基名
-c 统计符合条件文件
-r bre,基本正则
注意:索引构建过程需要遍历整个文件系统,极其消耗资源
find
实时查找,遍历指定起始路径下文件系统层级结构完成文件查找
工作特性:查找速度稍慢,精确查找,实时查找
用法:
find [option] [查找起始路径] [查找条件] [处理动作]
查找起始路径:指定具体搜索目标起始路径,默认当前路径
查找条件:指定查找标准,可以根据文件名、大小、类型、从属关系、权限
处理动作:对符合条件的文件做出操作,默认是标准输出到屏幕
根据文件名
-name "pattern"
-iname "pattern" 忽略大小写
支持gloab风格通配符 * ? [] [^] [[:space:]] 等
-regex pattern 正则表达式,但只匹配路径,而不是文件名
根据文件从属关系
-user username
-group groupname
-uid uid
-gid gid
-nouser 查找没有属主的文件
-nogroup
根据文件类型
-type TYPE
f 普通文件 d 目录 l 符号链接 b 块设备 c 字符设备 p 管道 s 套接字
组合测试
与 -a (默认) 或 -o 非 -not ,!
练习
1,、找出/tmp目录下属主为非root的所有文件
find /tmp -not -user root -type f
2、找出/tmp目录下文件名中不包含fstab字符串的文件
find /tmp -not -iname "*fstab*" -type f -ls
3、找出/tmp目录下属主为非root,而且文件名不包含tstab字符串的文件
find /tmp -not -user root -not -iname "*tstab*" -type f -ls
比如空格要转义成"%20",其中20是空格的ascii符。括号里面的内容,是起补充说明或解释说明的内容,它不是正文的一部分,括号里面的内容和前括号应该紧接被解说的内容,中间不能有其他标点符号,在括号内容完了后,不应该有句末符号,而在后括号外面添加括号内容前那个句子应该有的标点符号,也就是说,在文章中括号里面的内容是不应该作为一个单独的句子出现的,它只能作为被解说内容的粘着部分出现,它就不应该有自己单独的句末符号。英式括号与中式括号容易交叉,英式括号占半格、括号圆弧小沉,紧贴括号内文字。
!A -a !B 等价于 !(A -o B)