点击关注公众号,k8s优秀车间主任及时送达
为什么需要学习shell
1、shell 脚本上手快和易掌控
2、shell 脚本可以大大减少运维人员每天不必要的重复工作
3、学习周期短
shell 脚本中常用命令
1、grep 用于处理数据文件检索
格式:grep option 'keys' filename
参数:
OPTIONS:-i: 不区分大小写-v: 查找不包含指定内容的行,反向选择-w: 按单词搜索-n: 显示行号-A: 显示匹配行及后面多少行 -A 5-B: 显示匹配行及前面多少行-o: 打印匹配关键字-c: 统计匹配到的次数-r: 逐层遍历目录查找-C: 显示匹配行前后多少行-l:只列出匹配的文件名-L:列出不匹配的文件名-e: 使用正则匹配-E:使用扩展正则匹配^key:以关键字开头key$:以关键字结尾^$:匹配空行--color=auto :可以将找到的关键词部分加上颜色的显示案例:
grep -i root passwd // 忽略大小检索文件中root
grep -n root password // 匹配带有root字符并且显示行号

grep -n$ passwd //匹配文件空行并统计行号

grep -v ^# /etc/ssh/ssh_config //匹配文件中没有#号注释内容

2、cut 用来显示文件指定内容
格式:cut [参数] [文件]
参数:
-b:以字节为单位进行分割 ,仅显示行中指定直接范围的内容
-c:以字符为单位进行分割 , 仅显示行中指定范围的字符
-d:自定义分隔符,默认为制表符”TAB”
-f:显示指定字段的内容 , 与-d一起使用
-n:取消分割多字节字符
案例:
cut -d: -f 1 passwd // 显示文件1一列内容,以:作为分割

cut -d: -f1,3,5 passwd //截取文件1,3,5并以:为分割

cut -c 2-5 passwd // 截取文件2-5 个字符

3、tr命令,字符转换
tr [参格式:数] [字符串1] [字符串2]
参数:
-c:选定字符串1中字符集的补集,即反选字符串1的补集
-d:删除字符串1中出现的所有字符
-s:删除所有重复出现的字符序列,只保留一个
案例:
tr -d '[:/]' < passwd //删除文件中 :和/ 符号

tr '[0-9]' '#' < passwd //替换文件中0-9数字为#

tr -s '[a-z]' < passwd // 匹配文件a-z 并且压缩重复只保留一个

4、 sort 排序文件并输出
格式:sort(选项)(参数)
参数:
-n:依照数值的大小排序
-r:以相反的顺序来排序
-t:设置排序时所用的分隔字符
-k:指定需要排序的列
案例:
sort -n 1.txt //按照数值大小排序

sort -t : -nrk 3 sort.txt // 按照":",分割后的第三列倒序排序

5、sed 命令,处理编辑文本文件
格式:sed [参数]
参数:
-e:直接在指令列模式上进行sed的动作编辑。
-f:以选项中指定的script文件来处理输入的文本文件。
-n:仅显示script处理后的结果
命令功能描述:
a:新增,a的后面可以接字串,在下一行出现
d:删除
s:查找并替换
案例:
sed -e 4a\welcome sed.txt //在第四行后添加welcome

sed '/Linux/d' sed.txt //删除包含Linux行

sed 's/Linux/Redhat/g' sed.txt //文件中Linux替换成Redhat

6、awk 命令,个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
格式:awk [参数] [文件]
参数:
-F:指定输入时用到的字段分隔符
-v:自定义变量
-f:从脚本中读取awk命令
-m:对val值设置内在限制
awk的内置变量:
FILENAME:文件名
NR:已读的记录数
NF:浏览记录的域的个数(切割后,列的个数)
案例:
awk '{print $2,$3}' sed.txt //打印第二行的和第二和第三字段

awk -F: 'BEGIN{print "user,shell"}{print $1","$7}END{print"KK","/bin/KK"}' passwd //只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell在最后一行添加"KK,/bin/KK"。注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行

sed '/^$/{print NR}' sed.txt // 查看文件空行

seq 命令,打印数字序列
格式:seq [参数]
-f:格式
-s:字符串
-w:在列前添加0使得宽度相同
案例:
seq 10 //打印产生10以内的整数

seq -s "::" -f "%03g" 90 102 //打印90-102之间整数,并且以"::" 分隔

shell 字符串
|
下面写一个模拟Centos7登入界面

完毕!










