操作系统的用户界面(2)
2020-06-12 本文已影响0人
R_est
Shell 脚本编程
脚本(Script)通过类似程序的方式执行具有一定逻辑顺序的命令序列完成较复杂的功能和人机交互,脚本程序保存在文本文件中,是Shell命令语句的集合。
#!安装文件的脚本程序例子 install.shell
#!/bin/bash
# 创建临时文件
sudo mkdir /usr/temp
# 解压安装包到临时文件
sudo echo "正在解压文件"
sudo unzip -qd /usr/temp /HUSTLibV30.zip
sudo echo "解压完成"
# 拷贝安装文件
sudo cp -rf /usr/temp/HUSTLibV30/HUSTLib /usr/lib
# 使配置文件生效
sudo ldconfig
# 删除临时文件
sudo echo "正在删除临时文件"
sudo rm -rf /usr/temp
sudo echo "删除临时文件成功"
sudo echo "安装完成请重启"
Shell脚本程序由Shell环境解释执行
需要可执行属性(x),Chmod + x MyScript.sh
#用户输入y或Y输出Yes,输入n或N输入No,cc.sh
#!/bin/bash
read -n 1 -p "Enter your choice:" answer
echo
case $answer in
Y|y)
echo yes;;
N|n)
echo no;;
*)
echo "Please input Y or N";;
esac
read 从键盘读入一行,把各个字段赋给相应变量
answer 指定变量,可以随意定义
-n 指定输入字符的个数,达到个数自动结束输入
-p 提示信息
echo 向控制台输出字符串
格式 echo [-n]字符串
-n 输入字符串后不换行
字符串可加引号,也可以不加引号(多空格变单空格)
case expr in #expr为表达式,关键词in不要忘记!
pattern 1) #匹配哪个执行哪个,注意括号
commands 1
;;# 跳出case结构
pattern 2)
commands 2
;;
......
*)#都不匹配执行这个
commands
;;
esac # 结束case,必须
#输入x,y两个整数,并比较大小 ex4if.sh
#!/bin/bash
#
echo -n "Please input x,y:"
read x y
# 确认x,y
echo "x=$x,y=$y"
if ((x>y)); then
echo "x is larger than y"
elif ((x>y)); then
echo "x is equal to y"
else
echo "x is less than y"
fi
-
脚本程序的运行
方法1,直接运行,使用缺省版本的Shell运行脚本程序
方法2,使用某个特定版本的Shell执行脚本
$ bash first_script,表示这里用bash来执行,运行结束后返回原理的Shell
方法3,在脚本文件首行指定Shell
/#!/bin/bash, #!必须顶格,后接Shell全路径(可从/etc/shell获取所有可用Shell及其绝对路径)
系统调用
操作系统内核为应用程序提供的服务和函数
系统调用
-
系统调用的特点
一般涉及核心资源或硬件的操作
运行于核态
每个系统调用具有位移的编号:ID
调用过程会产生中断:自愿中断
Dos利用INT 21h中断实现系统调用 | |
---|---|
01:程序终止 | 39:建立子目录 |
02:键盘输入并回显 | 3A:删除子目录 |
03:显示输出 | 3B:改变当前目录 |
04:异步通信输入 | 3C:建立文件 |
... | ... |
08:键盘输入无回显 | 3F:读文件 |
09:显示字符串 | 40:写文件 |
... | ... |
- Linux利用EAX寄存器接受系统调用号
- 隐式系统调用,类似API函数,在高级语言中使用,包含 “INT 80h”中断指令,执行相应的系统调用