认识shell
随着格式linux系统的图像化程序的不断提高,用户在桌面环境下,通过点击,拖拽等操作就可以完成大部分的工作。然而,许多ubuntu linux功能使用shell命令来实现,要比使用图形界面交互,完成的更快,更直接。也可以这样认为,linux中的shell就是linux内核的一个外层保护工具,并负责完成用户与内核之间的交互。
命令是用户向系统内核发出控制请求,与之交互的文本流,shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的区别。同时shell为操作系统提供了内核之上的功能,直接用来管理和运行系统。当需要重复执行若干命令,可以将这些命令集合起来,加入一定的控制语句,编辑成为shell脚本文件,交给shell批量执行、
用户在命令行提示符下键入命令文本,开始于shel进行校核,接着,shell讲用户的命令或按键转化成内核所能够理解的指令。操作系统做出响应,直到控制相关硬件设备。最后,shell将结果交给用户。
通配符
星号(*) 匹配任意长度的字符串 file_*.txt
问号(?) 匹配一个长度的字符 file_?.txt
方括号([...]) 匹配其中指定的一个字符 file[otr].txt
方括号([-]) 匹配指定的一个字符范围 file[a-z].txt
方括号([^...]) 除了其中指定的字符,均可匹配 file[^otr].txt
> file 将file文件重定向为输出源,新建模式
>>file 将file文件重定向为输出源吗,追加模式
2>或&> 将由命令产生的错误信息输入到
定义变量
count=1 变量赋值
echo $count 输出变量的值
unset 命令删除变量的赋值
$0 脚本名
$1--$9 命令行参数
$# 包含命令行参数的个数
$a $* 包含所有命令行的参数
$? 保存前一条命令的退出状态
$$ 包含正在执行的进程ID
expr
算术运算命令 + - \* /
num=9
sum=`expr $num \* 6`
echo $sum
54
test
test语句可测试三种对象:字符串,整数,文件属性。
test "$answer" = "yes" 字符串比较
test $num -eq 18 num的值是否为18
test -d tmp tmp是否为一个目录名
s1 = s2 测试 s1,s2 是否相等
s1 != s2 测试 s1,s2 是否有差异
-z s1 测试s1的长度为0
-n s1 测试s1的长度的不为0
文件属性
-d name 测试是否是目录
-f name 测试是否是文件
-L name 测试是否是符号链接
-r name 测试是否可读
-w name 测试是否可写
-x name 测试是否可执行
-s name 是否存在且长度不为0
f1 -nt f2 f1是否比f2更新
f1 -ot f2 f1是否比f2更旧
tput命令
主要用于设置终端工作模式或读出终端字符。
shell编程的调试语法
主要用于:条件测试语句(两路分支),多路分支语句,循环语句,循环控制语句,后台执行语句。
1,条件测试语句(两路分支)
if 表达式
then
命令表
fi
if 表达式
then
命令表
else
命令表
fi
2,多路分支
case 字符串变量 in
模式 1)
命令表1
;;
模式 2)
命令表2
;;
easc
3,循环语句
for 变量名 in 单词表 //变量依次取单词的各个单词,每次取一次单词,就执行循环体中的命令,循环次数由单词表中的单词数决定。
do
命令表
done
while 命令或表达式 //while语句首先测试其后的命令或表达式的值,如果为真,就执行一次,知道该命令或表达式为假时退出循环
do
命令表
done
until 命令或表达式 //until语句首先测试其后的命令或表达式的值,如果为假,就执行一次,知道该命令或表达式为真时退出循环,与while相反
do
命令表
done
循环控制语句
break n 跳出n层
continue ,continue n 马上转到最近n层循环语句的下一轮循环上
shell函数
函数定义格式
方式一:
function_name()
{
...
command.
}
方式二:
function funtion_name()
{
...
command.
}
函数调用格式
方式一
value_name = funtion_name[arg1,arg2,...] //函数所有返回状态赋值给变量
方式二
funtion_name[arg1,arg2,...]
echo $? //获得函数返回的状态
函数变量的作用域
全局作用域:做标本的其他任何地方都能访问
局部作用域:只能在声明变量的作用域内访问
声明局部变量格式:local variable_name = value;
shell编程的调试方法
调试方法:
分析输出信息
加调试信息
利用调试工具
以上就是对shell的理解与分析,懂得了以上这些shell的脚本在去看开发板的编译过程,是如何先编译uboot,接着kernel,rootfs,都是通过shell脚本来实现这一连串的命令操作。
阅读(631) | 评论(0) | 转发(0) |