恭喜你,找到宝藏博主了,这里会分享shell的学习整过程。
shell 对于运维来说是必备技能之一,它可以提高很多运维重复工作,提高效率。
shell的专栏,我会详细地讲解shell的基础和使用,以及一些比较常用的shell技巧。
有需要的可以从这里开始,可以教会你如何去进行shell脚本的编写,提高你的工作效率。 从第一篇基础开始:【shell脚本】shell脚本之概念、运行方式、变量的使用、交互式脚本、运算(shell脚本基础学习一)_向往风的男子的博客-CSDN博客
正则表达式---sed基本用法---sed文本块处理回顾case分支case 变量 in模式1)命令序列 ;;模式2)命令序列 ;;*)命令序列esac函数 可以将公共的语句块存储在一个函数中,达到精简脚本的目的方式一function 函数名 {命令序列}方式二函数名 (){命令序列}----------------------------------------for while exitbreakcontinue-----------------------------字符串处理${变量名:} 截取${变量名/} 替换${变量名#} 掐头${变量名%} 去尾===================================字符串初值的处理 ${变量名:-} [root@server0 opt]# a=[root@server0 opt]# echo ${a:-123} 当变量是空时调用初值123[root@server0 opt]# a=789[root@server0 opt]# echo ${a:-123} 变量有值时不使用初值789-------------------------------------------------------配置密码时使用初值: #!/bin/bashread -p "请输入用户名" uuseradd $uread -p "请输入密码(默认123456)" pecho ${p:-123456} | passwd --stdin $u-------------------------------------------------------正则表达式,使用若干符号配合对应工具,实现对文本的匹配,查找,过滤基本正则:^ 匹配行首$匹配行尾[]集合,匹配集合中的任意单个字符[^]对集合取反. 匹配任意单个字符* 匹配前一个字符任意次数---不允许单独使用\{n,m\} 匹配前一个字符n到m次\{n\} 匹配前一个字符n次\{n,\} 匹配前一个字符n次及以上\{\}保留扩展正则:+ 最少匹配一次? 最多匹配一次{n,m} 匹配n到m次() 组合为整体,保留| 或者\b 单词边界基本正则:^ grep ^root user 搜索以root开头$ grep in$ user 搜索以in结尾[] grep [in] user 搜索字母i或者n[^] grep [^in] user 搜索除了字母i或者ngrep "." user 搜索任意单个字符,包括空格,但不包括空行grep "ro*t" user 搜索r?t,r与t之间有没有o都可以grep ".*" user 搜索任意, 包括空行grep "ro\{1,2\}t" user 搜索rot,其中o可以出现1~2次grep "ro\{2\}t" user 搜索rot,其中o出现2次grep "ro\{1,\}t" user 搜索rot,其中o可以出现1次以及1次以上grep "0:\{2\}" user 搜索0::grep "\(0:\)\{2\}" user 搜索0:0:-----------------------------------------------------------------------使用扩展正则, 需要用egrep或者 grep -Egrep -E "ro+t" user 搜索rot,o可以出现1次以及1次以上egrep "ro+t" user 搜索rot,o可以出现1次以及1次以上egrep "bi?n" user 搜索bin,i可以出现0次或者1次egrep "ro{2}t" user 搜索rot,o出现2次egrep "ro{1,3}t" user 搜索rot,o出现1~3次egrep "ro{2,}t" user 搜索rot,o出现2次以及2次以上grep "\(0:\)\{2\}" user 搜索0:0:egrep "(0:){2}" user 使用扩展正则搜索0:0:egrep "ro|in" user 搜索ro或者ingrep "\bthe" user1 搜索单词the,前面不能有数字字母下划线======================================echo 123 >> 1.txtvim sed 流式编辑器, 非交互式修改文本,而且支持正则表达式,工作方式是逐行处理使用方式:1, sed 选项 (定址符)指令 被处理的文件2, 前置命令 | sed 选项 (定址符)指令选项-n 屏蔽默认输出 -r 支持扩展正则 -i 写入文件指令p 输出 d 删除 s 替换sed -n 'p' user 使用sed输出所有行,屏蔽默认输出sed -n '1p' user 输出第1行sed -n '2,4p' user 输出2~4行sed -n '3p;5p' user 输出第3行和第5行sed -n '2,+3p' user 输出第2行以及后面的3行sed -n '1~2p' user 输出奇数行sed -n '2~2p' user 输出偶数行sed -n '/bash$/p' user 使用正则输出以bash结尾的行sed -rn '/root|bin/p' user 使用扩展正则输出有root或者bin的行sed -n '=' user 显示行号sed -n '$=' user 显示最后一行的行号sed -n '$=' /etc/passwdsed 'd' user 删除所有行sed '1d' user 删除第1行sed '2,4d' user 删除2~4行sed '3,+2d' user 删除第3行以及后面2行sed '2d;5d' user 删除第2行和第5行sed -i '1,3d' user 删除1~3行,并写入文件sed 's/xml/XML/' a.txt 将每行中第1个xml替换为XMLsed 's/xml/XML/3' a.txt 将每行中的第3个xml替换为XMLsed 's/xml/XML/g' a.txt 将所有的xml都替换为XMLsed 's/xml//g' a.txt 将所有行的xml都删除/bin/bash 换成 /sbin/shsed 's//bin/bash//sbin/sh/' usersed 's/\/bin\/bash/\/sbin\/sh/' usersed 's!/bin/bash!/sbin/sh!' usersed 's(/bin/bash(/sbin/sh(' usersed 's#/bin/bash#/sbin/sh#' user编写脚本,对vsftpd服务完成装包配置启服务的过程,其中使用sed完成配置过程,实现服务可以匿名访问并且上传文件.#!/bin/bashyum -y install vsftpd &> /dev/nullsed -i '/anon_up/s/#//' /etc/vsftpd/vsftpd.confsystemctl restart vsftpdsystemctl enable vsftpdsystemctl stop firewalldsetenforce 0chmod 777 /var/ftp/pub====================================================sed -i 's/#anon_up/anon_up/' /etc/vsftpd/vsftpd.conf