shell简介
一、什么是shell
1.由C语言编写的程序,是内核和用户间的命令解释器
2.shell执行命令的方式
1)交互式:执行命令
2)批处理:shell脚本
3)shell程序:bash(Linux默认shell程序) sh、ash、csh、ksh
3.什么是shell脚本
1)把要执行的命令按顺序写入文档中,这个文档 就是shell脚本
2)执行脚本的方法
脚本路径(必须要x权限)
sh 脚本路径(打开一个新的bash执行)
source 脚本路径=. 脚本路径(在当前bash 下执行)
3)完整的脚本必须包含
脚本声明
注释
可执行语句
4.重定向与管道
1)| :将左侧的命令结果作为右侧命令的处理对象
2)重定向
重定向输入 <
重定向输出 >(覆盖) >>(追加)
标准错误输出 2>
混合输出 &>
3)交互式硬件设备
/dev/stdin:键盘,默认编号0,标准输入
/dev/stdout:显示器,默认编号1,标准输出
/dev/stderr:显示器,默认编号2 ,标准错误输出
二、shell变量
1.自定义变量
1)定义一个新的变量
2)变量赋值
= :直接赋值
" " :通过$引用其他变量进行赋值
' ' : 禁止引用其他变量(将特殊字符视为普通字符)
` ` = $() : 用命令结果赋值
read : 从键盘输入定义变量值
read -p “提示信息:” 变量名
3)变量的设置
export:导出为全局变量(当前用户、临时)
~/.bash_profile:设置用户永久变量
/etc/profile:设置系统永久变量
4)变量的运算(只能算整数)
expr $变量一 运算符 $变量二
运算符:+ 、 - 、 \* 、 / 、 %(加减乘除取余)
2.环境变量
1)主要用于设置用户的工作环境,包括用户的宿主目录、命令查找路径、用户当前目录、登录终端等
2)常见的环境变量
USER:用户名称
HOME:用户宿主目录
HOSTNAME:用户名
LANG:语言和字符集
PWD:当前工作目录
PATH:命令搜索路径
SHELL:shell
3.位置变量
位置变量也叫位置参数,用$1-$9表示
4.预定义变量
$#:统计命令行中有几个位置变量
$*:表示所有位置变量的内容
$?:测试前一条命令是否正确,0正确,非0错误
$0:当前执行的程序或脚本名称
条件语句
一、条件测试
1.语法
test 条件表达式或[ 条件表达式 ]
2.文件测试
-d :测试是否为目录
-f :测试是否为文件
-e :测试目录或文件是否存在
-r :测试当前用户是否有读取权限
-w :测试当前用户是否有写入权限
-x :测试当前用户是否有执行权限
3.文件判断
-f :判断单个文件
-nt :判断文件A是否比文件B新
-ot :判断文件A是否比文件B旧
-ef :判断两个文件是否为同一个inode
4.整数值比较
-eq :=
-ne :≠
-gt :>
-lt :<
-le :≤
-ge :≥
5.字符串比较
= :第一个字符串与第二个字符串相同
!= :第一个字符串与第二个字符串不相同,!表示取反
-z :检查字符串是否为空
6.逻辑测试
二、if语句结构
1.单分支:只有条件成立时才显示结果,反之则不
语法:
if 条件
then(当条件成立时)
结果
fi
2.双分支:显示条件成立或不成立的结果
语法:
if 条件
then(当条件成立时)
结果
else(当条件不成立时)
结果
fi
3.多分支:对测试条件进行多次测试,显示不同结果
语法:
if 条件1
then
结果1
elif 条件2
结果2
else
结果3
fi
case和循环
一、case语句
1.case的概述:
与if相同,当变量存在多个取值时,对不同的取值显示不同的结果
2.case的语法
case 变量值 in
取值一)
结果一
;;
取值二)
结果二
取值*)
默认结果
esac
1)case行尾必须跟“in”,取值后必须跟“)”结束
2);;表示一个循环结束
3)取值中可以用[ ]表示一个连续的范围,| 表示或
4)* 表示没有上面的取值,结束循环
三、for循环语句
1.对取值进行循环,有规律
2.for的语法
for 变量名 in 取值列表
do
执行的命令
done
四、while循环语句
1.对条件进行循环,直到不满足为之
2.while的语法
while 条件
do
命令
done
1)true(真):表示条件永远成立,用exit 退出,可以将exit 0加入结果中,即当某个结果满足条件是终止循环
2)false(假):循环不会被执行
sed与awk
一、正则表达式
1.正则表达式分为基础正则表达式(grep,sed,awk,vim,egrep)和扩展正则表达式(egrep,awk)
2.基础正则表达式元字符
3.扩展表达式元字符
二、sed工具
1.sed的基本语法
-e:指定要执行的命令,只有一个编辑命令时刻省略
-n:只输出处理后的行,读入时不显示
-i:直接编辑文件,不输出结果
2.sed常用操作
三、awk工具
1.awk基本语法
awk [选项] '模式或条件{编辑命令}'文件
awk -f 脚本文件 文件