Linux习题答案

本文由用户“lj596385”分享发布 更新时间:2022-04-13 14:06:49 举报文档

以下为《Linux习题答案》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

第1章 系统简介

1. 思考题

(1)UNIX的大部分代码是用一种流行的程序设计语言编写的,这语言是什么?

解:参见1.1.1。

C语言。最初的Unix用汇编语言写成,应用程序用汇编和B语言混合编写。B语言小巧、实用,但作为系统编程语言还不够强大,所以,Dennis Ritchie给它增加了数据类型和结构后,于1971年起从B语言向C语言演化,1973年,C主体完成。Ken Thompson和D.M.Ritchie开始用C语言完全重写了UNIX。这是UNIX操作系统迈向成功之路的关键一步,也成为了“可移植操作系统”的开端。有了C语言之后,可移植操作系统“已经”变成了现实,以至于使得Unix可以被移植到几乎所有的硬件平台。

(2)UNIX系统的特点有哪些?

解:参见1.1.2。

多任务、多用户、并行处理能力、设备无关性、灵活性丰富的工具、强大的错误处理能力、强大的网络功能和开放性。

(3)什么是Linux?其创始人是谁?

解:参见1.2.1之3。

Linus Benedict Torvalds(林某某·本纳第克特·托瓦兹)。

(4)Linux操作系统的诞生、发展和成长过程始终依赖着的重要支柱都有哪些?

解:参见1.2.1。

UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。

(5)简述Linux系统的特点。

解:参见1.2.2.

Linux除具有Unix系统的特点之外,还具有以下特点:1、自由软件;2、良好的兼容性;3、良好的界面;4、丰富的网络功能;5、支持多种硬件平台。

(6)常见的Linux的发行版本都有哪些?

解:参见1.2.3之3或网络资源。

Linux现在的发行版本很多,比如RedHat(Fedora、CentOS、RHEL)、Debian、Ubuntu、Kubuntu、SUSE、Mandriva、DSL、KNOPPIX、PCLinuxOS、Slackware、Gentoo、红旗和优麒麟等。

2. 单项选择

(1)B;(2)C;(3)C;(4)B

第2章 系统入门

1. 思考题

(1)Linux系统有哪些运行级别?其含义为何?

解:参见2.3.2之1。

Linux系统有7个运行级或运行状态,分别是0~6,它们的含义如下:

0:关闭系统;

1:单用户或系统维护模式;

2:多用户模式,但没有NFS功能;

3:完全多用户模式;

4:没有使用,用户可自定义;

5:完全多用户模式,且支持X-Windows(系统默认运行级);

6:重新启动。

(2)Linux系统下经常使用的两种桌面环境是什么?

解:参见2.4。

Linux系统提供多种桌面环境,比如Mate、KDE、Cinnamon、Unity、GNOME Shell、Xfce和LXDE等,通常的Linux发行版都使用KDE或者GNOME作为默认的桌面环境。

用户可以选择安装和使用它们中的某一个。

红帽系统默认使用的是GNOME;Ubuntu从10.10后到16.10的版本中使用的是Unity,现在又回到了GNOME桌面。

(3)什么是X-Window系统?它有什么特点?

解:参见2.4。

图形界面(X-Window)就是在Linux操作系统中提供图形化用户界面,支持的视窗系统,也被称为X。X-Window的工作方式跟Microsoft Windows有着本质的不同。MS Windows的图形用户界面与操作系统本身紧密结合,成为操作系统的一部分;而X-Window并不是操作系统的一部分,它实际上只是在Linux操作系统上面运行的一个应用程序,可以不启动。换句话说,MS Windows的图形支持是内核级的,而Linux的X-Window则是应用程序级的。

X-Window的一个主要的特性就是它采用了“客户端-服务器”模式。其组成由X服务器(X Server)、X客户端(X Client)和通讯通道(Comunication channel)三部分组成,XServer和XClient可位于同一台主机上,也可独立地运行于同网络上的不同主机上。

X-Window只是一个框架,本身只定义了最基本的窗口功能,如建立窗口、鼠标控制和键盘输入等,实际上所有显示在X屏幕上的外观及控制等界面都要由窗口管理器(Window Manager)来管理。

(4)Linux默认提供几个虚拟桌面?如何将一个运行的应用程序从一个虚拟桌面移动到另一个虚拟桌面?

解:参见2.4.1之3及图2-12(说明:此题针对Gnome Classic环境来说的)。

