Linux编程基础:1~4章复习题(下) | 您所在的位置:网站首页 › linux编程基础课后习题答案 › Linux编程基础:1~4章复习题(下) |
目录 一、单选题 二、判断题(对的打“√”,错的打“×”) 三、填空题 四、简答题 一、单选题1. 为了达到使文件的所有者有读(r)和写(w)的许可,而其他用户只能进行只读访问,在设置文件的许可值时,应当设为(B)。 A、566 B、644 C、655 D、744 2. 在vi编辑器中的命令模式下,键入(A)可在光标当前所在行下添加一新行。 A、o B、i C、a D、A 3. 要改变文件的拥有权,使用命令(B)。 A、chgrp B、chown C、chsh D、chmod 4. 已知某用户stud1,其用户目录为/home/stud1。如果当前目录为/home,进入目录/home/stud1/test的命令是(C)。 A、cd test B、cd /stud1/test C、cd stud1/test D、cd home 5. 怎样显示当前目录?(A) A、pwd B、cd C、who D、ls 6. 假设当前有一文件file1,其权限为rwxr--r--,则在以下命令中,哪个命令可以使该文件所属组拥有对该文件的执行权限?(D) A、chown g+x file1 B、chmod 644 file1 C、chmod o+x file1 D、chmod a+x file1 7. 在vi全屏幕文本编辑器中,在指令模式下键入哪条命令将实现文件的不保存强制退出效果(B)。 A、:q B、:q! C、:x D、ZZ 8. 一个文件的权限-rw-rw-r--,这个文件所有者的权限是(C)。 A、read-only B、write C、read-write D、read-write-execute 9. 从以下选项中选出GCC编译器的正确流程。(D) A、预处理、汇编、编译、链接 B、预处理、链接、汇编、编译 C、链接、预处理、汇编、编译 D、预处理、编译、汇编、链接 10.下面哪条命令可把./dir1目录(包括它的所有子目录)内容复制到./dir2中(D)。 A、.cp -i ./dir1/* ./dir2 B、cp -P ./dir1/* ./dir2 C、cp -d ./dir1/* ./dir2 D、cp -r ./dir1/* ./dir2 11.(D)命令是在vi编辑器中执行存盘退出。 A、:q B、ZZ C、:q! D、:wq 12.下列哪个选项可以测试file是否是普通文件?(B) A、test [-d file ] B、test [ -f file ] C、test [ -d file ] D、test [ -s file ] 13.在下列命令中,不能显示文本文件内容的命令是(D)。 A、more B、less C、tail D、join 14.下列变量名中有效的shell变量名是(C)。 A、-2-time B、_2$3 C、trust_no_1 D、 2004file 15.Linux包含了一个名称是(C)的调试程序,它是用来调试C或C++程序的强力调试器,它使用户能在程序运行时观察程序的内部结构和内存的使用情况。 A、gcc B、make C、gdb D、autoconf 16.下面哪条命令可用来使shell变量变为一个全局变量(D)。 A、alias B、exports C、exportfs D、export 17.不是shell具有的功能和特点的是(C)。 A、管道 B、输入输出重定向 C、执行后台进程 D、处理程序命令 18.在一个bash shell脚本的第一行上应加入下面所示中的哪一条语句(D)。 A、#/bin/csh B、#/bin/bash C、/bin/bash D、#!/bin/bash 19.下列选项中,不属于ifconfig命令作用范围的是 (D) 。 A、配置本地回环地址 B、配置网卡的IP地址 C、激活网络适配器 D、加载网卡到内核中 20.假如在脚本中定义了如下的变量: var="hello itheima" 那么下列哪个选项可以成功打印变量var的值itheima?(C) A、echo "var" B、echo 'var' C、echo "$var" D、echo '$var' 21.关于shell脚本中的函数的说法,正确的是(D) A、在shell脚本中定义函数时,可以使用function关键字,也可以不使用 B、函数名后的括号可以省略 C、若函数中不使用return关键字设置返回值,则函数返回其中最后一条命令的执行结果 D、以上各选项都正确 22.在Linux中,下面哪一条命令可更改普通用户为超级用户(B)。 A、super B、su C、tar D、passwd 23.使用标准输出重定向符(>),比如―>file01‖将会导致文件file01中的数据被(C)。 A、复制 B、移去 C、覆盖 D、打印 24.在Linux中,系统管理员(root)状态下的提示符是(B)。 A、$ B、# C、% D、> 25.下列对shell变量FRUIT操作,正确的是(C)。 A、为变量赋值:$FRUIT=apple B、显示变量的值:fruit=apple C、显示变量的值:echo $FRUIT D、判断变量是否有值:[ -f ―$FRUIT‖ ] 26.为了将当前目录下的压缩归档文件myftp.tar.gz解压缩,我们可以使用(A)。 A、tar -xvzf myftp.tar.gz B、tar -xvz myftp.tar.gz C、tar -vzf myftp.tar.gz D、tar -xz myftp.tar.gz 27.在以下选项中选出实现打印当前路径下所有文件名的命令。 (C) A、ls –l B、ls C、ls –a D、ls –i 28.下列哪个选项是用于条件判断的命令?(B) A、expr B、test C、let D、if 29.Linux文件权限一共10位长度,分成四段,第三段表示的内容是(C)。 A、文件类型 B、文件所有者的权限 C、文件所有者所在组的权限 D、D.其他用户的权限 30.关于命令连接符“;”的说法中,正确的是?(A) A、使用“;”运算符间隔的命令,会按照先后次序依次执行 B、使用“;”运算符间隔的命令,会将前一个命令的输出作为后一个命令的输入 C、使用“;”运算符间隔的命令,只有前一个命令执行成功后,后一个命令才会执行 D、使用“;”运算符间隔的命令,只有前一个命令执行失败后,后一个命令才会执行 31.Linux命令行是由(D)提供的。 A、 管道 B、 分层结构文件系统 C、 文本处理器 D、 shell 32.利用(B)命令,可以把一大堆的文件和目录打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输时非常有用的。 A、gzip B、tar C、cd D、ls 33.下面关于基本组和附加组的说法,错误的是。 (B) A、若用户被创建时没有指定用户组,系统会为用户创建一个与用户名相同的组,这个组就是该用户的基本组。 B、可以在创建用户时,使用选项-G为其指定基本组。 C、为用户组指定附加组,可以使该用户拥有对应组的权限。 D、用户可以从附加组中移除,但不能从基本组中移除。 34.一个文件名字为rr.gz,可以用来解压缩的命令是(B)。 A、tar B、gzip C、bzip2 D、uncompress 35.假设Linux系统中不存在文件newfile,现要创建一个新文件newfile,以下哪个命令无法实现该功能?(D) A、vi newfile B、touch newfile C、cp file /itheima/newfile D、cd /itheima/newfile 36.若需要在当前终端上顺序执行命令,则应使用下列哪个符号连接?(A) A、; B、| C、&& D、|| 37.命令“2>&1”表示的含义是?(A) A、将标准错误输出重定向到标准输出 B、将标准错误输出重定向到标准输入 C、将标准输出重定向到标准错误输出 D、将标准输入重定向到标准输出。 38.退出交互模式的shell,应键入(C)。 A、^d B、^q C、exit D、quit 39.根据文件路径来改变文件权限使用系统调用是(B)。 A、chown B、chmod C、fchmod D、fchown 40.假设当前有两个用户组group1、group2,有三名用户usr1、usr2、usr3,其中usr1、usr2属于用户组group1,usr3属于用户组group2。假设用户usr1使用“touch file”命令创建了一个文件file,并将该文件的权限设置为654。找出以下关于用户与文件的说法中错误的一项。(C) A、usr1、usr3对文件file有读权限。 B、usr1、usr2、usr3对文件file有读权限。 C、usr1、usr3对文件file有写权限。 D、usr2对文件file有执行权限。 41.在Linux shell中,下面哪个变量代表的是shell程序命令的程序文件名(C)。 A、$# B、$* C、$0 D、$$ 42.下面各选项中关于用户切换命令su和sudo的说法,正确的是。(A) A、su和sudo都用于切换用户身份,相比之下,sudo命令更加安全。 B、使用su命令切换用户时需要知道当前用户的密码。 C、使用sudo命令切换用户时需要知道待切换用户的密码。 D、即便当前用户为root用户,切换用户时也必须输入用户密码。 43.在给定文件中查找与设定条件相符字符串的命令为(A)。 A、grep B、gzip C、find D、sort 44.在Linux中,要求将文件mm.txt的所有使用者的文件执行权限删除。则下面所示命令中,哪一个是错的(B)。 A、chmod a-x mm.txt B、chmod o-x mm.txt C、chmod -x mm.txt D、chmod ugo-x mm.txt 45.字符设备文件类型的标志是(B)。 A、p B、c C、s D、l 46.当使用vi编辑一个文件时,在指令模式下,下面哪条命令能复制当前行的内容到剪贴板中(C)。 A、cc B、dd C、yy D、Ctrl+c 47.从以下四个选项中,选出能成功将标准错误重定向到file文件中的选项。 (D) A、gcc hello.c 2>file 48.下列哪个选项不能将标准输出重定向到file文件中?(C) A、cat /etc/passwd 1>file B、cat /etc/passwd >file C、cat /etc/passwd 0>file D、cat /etc/passwd >>file 49.下列各选项中哪个选项不属于Vi编辑器的工作模式?(A) A、视图模式 B、插入模式 C、底行模式 D、命令模式 50.若要将如下命令合并为一个命令: ls -l /etc >tmp.txt grep init < tmp.txt 可使用哪个符号连接?(A) A、| B、|| C、& D、&& 二、判断题(对的打“√”,错的打“×”)51.Shell脚本编程中,获取命令行输入的命令是read。(√) 52.gzip命令既能用于压缩文件,又能对压缩包解压缩。(√) 53.ls -l命令只打印当前路径下所有文件的文件名。(×) 54.在Linux系统中,可通过对sudoers文件进行配置以提升用户权限,该文件可使用vi编辑器直接打开,因此用户可直接对该文件进行编辑。(×) 55.grep命令的功能是在文件中搜索与字符串匹配的行并输出。(√) 56.使用sudo命令提升用户权限后,用户可一直使用目标用户执行操作,直到使用exit命令退出特权模式位置。(×) 57.GCC编译器的编译流程依次为:编译、汇编、预处理、链接。(×) 58.chmod命令用于更改文件或目录的所有者。(×) 59.用户可以从附加组中移除,也可从基本组中移除。(×) 60.执行脚本的方法有两种,一种是赋予该脚本执行权限,直接执行脚本;另一种是将该脚本文件作为一个参数,通过shell解释器对其进行解析。(√) 61.Shell最重要的功能是命令解释器,Linux系统中的所有可执行文件都可以作为Shell命令来执行。(√) 62.若以普通用户进入Shell,则命令提示符为“$”;若以管理员身份进入Shell,则命令提示符为“#”。(√) 63.同一台Linux主机上可同时登陆多个用户。(√) 64.Shell脚本编程中,用于输出变量或提示信息的命令是echo。(√) 65.Vi编辑器的三种工作模式间可直接相互切换。(×) 66.Linux系统中的用户分为超级用户和普通用户,超级用户具有管理员权限,普通用户只拥有部分权限。(×) 67.若用户被创建时没有指定用户组,系统会为用户创建一个与用户名相同的组,这个组就是该用户的基本组。(√) 68.使用su命令切换用户时需要知道当前用户的密码。(×) 69.为用户组指定附加组,可以使该用户拥有对应组的权限。(√) 70. 使用sudo命令切换用户时,要求当前用户须有使用待切换用户身份的权限,该权限在/etc/sudoers文件中设置,用户可通过vi命令打开该文件,并对其进行编辑。(×) 71.使用vi编辑器创建并编写的脚本文件,在保存后可以./file.sh的格式直接执行。(×) 72.Shell脚本编程中,在使用echo命令打印变量时,使用单引号或双引号引起变量,对打印结果没有影响。(×) 73.可以在创建用户时,使用选项-G为其指定基本组。(×) 74.在Shell脚本中,定义在函数内部的变量是一个局部变量,函数执行结束后,该变量便会被销毁。(×) 75.su和sudo都用于切换用户身份,相比之下,su命令更加安全。(×) 76.使用“&”连接符连接的命令,其前后命令的执行遵循逻辑与关系,只有该连接符之前的命令执行成功时,后面的命令才会被执行。(×) 77.使用test[ -d file]语句可测试文件file是否为目录。(×) 78.默认情况下创建文件的用户即为文件所有者,也可在创建文件的同时指定其他用户为文件所有者,或在文件创建后通过高级用户变更所有者。(√) 79.cat < file命令的功能是将cat命令打印的结果重定向到文件file中。(×) 80.awk是一个文本提取器,它可以从指定文本中按项提取信息。(√) 81.Shell编程中,使用“;”连接符可连接需顺序执行的命令。(√) 82.使用“||”连接符连接的命令,其前后命令的执行遵循逻辑与关系,只有该连接符之前的命令执行成功时,后面的命令才会被执行。(×) 83.若要在Shell中定义一个环境变量,可使用关键字export实现。(√) 84.使用sudo命令切换用户时需要知道待切换用户的密码。(×) 85.即便当前用户为root用户,切换用户时也必须输入用户密码。(×) 86.使用su命令由普通用户切换到目标用户时,需要输入当前用户的密码。(×) 87.除基本组外,用户所在的组都是附加组。为用户指定附加组,可以使用户拥有对应组的权限。(√) 88.使用su命令从当前用户(itcast)切换到itheima用户时,使用的命令为“su –itheima”,输入命令后须再输入用户itheima的密码,方能成功切换用户。(×) 89.用户可以从附加组中移除,但不能从基本组中移除。(√) 90.Shell的原意为“壳”,它包裹在内核之外,处于硬件与内核之间其主要功能为接收用户输入的命令,找到命令所在位置,并加以执行。(×) 三、填空题91.Linux系统中建立新目录的命令是【mkdir】。 92.vi编辑器的配置信息保存在用户家目录的【.vimrc】文件中,该文件是一个【隐藏】文件,用户可通过编辑该文件来配置vi编辑器。 93.【ls -a】命令可打印当前路径下所有文件的文件名。 94.在vi编辑环境下,使用【ESC】键可以转换为命令模式。 95.whoami命令的功能是【获取当前有效的用户名】。 96.为脚本程序filename指定执行权的命令及参数是【chmod a+x filename】。 97.增加一个用户的命令是【useradd】 。 98.Vi编辑器中的【插入】模式和【底行】模式之间不能直接切换。 99.为了达到使文件的所有者有读(r)和写(w)的许可,而其他用户只能进行只读访问,在设置文件的许可值时,应当设为【644】。 100.Linux操作系统秉持“一切皆文件”的思想,将其中的文件、设备等通通当做文件来操作和处理,因此,文件处理与管理命令是Linux系统中最基础的命令。常用的文件处理与管理命令有:【ls】、【pwd】、【touch】、【mkdir】、【cp】等。 101.Linux命令的运行环境是【shell】,它是一种命令解释器,在用户和操作系统之间提供了一个交互接口。 102.Linux系统中的输入输出分为三类,分别为:【标准输入】、标准输出和【标准错误】。 103.使用【man】命令可查看Linux系统中的帮助文档——manpage中的帮助信息。 104.在Linux操作系统中,【.】表示当前目录,【..】表示上一级目录,这两个目录文件都是【隐藏】文件。 105.Linux系统中的用户大体上可分为三组,分别为:【管理员】、普通用户和【系统用户】。 106.touch命令的主要功能是更改文件的时间戳,除此之外,该命令还可以【创建新文件】。 107.Linux 系统通过【write】和【wall】命令给其他用户发消息。 108.编写的Shell程序运行前必须赋予该脚本文件【执行】权限。 109.Linux文件权限一共10位长度,分成四段,第三段表示的内容是【文件所有者所在组的权限】。 110.【cp -r ./dir1/* ./dir2】命令可把./dir1目录(包括它的所有子目录)内容复制到./dir2中。 111.使用su或sudo命令切换用户后,使用【exit】命令可退出目标用户。 112.将前一个命令的标准输出作为后一个命令的标准输入,称之为【管道】。 113.Linux是一个基于命令行的操作系统,Linux命令中的选项分为【长选项】和【短选项】。 114.在使用su命令切换用户时,由普通用户切换到目标用户,需要输入【目标】用户的密码,由root用户切换到其它用户时,可以不输入密码。 115.管道就是将前一个命令的【标准输出】作为后一个命令的【标准输入】。 116.shell不仅是用户命令的解释器,它同时也是一种功能强大的编程语言。【bash】是Linux的缺省shell。 117.当执行gcc –c hello.c 2 > file命令时,系统会将执行命令时的【错误信息】输出到文件file中。 118.在使用GDB工具调试程序时,按键【b】可以设置断点,【info】命令可查看断点。 119.条件判断是条件语句的核心,Shell中通常使用【test】命令或【[】命令对条件进行判断,这两个命令判断的条件可以是命令或脚本。 120.在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入【:w test.txt】。 四、简答题121.简述GCC编译器的工作流程,并说明每步执行的内容。 GCC的编译过程分为四个步骤,分别是预处理、编译、汇编和链接。预处理阶段主要处理源代码中以&LDQUO;#&RDQUO;开头的预编译指令和一些注释信息;编译阶段GCC会对经过预处理的文件进行语法、词法和语义分析,确定代码实际要做的工作,若检查无误,则生成相应的汇编代码文件;汇编阶段将编译后生成的汇编代码转换为机器可以执行的命令;链接的过程是组装各个目标文件的过程,在这个过程中会解决符号依赖和库依赖关系,最终生成可执行文件。 122.vim有几种工作模式?各模式可实现什么功能? VI编辑器的工作模式分为命令模式、插入模式和底行模式,其中命令模式可执行光标移动、删除、复制、粘贴等操作;插入模式可实现文本编辑操作;底行模式可实现退出、查找等功能。 123.什么是shell?Linux的shell主要有哪几种类型? SHELL是一个用户接口,是一个命令解释器,除此之外,SHELL命令本身还可以作为程序设计语言,将多个SHELL命令组合起来,编写能实现系统或用户所需功能的程序。 SHELL类型:BASH,BSH,CSH,TCSH,KSH,ASH,ZSH。 124.在用户user的主目录下新建目录software,并将路径/etc下所有以h开头的文件及目录拷贝到software中,用命令实现上述过程。 MKDIR /HOME/USER/SOFTWARE; CP /ETC/H* /HOME/USER/SOFTWARE 125.举例说明cat、more和less命令的用法。 CAT命令可以把多个文件连接后输出到标准输出(屏幕)或加 ―> 文件名‖输出到另一个文件中。如显示当前目录下文件TESTFILE1的内容可用如下命令:CAT TESTFILE1。 MORE命令显示文本文件的内容,一次显示一屏,满屏后停下来,可按键继续。如显示/ETC/PROFILE文件的内容,每屏10行可用如下命令:MORE -10 /ETC/PROFILE。 LESS命令与MORE命令相似,分屏显示文件的内容。LESS命令允许用户向前(PAGEUP)或向后(PAGEDOWN)浏览文件。如文件/ETC/PROFILE中查找字符串―HOSTNAME‖,并从该字符串后显示可以如下命令:LESS -P HOSTNAME /ETC/PROFILE 126.简述gdb的功能。 GDB是LINUX系统中一个功能强大的GNU调试程序,它可以调试C和C++程序,使程序开发者在程序运行时观察程序的内部结构和内存的使用情况。GDB提供如下功能: (1)运行程序,设置所有的能影响程序运行的参数和环境; (2)控制程序在指定的条件下停止运行; (3)当程序停止时,可以检查程序的状态; (4)修改程序的错误,并重新运行程序; (5)动态监视程序中变量的值; (6)可以单步逐行执行代码,观察程序的运行状态; (7)分析崩溃程序产生的CORE文件。 127.shell中都有哪些引号,他们之间的区别是什么? 在SHELL中引号分为三种:单引号,双引号和反引号。 单引号 (') 由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后也会失去原有意义,而只作为普通字符解释。 双引号(")由双引号括起来的字符,除$、\、&LSQUO;、和‖这几个字符仍是特殊字符并保留其特殊功能外,其余字符作为普通字符对待。 反引号(`)反引号括起来的字符串被SHELL解释为命令,在执行时,SHELL首先执行该命令,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。 128.编写shell脚本实现如下菜单界面: Menu 1) exit 2) edit file 3) date 4) calc #?脚本实现如下: #!/BIN/BASH ECHO "MENU" SELECT VAR IN "EXIT" "EDIT FILE" "DATE" "CALC" DO BREAK DONE ECHO "YOUR CHOOSE IS $VAR." EXIT129.在Linux下有一文件列表内容如下: lrwxrwxrwx l hawkeye users 6 jul 18 09:41 nurse2→nurse1 要完整显示如上文件类别信息,应该使用什么命令? ls -l 130.使用Vi编辑器编写程序并执行,要求程序可向终端打印字符串。 该习题可在计算机中实现,具体操作步骤如下: ①使用VI命令创建并打开文件HELLO.C; ②使用按键I进入插入模式,在文件中编写如下代码: #INCLUDE INT MAIN() { PRINTF(&LDQUO;HELLO ITCAST.\N&RDQUO;); RETURN 0; }③使用按键ESC进入底行模式,输入&LDQUO;:WQ&RDQUO;保存文本并退出。 ④在命令行使用GCC编译器编译该文件,所用命令为:GCC HELLO.C &NDASH;O HELLO。 ⑤在命令行执行可执行文件,所用命令为:./HELLO。执行后打印结果如下: HELLO ITCAST. 131.简单说明Vi编辑器的工作模式,并画图说明各模式间的切换方法。 VI编辑器的工作模式分为命令模式、插入模式和底行模式,其中命令模式可执行光标移动、删除、复制、粘贴等操作;插入模式可实现文本编辑操作;底行模式可实现退出、查找等功能。图示参考教材图2-1。 132.写出shell脚本中while循环与until循环的基本格式,并简述这两种循环结构的区别。 WHILE循环的语法格式为: WHILE [ 表达式 ] DO &HELLIP; DONEUNTIL循环的语法格式为: UNTIL [ 表达式 ] DO &HELLIP; DONEWHILE和UNTIL的区别在于:WHILE会先进行表达式判断,若表达式满足,才执行循环体,直到表达式不满足为止;而UNTIL则会先执行循环体,再进行表达式判断,直到表达式不成立时,才结束循环。UNTIL循环至少会执行一次。 133.分析以下脚本代码: #!/bin/bash sum=0 for(( i=1; i |
CopyRight 2018-2019 实验室设备网 版权所有 |