shell
shell是什么
shell是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。
shell解析器
Linux提供的Shell解析器有以下六种:
cat /etc/shells
- /bin/sh :
- /bin/bash : Centos默认的解析器是/bin/bash
- /sbin/nologin:
- /bin/dash:
- /bin/tcsh:
- /bin/csh:
shell入门
1.脚本格式
(1) 脚本以 #!/bin/bash 开头 (指定解释器)
(2) 脚本执行方式:
① sh test.sh
② bash test.sh
③ ./test.sh :这种方式需要授予test.sh脚本执行权限
2.shell中的变量
(1) 常用的系统变量
① $HOME:当前用户的家目录
② $PWD:当前的目录
③ $SHELL:默认的解析器
④ $USER:当前用户
(2) 自定义变量
① 基本语法:变量=值
② 撤销变量:unset 变量
③ 声明静态变量:readonly变量,注意:不能unset
④ 变量定义规则:
<1> 环境变量名建议大写
<2> 等号两边不能有空格
<3> 在bash中,变量默认都是字符串类型,无法直接进行数值运算
<4> 变量的值如果有空格,需要用双引号或单引号括起来
- 特殊变量:$n
$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,10以上的参数需要用大括号包含,如 ${11} ) -
特殊变量: ①. $* :代表命令行中所有的参数,$*把所有的参数都看成是一个整体 ② $@ :代表命令行中所有的参数,$@把每个参数区分对待 ③. $# :代表命令行中的参数个数;eg: sh test.sh para1 para2 ,则$#的值为2 ④. $? :上一个命令执行的返回状态,如果这个状态值是0,证明上一个命令执行正确,反之不是0,则证明上一个命令执行失败
5 运算符
① $((运算式)) :$(( 3 + 4 ))
② $[运算式] : $[(2+3)\*4]
③ expr + , - , \* , / , % 加,减,乘,除,取余 :*expr `expr 2 + 3` \\** 4*
6 条件判断
① 【condition】前后要有空格
② 条件非空即为true,反之为false
③常用的判断条件
<1>两个整数之间的比较
= : 字符串比较
-lt : 小于
-le : 小于等于
-eq : 等于
-ge : 大于等于
-gt : 大于
-ne : 不等于
<2>按照文件权限进行判断
-r : 有读的权限
-w : 有写的权限
-x : 有执行的权限
<3> 按照文件类型进行判断
-f : 文件存在,并且是一个常规的文件(file)
-e : 文件存在
-d : 文件存在,并且是一个目录(directory)
7 流程控制
① if 判断
if [ 条件 ];then if [ 条件 ]
程序 then
else 程序
程序 else
fi 程序
fi
② case
case $变量名 in
"值1")
程序1
;;
"值2")
程序2
;;
*)
默认程序
;;
③ for循环
语法1:
for(( 初始值;循环控制条件;变量变化 )) s=0
do for(( i=0;i<100;i++ ))
程序 do
done s=$[$s+$i]
done
echo $s
语法2
for 变量 in 值1,值2,值3... for i in $*
do do
程序 echo "value is $i"
done done
④ while循环
while [ 条件表达式 ]
do
程序
done
read读取控制台输入
read 选项 参数
选项:
-p : 指定读取值时的提示符
-t : 指定读取值时等待的时间
参数:
变量:指定读取值时的b变量名
实例:提示7s内,读取控制台输入的名称
touch read.sh
vi read.sh
#!/bin/bash
read -t 7 -p "Enter your name in 7 seconds " NAME
echo $NAME
sh read.sh
函数
1系统函数
① basename:
eg: basename /opc/home/aa.txt
输出: aa.txt
eg: basename /opc/home/aa.txt .txt
输出: aa
② dirname:
eg: dirname /opc/home/aa.txt
输出:/opc/home
2 自定义函数
基本语法
[funciton] funname[()]
{
Action
[return int;]
}
funname

cut 工具
- cut [选项参数] filename
选项参数
-f:列号,提取第几列
-d:分隔符,按照指定分隔符分格列
2.实例
eg: cut -d " " -f 1 aa.txt
eg: ifconfig eth0 | grep “inet addr” | cut -d : -f 2 | cut -d " " -f 1
sed工具
1.sed是一种流编辑器。一次处理一行内容,把当前处理的行存储在临时缓冲区中,成为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾,文件内容并没有改变,除非你使用重定向存储输出。
2.用法:
sed [选项参数] 'command' filename
选项参数:
-e : 直接在指令列模式上进行sed的动作编辑
命令功能描述:
a: 新增
d:删除
s:查找并替换
3.实例
sed “2a mytest” aa.txt : 将mytest插入到aa.txt的第二行下
sed “/mytest/d” aa.txt :将aa.txt中的mytest删除
sed “s/mytest/youtest/g” aa.txt : 将aa.txt中的mytest替换成youtest
sed -e “2d” -e “s/mytest/youtest/g” :先删除第二行,在替换aa.txt中的mytest为youtest
awk工具
1.一个强大的文本分析工具,把文本逐行的读入,以空格为默认分割符将每行切片,
切开的部分在进行分析处理
2.基本语法
awk [选项参数] 'pattern1 {action1} pattern2 {action2} ... ' filename
pattern :表示awk在数据中查找的内容,也就是匹配模式
action :在找到匹配内容时执行的一系列命令
参数说明
-F : 指定输入文件的分隔符
-v : 赋值一个用户定义变量
3.实例
awk -F : '/^root {print $7}' /etc/passwd
// 只显示/etc/passwd 的第一列和第七列,以逗号分隔,
//且在所有行前面添加列名user,在最后一行添加“test,ch”
awk -F : 'BEGIN {print "user"} {print $1,"," $7} END{print "test,ch"}' /etc/passwd
sort
1.sort 命令在linux中非常有用,它能将文件进行排序,并将排序结果标准输出。
2.语法
sort [选项] [参数]
3.选项
-n 依照数值大小排序
-r 以相反的顺序排序
-t 设置排序时所用的分隔符
-k 指定需要排序的列
4.实例

sort -t : -nrk 3 aa.txt
本文详细介绍了Shell作为命令解释器和编程语言的基本概念,包括脚本格式、变量管理、流程控制、条件判断及常用工具如sed、awk的使用方法。
488

被折叠的 条评论
为什么被折叠?



