1、全国自考操作系统(Shell 程序设计)模拟试卷 1 及答案与解析一、单项选择题1 下面的符号中,错误的 IO 转向符号是_。(A)(B)(C)(D)2 表示命令行所有位置参数的 Shell 变量是_。(A)$*(B) $?(C) $(D)$13 Shell 解释双引号中的字符时,没有特殊含义的字符是_。(A)$(B)(C) (D)*4 Shell 查找命令时在文件系统中的查找路径的 Shell 变量是_。(A)HOME(B) PATH(C) PS1(D)CDPATH5 一组管道线命令的出口状态是它的_命令的出口状态。(A)第一个(B)最后一个(C)任何一个(D)所有6 _命令先对其参数进行代
2、换和求值,然后就当它们是 Shell 程序一部分那样执行代换后的命令串。(A)test(B) expr(C) eval(D)exec7 Linux 中的可由用户配置的登录初始化文件是_。(A)bash_profile(B) profile(C) bashrc(D)login二、填空题8 一个命令行可包含多个用_分开的一组简单命令,称为命令表。9 Shell 向用户提供了改变程序输入输出方向的手段,即输出转向符_、附加输出转向符_和输入转向符_。10 Shell 提供了用_符号连接两个命令的“管道 ”符。11 在 Shell 中,可以改变特殊字符含义的符号有_、_、_、_和_。12 在 Shel
3、l 参数变量中,_是位置参量的个数。13 Shell 解释双引号中的字符时,有几个字符还存在特殊的含义,它们是_。14 用符号组_分隔两个 Shell 命令,只有在前一个命令执行成功后才执行后一个命令。15 _命令,使当前 Shell 直接执行参数所指定的 Shell 程序,而不是产生子进程执行该程序。三、简答题16 按下列 echo 输出值将相等的各归为一类:aecho $ xbecho $ xcecho “$ x“decho $ xeecho($x)f echo $x )g echo$ xhecho $ x 。17 Shell 的点命令的功能是什么?它与 exec 命令有什么区别 ?四、综
4、合题18 编一个 Shell 程序 picknlsh,其具有三个位置参数,第一个位置参数为字符串模式,第二个位置参数为目录名,第三个位置参数为最大的搜索层数。该程序在参数 2 指定的整个目录树中对所有的 C 程序和头文件搜索参数 1 指定的字符串模式,并输出该模式的文件名和所在行号。最大的目录搜索深度由参数 3 指定。参数 1 和参数 2 都不可省略,如参数 3 省略,只搜索指定目录这一层。例如:picknl string dir 3 表示在 dir 目录树的 C 程序和头文件中搜索模式 string 的字符串,最大的搜索深度限制为 3 层。19 编写一个 shell 程序 showlevel
5、sh,以层次号和缩进格式显示命令行参数目录和参数目录下的全部文件和子目录,如目录参数省略,则显示当前目录的层次结构。五、判断题20 Shell 是 UNIX 核心与用户之间的接口。( )(A)正确(B)错误21 用户能在 Shell 命令处理器上再运行另一个 Shell 命令处理器。( )(A)正确(B)错误22 用后台方式运行的程序从终端上读入数据的语句,应当采用输入转向方式。( )(A)正确(B)错误23 $HOME 是用户定义 Shell 变量。( )(A)正确(B)错误24 用户可以直接修改 Shell 状态变量的值。( )(A)正确(B)错误25 Shell 测试语句如满足测试条件返
6、回真值,其返回值为 0。( )(A)正确(B)错误26 expr“$val“*3 是一个合法的 Shell 求值语句。( )(A)正确(B)错误27 Shell 函数允许递归调用。( )(A)正确(B)错误28 在 UNIX 中,不仅能在 C 程序中通过系统调用向进程发送信号,也能通过命令行向进程发送信号。( )(A)正确(B)错误全国自考操作系统(Shell 程序设计)模拟试卷 1 答案与解析一、单项选择题1 【正确答案】 C【知识模块】 Shell 程序设计2 【正确答案】 A【知识模块】 Shell 程序设计3 【正确答案】 D【知识模块】 Shell 程序设计4 【正确答案】 B【知识
7、模块】 Shell 程序设计5 【正确答案】 B【知识模块】 Shell 程序设计6 【正确答案】 C【知识模块】 Shell 程序设计7 【正确答案】 A【知识模块】 Shell 程序设计二、填空题8 【正确答案】 ;【知识模块】 Shell 程序设计9 【正确答案】 、【知识模块】 Shell 程序设计10 【正确答案】 |【知识模块】 Shell 程序设计11 【正确答案】 、“、“【知识模块】 Shell 程序设计12 【正确答案】 $#【知识模块】 Shell 程序设计13 【正确答案】 $,单、双引号和用于命令替换的反撇号【知识模块】 Shell 程序设计14 【正确答案】 &【知
8、识模块】 Shell 程序设计15 【正确答案】 点“ ”【知识模块】 Shell 程序设计三、简答题16 【正确答案】 (1)a、c、d(2)b、g(3)e(4)f(5)h【知识模块】 Shell 程序设计17 【正确答案】 点() 命令(或 source 命令)使当前 Shell 读入并直接执行参数所指定的 Shell 程序,而不是产生子 SheU 执行该程序。当多个 Shell 命令必须共享一组Shell 变量时,用“” 命令就显得特别有效。其调用格式是:shell_program当在当前 Shell 中执行一个 Shell 程序时,该 Shell 程序对 Shell 变量、环境变量的改
9、变不会影响调用它的父 Shell。但如果需要达到这个目的,就要用点“?”命令执行Shell 程序。例如,要修改 UNIX 用户登录后要执行的环境文件$HOMEprofile,如在修改了执行文件查找路径 Shell 环境变量 PAAH 后,并希望在本次会话期间立即起作用,单执行:$profile是不行的,而要用点“ ”命令执行:$profileexec 也是内部命令,用它执行程序的方法是exec program但它是用被调用的程序覆盖当前执行的程序的方法执行参数指定的程序。用 exec 命令执行,可减少程序运行时所占的空间,当控制不需要返回到原执行程序时可用 exec 命令。exec 所执行的程
10、序可以是 Shell 程序、UNIX 命令,也可以是其他的二进制可执行程序。【知识模块】 Shell 程序设计四、综合题18 【正确答案】 程序清单 21-2 的 Shell 程序在第二个位置参数指定的目录树下的C 程序和头文件中搜索模式第一个位置参数指定的字符串模式,最大的搜索深度限制为 3 层。程序清单 21-2:picknl sh#!binsh#picknlshif$#-1t2;thenecho“parameter error“exitfiif$#-eq3;thenlevel=$3elselevel=1 参数 3 缺省fiif$level-ge1;then #搜索最后一层cd$2for
11、i in*ch;do 对于目录中的每一个 C 文件和头文件grep-Hn$1$i #搜索参数 1 指定的字符串模式,并印出文件名和行号donefor i in*;do #对于目录中的每一项if-d$i;then #如是目录( 通过创建子进程执行cd$ilevel=texpr $level-1 #搜索层数减 1picknlsh$1$level #递归调用, picknlsh 所在的目录要处于查找路径中 (在环境变量 $PAAH 中定义)fidonefi。【知识模块】 Shell 程序设计19 【正确答案】 程序清单 21-4 的 showlevelsh 在初始化后通过调用递归的 Shell程序
12、showlsh 实现本题功能。程序清单 21-4:showlevel sh#!binshexport levelif test$#-eq 0;thenshowlevelshelseif!(test-d$1); thenecho Usage:$0 direxit 1else #不能放在 if 外,否则当执行默认目录时,#退出时多执行一次,会死循环level=0showlsh $1fifi#showlshexport levelif test-d $i;theniv=$1evelwhile test$lv-gt 0;do #打印缩进空格echo-n“ “iv=expr $lv-1doneecho
13、$level:$i #输出层号和目录名(cd $ilevel=expr $level+1for j in*;doshowlsh $j #递归调用 Shell 过程done)elseiv=$levelwhile test$iv-gt 0;do #输出层号和文件名echo-n“ “iv=expr $lv-1doneecho $level:Si。【知识模块】 Shell 程序设计五、判断题20 【正确答案】 B【试题解析】 UNIX 核心与上层的接口只有系统调用,Shell 是用户与应用层的界面。【知识模块】 Shell 程序设计21 【正确答案】 A【试题解析】 例如,可以在 BShell 的命令
14、解释器 sh 上再运行 csh,退出 csh 后,又回到 sh。用户也可以编写自己的 Shell 命令解释器,并在当前 Shell 上运行它,在它的控制下工作。【知识模块】 Shell 程序设计22 【正确答案】 A【知识模块】 Shell 程序设计23 【正确答案】 B【试题解析】 是系统定义的 Shell 变量。【知识模块】 Shell 程序设计24 【正确答案】 B【知识模块】 Shell 程序设计25 【正确答案】 A【知识模块】 Shell 程序设计26 【正确答案】 B【试题解析】 应当写成 expr“$val“*3,因为“*”是首先由 Shell 解释的特殊字符,故要使用转义符“”,让 Shell 不要解释它,而由 expr 解释它。【知识模块】 Shell 程序设计27 【正确答案】 A【知识模块】 Shell 程序设计28 【正确答案】 A【知识模块】 Shell 程序设计
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1