Linux的GNOME桌面默认提供四个虚拟桌面。用户可以通过鼠标单击底部面板的“工作区切换区”,进行工作区切换区,选择“工作区(虚拟桌面)”。对于当前“工作区(虚拟桌面)”中的任务,可以右击任务的“标题栏”,在弹出的快捷菜单中选择“Move to Workspace Down(移到下一工作区)”或“Move to Workspace Up(移到上一工作区)”将当前应用程序从当前虚拟桌面移动到另一个虚拟桌面。

(5)如何进行本地登录和注销?

解:参见2.1.2和2.2.2。

①登录

登录可在图形和字符界面上分别或同时进行。在字符界面下需要输入正确的用户名,在图形界面下需要选择或输入正确的用户名,都要输入正确的密码。

需要提醒的是:由于密码是不可视的,做在字符界面下,输入密码无任何回显。

②注销

注销分为图形和字符界面。字符界面下可使用命令logout和exit,或快捷键^D。

图形界面,点击桌面右上角顶部面板的最右侧的/或/按钮,然后点击“关机按钮/”或“Shut Down”,在此菜单界面中选择“注销(Log Out)”,会弹出的“注销”对话框,选择“注销”后即可从系统中退出返回登录界面,当然也可以选择“Cancel(取消)”取消操作。对于红帽的GNOME界面,在此之前可能还需要点击一下用户名。

(6)默认情况下,超级用户和普通用户的登录提示符分别是什么?

解:参见2.2.1之2。

在Unix/Linux系统中,默认情况下,root的提示符为“#”,一般用户的提示符为“$”。

(7)如何正确地关闭和重新启动Linux系统?

解:参见2.3。

因为UNIX/Linux采用了异步写和延迟写机制,大部分数据操作都在缓冲区内进行,并没有实时的写入设备,如果强行关机会导致数据丢失,严重者可造成系统瘫痪。因此在切断电源之前必须首先关闭系统,决不可断电了事。Linux系统关闭可以在字符或图形界面下进行。系统关闭命令之一是poweroff,重启去吧的命令之一是reboot(具体地,请参考2.3.1和2.3.3)

(8)如何获得命令帮助?man命令的作用是什么?

解:参见2.5。

UNIX/Linux系统比较规范,各种软件都有完整的开发和使用说明文档,用户可以通过多种渠道获得系统的帮助,比如,man、textinfo和yelp等。

man是传统UNIX系统的在线手册页,通过它用户可以获得在线帮助。

(9)如何获得Linux文档?

解:参见1.2.3之4及实验5。

可通过具体Linux系统的主站点或文档站点。比如,http://docs.fedoraproject.org/、http://doc.001pp.com.com/、https://access.redhat.com/documentation和https://help.ubuntu.com/等。

2. 选择题

(1)A、C;(2)A、D;(3)D、A;(4)A、B

第3章 shell与shell基本操作

1.思考题

(1)shell的基本功能有哪些?

解:参见3.1.1。

shell功能有六:命令解释执行、文件名及各种替换、I/O重定向、通信管道建立、系统环境设置和shell编程。

(2)Linux系统中的主要目录有哪些?各有什么作用?

解:参见3.1.4及图3-1。

/:系统的根目录。/dev:系统的设备目录。/etc:存放Linux系统和大部分应用软件的配置文件。/home:用户家目录所在的目录。/root:root用户的家目录。/lost+found:丢失文件的存放目录。/mnt:外部设备的挂装点,用于挂载设备文件。/boot:Linux的启动目录。系统内核文件,引导器Grub等存放在这里。/proc,/sys:伪文件系统目录。/usr:用户级目录。/tmp,/usr/tmp:临时目录。/sbin,/usr/sbin:系统级的命令与工具目录。/bin,/usr/bin:用户级的命令与工具目录。/usr/include:C语言,内核编译所需要的头文件存放目录。/lib,/usr/lib:库文件存放目录,其中有表态库和动态库。/lib64,/usr/lib64:64位库文件存放目录。/usr/src:Linux源代码目录,编译内核时使用。/var:通常用来存放一些经常变化的内容,比如各种网络服务的工作目录都在这里。/var/log:系统日志目录。/var/spool:存放邮件、新闻、打印队列任务等。/usr/share:存放共享使用的,比如各种共享或在线帮助等。

(3)工作目录及其父目录可分别用什么表示?

解:参见3.1.4。

一个目录文件内至少要有两个文件项:“.”-当前目录;“..”-上级目录。当前目录也叫工作目录。

