这些其实去百度里面搜都是有的我就不详细举例了
find `pwd` -name "*pcm" #绝对路径下的所有pcm
find `pwd` \( -name "*.txt" -o -name "*.text" \) # 绝对路径下的所有.txt和.text
find `pwd` -type d #绝对路径下的所有目录,f是文件
find `pwd` -iname "*txt" #绝对路径下的所有txt(且不区分大小写)
find `pwd` -maxdepth 1 #查找目录最大深度为1
find `pwd` -size +9600000c #查找目录大于9600000字节的文件
shell基础
# 单引号
变量无效,转义也不可以
# 双引号
变量有效,可出现转义符
# 变量
name="nihao" # 局部变量,仅在当前shell有效
exprot name="nihao" # 全局变量,所有shell有效
# 获取字符串长度
在${}中使用“#”获取长度
# 提取子字符串
${str:start:len}
# 数组 bash只支持一维数组,不支持多维数组
# 定义
array_name=(li wang xiang zhang) (小括号做边界、使用空格分离)
# 获取数组元素
echo ${array_name[0]}
# 取得元素个数:
${#array_name[@]} 或者 ${#array_name[*]}
# 取得单个元素长度:
${#array_name[1]}
# 参数
- $#:参数个数
- $@:显示所有向脚本传递的参数 “1” “2” “3”(传递了三个参数)
- $*:显示所有向脚本传递的参数 “1 2 3” (传递了一个参数)
- $?:是显示最后命令的退出状态,0表示没有错误,其他表示有错误
- $!:最后一个运行的后台进程
# 算数运算
$[1+1] 或 $((1+1)) 或 `expr 2 + 2` (中间要有空格) 或 let i=1+1
# bc 上面的都不能做小数运算,可以使用bc计算器,也支持 逻辑运算 echo "1>2" | bc 成立返回1,不成立返回0
- scale=n 可以约束小数位
1.直接输入bc,可以进入交互模式
2.echo "scale=2;1.1+1.1" | bc
# 数字关系运算符
-eq := ,Equal
-ne: != , Not Equal
-gt: > , Greater Than
-ge: >= , Greater or Equal
-lt : < , Less Than
-le : <= , Less or Equal
# 字符串运算符
= :检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
!= :检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
-z :len == 0,为0返回 true。 [ -z $a ] 返回 false。
-n :len != 0,不为0返回 true。 [ -n “$a” ] 返回 true。
$ : a != "",不为空返回 true。 [ $a ] 返回 true。
# 布尔运算符
! :非运算,表达式为 true 则返回 false。 [ ! false ]
-o :| ,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ]
-a :& ,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ]
# 逻辑运算符 有多个判断条件,所以有两个 [[ ]]
&& :逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| :逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
# 文件运算符
-d file :检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file :检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-s file :检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file :检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
-r file -w file -x file :可读可写可执行返回true
# 字符串切割
${file#.*} 删掉第一个
${file##.*} 删掉最后一个
${file%%.*} 删掉最后一个
${file%.*} 删掉第一个
${file/dir/path}:将第一个dir替换为 path
${file//dir/path}: 将全部dir替换为 path
# read == 标准输入
read -p "请输入姓名" -t 3 -s name
-p:提示输入
-t:计时输入
-s:输入不显示,类似于密码输入
cat txt | while read line;do commend ;done # 按行读取文本
# 条件测试
test 选项 参数 或 [ 选项 参数 ] (空格必须加)
- 多个命令组合
; - [ 1 -eq 1 ] ;echo 1 # 用;两条命令没有逻辑关系,依次执行
&& - [ 1 -eq 1 ] && echo 1 # && 有关系,只有第一条命令执行成功,才能执行第二条
|| - [ 1 -eq 1 ] || echo 1 # || 有关系,如果第一条命令执行成功,第二条就不执行,反之,第二条执行
# if 判断
if 条件测试;then
命令
elif 条件判断;then
命令
else
命令
fi
# for 循环
# 方法一:
for 变量 in 值列表 # 技巧 {1..10} 1-10 ; {a..z} a-z
do
命令
done
# 方法二:
for((初值;条件;步长))
do
命令
done
# case 语句
case 变量 in
模式1)
命令;;
模式2)
命令;;
*)
默认命令
esac
# 函数
function 函数名{ }
函数名(){ }
# basename 命令
$ basename /usr/bin/sort 输出"sort"。
$ basename ./include/stdio.h .h 输出"stdio"。
# dirname 命令
$ dirname /tmp/test/file.txt 输出"/tmp/test"
# tr 命令
-s : 删除重复字符串
echo "a b c" | tr -s " " # a b c
echo "aaaaaab" | tr -s "a" # ab
-c : 取反
-d : 删除
tr -cd '0-9a-zA-z' < /dev/urandom | head -c 10 # 只提取前10个字符
# cut 命令 切割列
-d:指定分隔符
-f:指定第几列
cut -d : -f 1 txt # 选择以:为分割符的第一列
今天就分享那么多,我妈妈喊我回家吃饭了拜拜!!!