西北大学unix期中作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux程序设计期中考试
一、给出完成下列各项功能所需要得Linux系统命令。
要求:给出实现这一功能得完整命令;
不能给出完整命令可以仅给出所需要得命令名称.必须陈述利用了这个命令得哪个功能或
选项。
(每题6分,共30分)
1、统计出由用户test创建并且正在运行得进程数目。
在计算机上给出相应得结果
2、假设命令cat /proc/net/arp得执行结果如下:
IPaddress type Flags HW address Mask Device
192、168、0、50 0x1 0x2 00:AD:32:70:00:20*e
th0
192、168、0、1 0x1 0x200:0F:3D:1E:4A:89 * eth0
192、168、0、21 0x1 0x2 00:13:20:56:75:E7 * eth0
192、168、0、38 0x1 0x2 00:0F:1F:52:EF:F6 *e
th0
要求设计一个命令去掉上述输出中得表头,并且仅列出IP地址与MAC地址得对应关系,期
望得输出结果如下所示。
192、168、0、50 00:AD:32:70:00:20
192、168、0、1 00:0F:3D:1E:4A:89
192、168、0、21 00:13:20:56:75:E7
192、168、0、38 00:0F:1F:52:EF:F6
将计算机接入网络,从不同ip地址得计算机使用ping向该计算机发送数据包,先查瞧相
应得/proc/net/arp文件,再要求设计一个命令去掉上述输出中得表头,并且仅列出
IP地址与MAC地址得对应关系.在计算机上给出相应得结果。
3、程序文件fexc、c约有30行,保留了一个备份fexc0、c后,另个程序员在fexc、
c中作了多处修改,如何找出她在原先程序得基础上作了哪些修改?
先构造fexc、c,再备份fexc、c得到fexc0、c,然后修改fexc、c。
在计算机上给
出相应得运行结果.
4、检索目录src以及其子孙目录中得所有文件名后缀为、c与、h文件,查找哪些文件中含有字符串TPDU,并列出在这文件中得行号。
在计算机上给出相应得运行结果。
5、在命令行方式下,加入U盘,使用mount与umount命令对其进行操作;
(1)查瞧系统地硬盘与硬盘分区情况;
(2)建立一个目录用来作挂节点;之后便可以访问U盘了;具体执行过程如下图所示:
二、简答题与编程题(共40分)
1、(10分)B-shell中得局部变量与环境变量有什么区别?脚本文件myenv、sh得内容如下:
MAXSIZE=100000
export MAXSIZE
执行、/myenv、sh后,就是否会在Shell中创建环境变量MAXSIZE? 为什么?
在计算机上给出相得运行结果。
B—shell中得局部变量与环境变量得区别就是:局部变量仅在创建它得Shell中有效,环境变量对创建它得Shell及其派生出来得子进程都有效。
就就是说当前shell下启动得子进程只继承环境变量,不继承局部变量.但就是环境变量对其它与创建它得She ll没有关系得Shell并不可见。
在执行、/myenv、sh后shell终止后,环境变量被释放,不会在当前shell中创建环境变量。
2、(10分)下列得脚本程序从键盘输入三个整数A,B,C,并且求出A*(B+C)得值.
在划线出填入适当得内容,完成整个程序。
显式地标出您所添加得命令中必须有得空格与转义字符,并解释为什么必须这些空格与转义。
#!/bin/sh
echo –n ”Input A:”; read A
echo –n ”Input B:”; read B
echo –n ”Input C:”; read C
V= `expr$A \* \( $B + $C \)`
echo "A*(B+C)=$V"
在计算机上给出相应得运行结果。
横线上填`expr$A \*\( $B + $C \)`;
由于星号与圆括号属于shell得元字符,所以前面增加反斜杠,阻止shell队员字符得处理,而就是将这些符号直接传递给expr命令,上述命令一共需要6个空格,空格起单词分界线得作用。
如果忽视了相应得空格,expr命令将无法得到争取得参数输入,导致expr无法按预期得功能工作.
3、(10分)shell脚本程序countsh代码如下:
#!/bin/bash
count=$#
cmd=echo
while [$count〉 0]
while [$count –gt 0]
do
cmd=”$cmd \$$count “
count =` expr $count – 1 `
done
eval $cmd
问题:(1)指出该脚本程序得错误;
(2)分析脚本程序countsh得功能;
(3)给出脚本程序countsh赋予文件主以执行权限得命令;
(4)给出、/countsh abcdefgh得输出结果
在计算机上给出相应得运行结果。
(1)、该脚本得错误就是while后面得条件判断表示错误,需用规定得比较格式以便shell把它们处理成内部命令;
(2)、$#就是B-shell内置变量,表示命令行参数个数,题中命令行有三个参数,这样count得初值就是3,循环结束时,cmd得内容为echo $3 $2 $1。
Shell将$cmd进行变量替换后,变为echo $3$2 $1;最后一行eval为shell内部命令,将eval得实参作为shell得输入读入,在经过一轮变量替换,文件名生成.替换后,执行所得到得命令.此脚本程序得功能就是逆向输出输入得字符串数组。
(3)、脚本程序countsh赋予文件主以执行权限得命令就是chmod u+x countsh;(4)、输出结果为ab cd ef gh
4、(此题共10分)假设在当前目录/home/test/src下执行如下命令,将会得到相应得结果:
~$tty
~$echo $?
然后设下面得脚本程序文件名为ttysh:
#!/bin/bash
expr `tty`:、\*
expr `tty`:'/dev/tty\(、*\)'
termno = ` expr \`tty\` : ’/dev/tty\\(、*\\)’ `
echo $termno
expr `tty` : /dev/tty\\(、\*\\\)
termno = `expr \`tty\` :/dev/tty\\\\\(、\\*\\\\\\)`echo $termno
unit = 100
expr "$unit” :"、*"
expr`pwd` : '、*/\([^/]*\)$
问题:(1)给出echo $?得输出结果;
(2)找出脚本程序中得错误,给出正确得结果;
(3)将该脚本设置为文件主与同组用户有执行权限;
(4)分析该脚本程序ttysh得执行结果.
在计算机上给出相应得运行结果。
(1)
(2)脚本程序中得错误主要就是空格与转义得使用.对于程序第2、3行得“:”两侧需添加空格,第4、7、9行得“="两侧应无空格,第6、7行得“(”左侧少一个转义。
根据第一
问执行tty指令得结果,程序中得“/dev/tty”字段应修改为“/dev/pts/”,正确代码为:
运行结果为:
(3)修改权限命令为
(4) 该脚本程序执行结果如下图,由输出得结果中第一行得10就是tty所对应得字符串“/dev/pts/2”得长度;之后得几行空字符串就是因为“/dev/pts/2"与后面得字符串不匹配,所以输出空字符串;之后输出得3就是unit得值即100得长度3;然后输出得lenovo当前工作目录中得操作者用户得名字。
三、制作ramdisk,建立多引导分区,添加ramdisk引导,要求使用lilo命令进行lil o、config配置文件得重配置,并要求使用ramdisk对系统进行引导。
(30分)
在计算机上给出相应得运行结果.
1、创建ramdisk挂载点
mkdir frx
2、创建并初始化ramdisk,块大小为2k,总容量为8M
dd if=/dev/zero of=ramdisk bs=1kcount=8192
3、格式化为ext2得文件系统
mke2fs —F -v -m 0 ramdisk
4、查瞧一下ramdisk得文件系统类型
5、将ramdisk挂载到frx上
mount-o loop ramdisk frx/
具体得操作过程如下图所示:
使用命令df –k来查瞧所建立得ramdisk,如下图所示:。