(4)在如图3-1所示的目录结构中,若处在usr1目录中的用户要访问include目录中的stdio.h,可以采用什么样的路径,对应的带有路径的文件名是什么?

解:参见3.1.4。

相对路径:../../usr/include/stdio.h

绝对路径:/usr/include/stdio.h

从这个例子中,好像看到:相对路径与绝对路径复杂,其实并非如此。如果,要访问usr2目录中的file1,相对路径可表示为../usr2/file1,绝对路径表示为/home/usr2/file1。

(5)Linux系统中用于文件中的通配符有哪些?试举例说明它们的作用。

解:参见3.1.2.1之2)和表3-1。

这里所说的通配符主要是指shell用于文件名、路径匹配与搜索的通配符,与正则表达式中通配符不同。常用的通配符有“*”、“?”和括在方括号“[]”中的字符序列。

*:代表从它所在位置开始的任何字符串。默认情况下,“.”和路经名中的斜线“/”必须显式匹配。

?:代表它所在位置上的任何单个字符。

[ ]:每次只匹配“[]”中字符的一个,若[]中的首字符是“!”或“^”,则表示非运算。[]中还可使用-表示范围。

(6)常用的shell环境变量有哪些?怎么查询和设置环境变量?

解:参见3.1.8.2和3.3.1 1-2。

常用的shell环境变量可参见3.1.8之“2.环境变量”。环境变量可用命令env、export或set来查询或设置环境变量的值。比如,可用不带有任何参数和选项执行env、export和set,来显示所有的环境变量。还可以使用管道命令查询指定环境变量(比如PATH)的及其值,方法是

$ env | grep PATH

$ set | grep PATH

$ export | grep PATH

$ echo grep $PATH

(7)什么是 I/O 重定向?管道的功能是什么?试举例说明如何使用它们。

解:参考3.1.6和3.1.7。

当执行一个命令时,shell通常会自动为其打开三个标准流(文件):标准输入流、标准输出流和标准错误流。

I/O重定向(也称作改道)是指通过文件的形式实现标准I/O流。通过I/O重定向可以实现:输入重定向;标准输出重定向;标准错误的重定向和标准输出和标准错误同时重定向。示例如下:

$ wc /etc/passwd # 统计文件/etc/passwd的行、词和字符信息。或

$ wc < /etc/passwd # 标准输入重定向

$ ls > /tmp/dir.out # 覆盖方式。将当前目录信息重定向到文件/tmp/dir.out

$ ls /usr >> /tmp/dir.out # 追加方式,将/usr信息重定向追加到/tmp/dir.out

$ ls -l /home/w-w-w 2> /tmp/err.out # 将标准错误重定向到文件/tmp/err.out

$ cat /home/w-w-w 2>> /tmp/err.out # 将标准错误追加到文件/tmp/err.out

$ cat /tmp/err.out # 查看文件/tmp/err.out内容

$ ls -l -d / /home/w-w-w &> /tmp/err.out # 将标准输出和标准错误同时重定向到/tmp/err.out

$ ls -l -d /boot /home/w-w-w &>> /tmp/err.out # 将标准输出和标准错误同时追加到/tmp/err.out

$ cat /tmp/err.out # 查看文件/tmp/err.out内容

管道机制是在两个或多个进程之间建立一种连接,使得前一个命令的输出作为后一个命令的输入。管道机制常用于进程间的通信。示例如下:

$ ls -l /dev | wc -l # 统计设备目录/dev内有多少文件或子目录

$ cat /etc/passwd | grep "^root:" # 显示/etc/passwd行首root:的行

$ cat /etc/passwd | grep "root:" # 显示/etc/passwd内有包含root:的行

$ cat /etc/passwd | grep "root:"|wc -l # 统计/etc/passwd内有多少行包含root:

(8)shell中的引号有哪几种?各有什么作用?试举例说明之。

解:参见3.1.9.1。

