https://www.shellcheck.net/
只要满足条件,就一直循环
while 条件do 执行语句done
#!/bin/bash#Author:zhongxina=1while [ ${a} -lt 5 ]do echo ${a} a=$((${a}+1))done
case 变量名 in 值1) 指令1 值2) 指令2 值3) 指令3 *) # 条件都不满足 指令4esac
#!/bin/bash#Author:zhongxincase "$2" in +) echo "$1 + $3 = $(($1+$3))" ;; -) echo "$1 - $3 = $(($1-$3))" ;; \*) echo "$1 * $3 = $(($1*$3))" ;; /) echo "$1 / $3 = $(($1/$3))" ;; *) echo "$2 不是合法的运算符" ;;esac
grep[option][pattern][file1,file2]
some command|grep[option][pattern]
常用选项
-i
忽略大小写
-c
只输出匹配行的数量
-n
显示行号
-r
递归搜索
-E
支持拓展正则表达式
-w
匹配整个单词
-l
只列出匹配的文件名
-F
不支持正则,按字符串字面意思进行匹配
最基础用法
$ grep mail passwd
大小写不敏感
$ grep New passwd$ grep New passwd -i
匹配有多少行符合要求
$ grep New passwd -i -c1
显示匹配的内容的行号
$ grep New passwd -i -n
查找路径下的内容
$ grep -r "bash" ./
只输出文件名
$ grep -rl "bash" ./
正则匹配
$ grep "s{2}" passwd -E
匹配整个单词
$ grep "oo" passwd -w$ grep "root" passwd -w
/dev/null
相当于linux中的回收站
$ grep "$USER" passwd > /dev/null && echo "$USER是存在的"|| echo "$USER是不存在的"
查看是否运行了docker
-v
:排除
# 查看ps中包含docker的内容$ ps -aux | grep dockerroot 24521 0.0 0.0 14224 1088 pts/0 S+ 23:21 0:00 grep --color=auto docker# 排除grep$ ps -aux | grep docker | grep -v grep# 查看符合的个数$ ps -aux | grep docker | grep -v grep | wc -l0
sed[option]"pattern command"file
some command|sed[option]"pattern command"
常用选项 [option]
-n
只打印模式匹配的行
-f
加载存放动作的文件
-r
支持拓展正则
-i
直接修改文件
匹配模式 pattern
5
只处理第五行
5,10
只处理第五行到第十行
/pattern1/
只处理能匹配到pattern1的行
/pattern1/,/pattern2/
只处理从匹配到pattern1的行到匹配pattern2的行
command
命令
查询 p
新增
a
在匹配行的后面新增i
在匹配行前新增r
外部文件读入,行后新增w
匹配行写入外部文件删除 d
修改
s/old/new
,只修改匹配行中第一个olds/old/new/g
修改匹配行中所有的olds/old/new/ig
忽略大小写p
相当于print
匹配的行打印两次
原始行+匹配的行
$ sed "p" passwd
只打印匹配的行
$ sed -n "p" passwd
匹配 mail
的那行
$ sed "/mail/ p" passwd -n
匹配以s开头的内容
$ sed -n "/^s/ p" passwd
匹配mail开头的行到s开头的行
$ sed -n "/^mail/,/^s/ p" passwd
在3,4,5行前面添加内容
$ sed '3,5 i Add content before the current line' passwd
正式写入需要加 -i
$ sed -i '3,5 i Add content before the current line' passwd
插入文件的内容
$ echo "testfile" >> a.txt$ sed -i '/man/,/mail/ r a.txt' passwd
匹配内容写入文件
$ sed -i '/man/,/mail/ w b.txt' passwd
删除内容
$ sed -i '/test/ d' passwd
修改
$ sed '3,6 s/nologin/666/' passwd |head