Unix系统编程期中考历次上机实验复习

LAB1
1.c语言定义字符串的中括号是加在变量名后边的
char str[10]="hello"

2.联合编译:

gcc 程序1.c 程序2.c -o 目标程序名

3.搜索etc目录下所有以“pa”开头的文件,并拷贝到目标目录中

cp -r /etc/pa*  目标路径

4.在vi编辑器中显示行号:
在vi编辑器中输入::set number
取消行号::set nonumber

5.用vi编辑器,执行下述操作,并详细说明操作过程及方法。
1)删除第5,15和25行指令:

这个需要三行指令:
:25d
:15d
:5d
要从后往前删,是因为从前往后删有这么一个问题:比如先把第5行删了,那么原来的第10行
就变成了第9行,容易出错,所以要从后往前删。

2)将文本中所有的”etc”替换为”config”:
:%s/etc/config/g
3)复制第11~20行的内容,并且贴到文件最后一行之后:

:11,20 co 34
把指定行的内容移到指定位置的指令是:x,y co z,其中x,y,z分别是被拷贝文本的起始行、
被拷贝文本的结束行和目标行数。我的文件的最后一行行号是34,所以贴到文件最后一行之
后,就是贴到34行之后

4)然后将光标移动至文件最后:

有两步指令:
1)shift+g(没有冒号,这一步是移到文件最后一行行首)
2)shift+4(没有冒号,这一步是从最后一行行首移到行末,从而使光标移动到文件末尾)

5)将每行开头第一个字符”#”删除:

:%s/^#/

6)删除包含有字符串”conf”的那几行:

 :g/conf/d

7)在第一行新增一行,输入你的姓名,学号:

先将光标移动到第一行,然后输入大写O(输入小写o则是向下插入),然后就可以在第一行
向上插入一行并进入插入模式从而可以输入自己的信息。

8)文件另存为new-inittab.conf:

 :w new-inittab.conf



LAB02
1.more指令一般是个管道有关,比如用more指令查看A文件的内容:
cat A|more

2.让你真正了解chmod和chown命令的用法

chown -R jhon:project   /tmp/srv

这个命令就是把这个目录中的所有文件的所有者和组更改为用户jhon和用户组project。

3.chmod 770 相应目录
这是在根据数字修改权限,r=4,w=2,x=1,每组的权限为上面三个相加,比如权限为[-rwxrwx---],那么对应的权限便为770



LAB03
1.若要在shell脚本中用expr来计算,那要将整个算式用"`"括起来,比如:

在这里插入图片描述
这里还要注意一点,$a$b它们两个都和加号之间要用一个空格隔开


2.expr的使用有比较多的坑,所以建议使用let。下面是用shell实现计算斐波那契第17项的值:

#!/bin/sh
i=3
a=1
b=1
c=0
while [ $i -le 17  ]
do
        let c=a+b
        let a=b
        let b=c
        ((i+=1))
done
echo " 17th=  "$c
exit 0

3.在终端中输入expr计算算式时,记得在算子和运算符之间加一个空格,比如:

在这里插入图片描述
如果不加空格的话,只会原样输出算式:
在这里插入图片描述


4.case语句里面的每个选项是以双分号结尾的:
在这里插入图片描述
5.case分支的注意事项:
1)除了默认选项(就是最后一个选项)外,其它选项都要以双分号结尾
2)和while、select一样,case结构需要有关键字来表示分支结束了,它是用关键字esac来表示分支结束

6.select分支的注意事项:
1)select语句实质上也是一个循环语句,若不添加break关键字,将无法跳出循环
2)select列表里各项需要用空格隔开,下列写法都是错的:“a”"b" ,"a","b",第一种写法相当于只有一个ab项,第二种写法相当于只有一个a,b

7.while,case,select三个结构都没有冒号


LAB04
1.对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失



LAB05
1.标志寄存器CF置1的条件:加法使得寄存器溢出,向高位进1;减法需要向高位借1.CF寄存器发生改变后,会在紧接着的adc指令中起作用。指令`adc ax,bx`实现的功能是`(ax)=(ax)+(bx)+cf`

2.所以想要实现进位功能的加法,一般流程都是这样子(反正我是这样写的):

mov bx,0
add ax,cx
add bx,bx

这样,ax存的就是低位数据,bx存的就是高位数据



LAB07
1.用int中断例程把字符串输出到光标位置上:

1)(把ah设置为2)用int 10h的2号子例程设置光标位置,并设置dh,dl的值(设置光标位置),设置bh的值(设置显示的页号)
2)(把ah设置为9)用int 21h 的9号子例程设置在光标处显示字符串,字符串的首地址存储在ds:dx中
3)记住,存储子例程序号的是ah,ah,ah,ah,ah!!!!!!!!!!!!!!!!!

2.用int中断例程把字符串输出到显存上:
1)准备工作:
哈哈i)设置ds:si指向源地址
哈哈ii)设置es:di指向目的地址
哈哈iii)设置cx为传输的长度
哈哈iv)设置传输方向为正:cld
哈哈v)开始传输:rep movsb
2)更改中断向量表,指向目的地址(这里要注意,更改完成以后就要用mov ax,4c00h 和 int 21h回到DOSBOX了,因为安装程序不需要执行中断例程)
3)编写中断例程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值