点击关注公众号,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登入界面
完毕!