在shell中有三种引号:单某某('),双引号(")和反单某某(`),前两者用于变量定义,后者用于命令替换。

①单某某

由单某某括起来的字符都作为普通字符。特殊字符用单某某括起来以后,也会失去原有意义。例如:

# string='$PATH' # 定义string变量,其值为'$PATH'

# echo $string # 显示变量的值:$PATH

②反单某某

反单某某的作用是命令替换。例如:

# x=`pwd` # 通过命令pwd替换定义变量x。pwd的功能是显示用户工作目录

# y=`whoami` # 通过命令whoami替换定义变量y。whoami的功能是显示用户名

# echo $x $y # 显示变量x和y的内容

③双引号

双引号的作用与单某某的功能基本一样,可用来定义变量,所不同的是在双引号内可进行变量替换和命令替换。示例如下:

$ myname=`whoami` # 通过命令替换定义变量myname

# #定义变量myself。注意使用了变量替换和命令替换

$ myself="I am a student, my uname is $myname and my work dir is `pwd`."

# #定义变量myself1。注意使用了继续行和转义字符

$ myself1="I am a student my uname is \"$myname\" and my work dir is \"`pwd`\""

$ echo $myself # 显示变量myself的值

$ echo $myself1 # 显示变量myself1的值

(9)什么是参数替换?什么是命令替换?试举例说明如何使用它们。

解:参见3.1.9之2。

参数替换主要是指命令行参数中的变量和命令等各种替换。设当前目录下有命令DispAllVar用于显示它自己的所有的命令行参数,变量x的值为“test parm”,则命令

# ./DispAllVar I am `whoami` the value of x is $x

的输出为:

I am root the value of x is test parm

甚至,还可以定义一个变量

D=DispAllVar

之后,程序的执行可简写为

# ./$D I am `whoami` the value of x is $x

在这里,程序名也可以是变量。

说明:程序DispAllVar可以由如下命令产生:

# echo 'echo $*' > DispAllVar; chmod +x DispAllVar

所谓命令替换,是指反单某某或$()内的内容将作为命令首先被执行,然后将命令的标准输出替换反单某某及其括号位置的信息。

$ x=`pwd` #通过命令pwd替换定义变量x。pwd的功能是显示用户的工作目录

$ y=`whoami` #通过命令whoami替换定义变量y。whoami的功能是显示用户名

$ MyVar=$(whoami) #通过命令whoami替换定义变量MyVar

# ./$D I am `whoami` the value of x is $x

(10)shell的种类有哪些?

解:参见3.1.11或网络资源。

UNIX/Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh或bsh)、Bourne again shell(bash),C shell(csh)、tc shell(tcsh)、Korn shell(ksh)和Z shell(zsh)等(可参见3.1.11或网络资源)。

(11)什么是别名?如何定义和取消别名?

解:参见3.3.2

别名可描述为是定义的用来替换命令名的字符串(的值)。可分别用alias和unalias定义和取消别名。示例如下:

$ alias li='ls -l -i ' #定义别名li,其功能为ls -l -i

$ alias l='ls -l ' #定义别名l,其功能为ls -l

$ unalias li #取消别名li

$ unalias -a #取消所有别名

(12)什么是主机名?如何进行主机名规划,如何设置主机?

解:参见3.3.3

主机名就是计算机的名字(计算机名),网络上就是根据主机名来识别主机。主机名有本地主机名和网络主机名之分。主机名本地主机名与网络主机名可以一致,也可以不一致。本地主机名可以自己设定,网络主机名必须统筹规划,一经定下,网络主机就不能随意改变,否则其它主机可能就找不到你了。比如河南***的网络主机名具有如下形式:

门户网站:www.hncj.edu.cn 图书馆:lib.hncj.edu.cn 移动门户:app.hncj.edu.cn

修改或设置主机名可以使用命令hostname和hostnamectl。也可以直接修改/etc/hostname,然后重启系统。

比如,若将主机名设置为app.hncj.edu.cn,可分别使用命令:

# hostname app.hncj.edu.cn #临时设置:重启后丢失 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 e内有以下语句:

SRC = f1.c f2.c f3.c

TGT = $(SRC:.c=.o)

SRC += f4.c

TGT= f1.o f2.o f3.o

SRC= f1.c f2.c f3.c f4.c



请完成填空。

3.综合题

阅读Makefile文件:

SRC = f1.c f2.c f3.c

TGT = $(SRC:.c=.o)

all : libmys.so

%.o : %.c

cc -fPIC -c $?

libmys.so : $(TGT)

cc -shared -o $@ $(TGT)

clean:

rm -f $(TGT)





回答以下问题:

(1)此Makefile文件的主要功能是什么?

(2)此Makefile文件包含多少个规则?它们分别是什么?

(3)使用此Makefile文件可以生成目标文件f2.o吗?为什么?

解:

(1)生成共享库libmys.so。

(2)4个。分别是all、%.o、libmys.so和clean。

(3)可以,因为“%.o : %.c”定义了由*.c生成*.o的方法。生成方法是 $ make f2.o

[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]

以上为《Linux习题答案》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览