基础
常用命令
# 输出echo ""echo -e "" # 支持特殊字符,包括颜色 \t \n echo -e "\e[1;30m text \e[0m" # ;30m到;36m是前景色,;40m到;46m是背景色echo -n "" # 不换行 # 历史命令historyhistory -c # 清空历史记录history -w # 保存到文件 ~/.bash_history## 历史保留的命令的条数在 /etc/profile 的环境变量HISTSIZE的值# 别名alias hel="echo hel"unalias hel# 输入重定向< # 后面跟文件就是把文件的内容输入<< # 当出现与开头相同的内容时将中间的内容输入[root@K8S-Deploy ~]# wc -l <<EOF> 11> 22> 33> EOF3 # 将内容片段作为输入# 特殊符号() 开启子shell,隔离变量作用域[] 用于变量测试$() 包含命令的结果,结果的值保存给前面的变量$(( $a + $b )) # 数学计算# 变量## shell中默认的变量的值都是字符串类型,如果需要数学计算则需要类型转换# 设置shell环境set -u # 调用未声明的变量会报错,如果不设置按默认情况不会报错set -x # 执行命令前先输出命令set # 显示所有的用户变量unset # 删除变量# 环境变量export name=value # 设置环境变量unset name # 删除环境变量# 本地语言环境echo $LANG# 或locale# 位置参数$0 # 命令本身$1-$9 # 第1-9个参数${10-999} # 第10-999个参数$# # 参数个数$* # 所有参数组成的一个字符串整体$@ # 所有参数组成的一个数组# 预定义变量$? # 上一条命令返回状态$$ # 当前PID$! # 后台最后一个进程的PID# 声明变量类型declaredeclare [+-]类型 变量名## -是加上某类型## +是减去某类型## 类型 a 数组 i 整数 r 常量,即只读的变量readonly x 环境变量 p 输出变量类型# 交互式读取用户输入read -t # 超时时间,秒 -p # 提示字符串 -n # 允许输入的字数 -s # 像输入密码一样,不显示输入内容
变量测试与内容置换
登录主机欢迎提示语
- motd(Message Of The Day)每日消息
高级
正则表达式

字符串处理
# 列切分cut -d # 指定分隔符,默认空格 -f # 指定需要提取某一列 如1,3,7...# 格式化输出printf # 排序sort # -t 分隔符 # -k 第几列 # -n 按数字排序 # -r 逆序 # -u 去重# 去重uniq # -i 忽略大小写# 统计wc # -l line # -w word # -c character
三剑客
# awkawk '条件{动作} 条件{动作}...' 文件名 # $0 表示整行内容 # $1-$n表示第n列 # NF 行共有多少列 # NR 当前是多少行 # FS 指定分隔符 # 条件 # 可以写BEGIN|END,做初始化和结束后的动作 # 可以写正则表达式 # 可以写$n >= 80 的数值逻辑关系判断 # 可以写$n ~ "M" 的字符串包含关系 # awk脚本 # 把''里面的条件和动作都写到一个脚本文件demo.awk # 然后使用 awk -f demo.awk filename 即可 # 里面也可以写function 定义函数# sedsed 选项 '[动作]' 文件名 # -n 只输出处理的行,默认全部输出 # -i 将修改写入文件 # -r 支持扩展正则 # -e 执行多个动作 # 动作 # 增 a|i sed '3i 内容' 文件名 # i前面插入,a后面插入 # 删 d sed '2-5d' 文件名 # 删除2-5行 # 改 c sed '3c 内容' 文件名 # 第三行替换内容 sed '[行号]s/旧内容/新内容/g' 文件名 # 查找替换,可以不写行号就是全局替换 # 查 p sed -n '3p' 文件名 # 显示第三行# grep
条件判断
# 判断文件类型-e 是否存在-b 块设备-c 字符设备-d 目录-f 文件-s 空文件# 判断文件权限-r 读-w 写-x 执行# 整数比较-eq 相等-ne 不相等-gt 大于-lt 小于-ge 大于等于-le 小于等于# 字符串判断-z 是否为空-n 是否非空== 是否相等!= 是否不相等# 逻辑与或非! 取反-a and-o or
流程控制
# if/elseif [ ];then # 因为是2条语句需要;隔开 # 执行语句fiif [ ]thenfiif [ ]then # 执行else # 执行fiif [ ]then # 执行elif [ ];then # 执行else # 执行fi# casecase 变量 in "值1") # 执行 ;; "值2") # 执行 ;; *) # 执行 ;;esac# forfor 变量 in arraydo # 执行 done# whilewhile [ 条件 ]do # 执行done# until 条件是假是才会执行until [ 条件 ]do # 执行done# 函数function name(){ # 执行 # echo $0 $1 ...}name 1 2 # 退出exitbreakcontinue
PPT
shell编程.pptx