一、SHELL技术
1shell特性 子shell执行, ./ 或者bash ,当前shell执行 . 或者 source
2shell变量
3shell条件测试
4shell数值运算
5 流控、循环
if 条件判断
case
for 循环
while
until
break 内置命令
continue
exit
shift
array 数组
function
#############################################################
与shell相关的几个文件,/etc/profile /etc/bashrc 系统级 登录shell 执行
~/.bash_profile ~/.bashrc 用户级登录执行
~/.bash_logount ~/.bash_history 离开shell执行
以上的与su su- 有关目前还没理解 第六集
shell特点
(1)命令和文件的自动补齐, 这是因为rpm -qa |grep 这个包bash-completion
(2)命令历史记忆功能 上下键 、!number 执行历史命令里的第几条命令、
!string 找到最近以字母开始的命令、 !$ 上一个命令的最后一个参数、
!!、上一个命令(写脚本用的) ctrl + R搜索历史命令
ctrl+D 与exit 一样 ctrl +A +E 移动光标到前或者后
ctrl+K 往后删。ctrl +U 往前删 ctrl+s 锁ping ctrl+Q 解锁
前后台作业控制 &、 nohup、ctrl+C 、 ctrl+Z bg %1、 fg%1、kill %3、screen
ip addr |grep 'inet ' |grep eth0
ip addr|grep'inet '|tee test |grep eth0 覆盖
ip addr |grep 'inet'|tee -a test|grep eth0 -a 追加 tee管道
df |grep '/$' 磁盘里过滤跟下的
df |tee df.txt |grep '/$'
命令排序:::: 三个符号;1、 ; 如cd;eject 把挂载的光驱给弹出来
; 不带逻辑判断
&& 带逻辑判断 前边的命令成功后执行后边的命令
|| 带逻辑判断 前边的命令执行不成功,执行后边的命令
true 永远返回值为真 false 返回值为假
command & 后台执行
command &>/dev/null 混合重定性(标准输出1,错误输出2)
command && command 2 命令排序,逻辑判断
shell 通配符(元字符 )表示的不是本意
* 匹配任意多个字符
? 匹配任意一个字符
【】匹配括号中任意一个字符 【abc】可能是a也可能是b 或者c 【^a-z】取反,不是a-z
()属于打开新的shell 执行
{} 集合
\ 转义字符
echo -e "a\tb" 可以把T转义为tab键 -e 解释后边的特殊符号和颜色输出机制
带颜色输出################################################
echo -e "\e[1;31mThis is a red text." 打印-e "\e [1;31-37 打印出来的颜色"
在最后边加上\e[0m 表示重置 31-37 指得是前景色 41-47 指的是背景色
带颜色输出################################################
变量::
变量的命名:必须以字母或下滑线开头,不能以数字开头。
read -p “提示 ” read 是从键盘读入
if [ $? -eq 0 ] ; then
echo “ ”
else
echo " "
fi
上面的脚本的意思是如果$? =0 然后打印 “ ”不等于0执行else
fi 结束
变量类型:
1、自定义变量(影响范围在当前shell)+export 转为环境变量
定义变量:变量名=变量值 变量名必须以字母或下滑线开头,不能以数字开头区分大小写
2、环境变量 (影响范围在当前shell跟子shell)主要是系统定义的多 env能够显示所有的环境变量。
$1是位置变量
4.预定义变量
$0 脚本名
$* 所有的参数
$@ 所有的参数
$# 所有的个数 脚本执行有多少个参数
$$ 当前进程的PID
$! 上一个后台进程的PID
$? 上一个命令的返回值 0表示成功
free -m |grep '^Mem:' |awk '{print $3}'
这条命令的意思是 在查找内存信息中,取出 以Mem开头 的行。 然后打印第三列、
scale=2 保留小数点后面的两位,
awk 'BEGIN{print 1/2}' 计算1除以二
echo“pribt 5.0/2” |python 这支持小数点后边的小数。
变量的替代
${变量名-新的变量值}
${变量名:-新的变量值}两个的区别是一个会替换空值,一个不会替换空值
i++ 和++i有什么区别!i++是自加, ++i是
shell脚本中的奇怪符号
break 跳出去
while 循环
true 永远为真
条件测试 man test
(EXPRESSION ) 表达式为真
!EXPRESSION 表达式不为真 false
EXPRESSION -a EXPRESSION 都为真
EXPRESSION -o EXPRESSION 前边 或 后边为真(一个为真就可以)
-n STRING 字符串长度为非0
-z 长度为0
INTEGER -eq INTEGER 整数比较 等于
-ge 大于或等于
-le 小于 等于
-gt 大于
-lt 小于