LINUX 第四章课后编程题答案

合集下载

Linux课后编程题答案

Linux课后编程题答案

3.综合题(1)试分别用grep、sed和awk实现:删除文件ifile中以#开始的注释行,并将结果输出的文件ofile;解:grep -v "^#" ifilesed "/^#/d" ifileawk '!/^#/ { print $0 }' ifile(2)设计一个菜单shell程序,要求:①捕获信号1、2、3、15;②当在循环中,当收到信号后在终端上显示:“Received Signal #”,其中#为收到的信号编号。

解:方法有多种,下为其一。

trap "echo I received siganl 1" 1 # 捕获信号1trap "echo I received siganl 2" 2 # 捕获信号2trap "echo I received siganl 3" 3 # 捕获信号3trap "echo I received siganl 15" 15 # 捕获信号15echo "PID: $$" # 显示PIDwhile true # 循环doread x # 读一字符串。

#同时等待信号,此时可通过^C、^\等交互产生信号2和3# 或从其它终端通过kill -Signal PID发来信号if [ -z "$x" ]; then break; fi # 空串时跳出循环,结束程序done。

程序捕获信号1、2、3和15,按回车结束。

(3)设有shell程序内容为:pkg="dhcp"; x=`rpm –qa | grep $pkg`if [ ! -z $x ]; then echo "Package: $pkg has been installed! " else rpm –ivh ${pkg}* #假设程序$pkg的内容在当前目录内存在 fi试写出程序的功能和执行的可能结果。

Linux 操作系统1-5章习题参考答案

Linux 操作系统1-5章习题参考答案

[a-zA-Z]{5}.*[0-9]$ /*
13 假设文件名为 a,属性显示-rwxr- - r- -,说明文件类型是 普通文件
,文件的权限 文件主读写执行,
其它用户只读 ,如果想让所有用户可以执行该文件,使用命令
chmod a+x a
。(采用数字设定法,则命令为 chmod 755 a )
14 假设当前目录下有个子目录 ms,该子目录下有文件 f.c、 k.c、 子目录 d,将文件 f.c 拷贝到上一级目录下
在任何目录下执行这个脚本文件时不加路径就可以执行这个命令,则需要如何实现(4) 需要将路径/home/sfj/bin
加入环境变量 PATH 中 (最好加入当前路径 . ,也就是 PATH=$PATH:.)
9. 如果一个脚本文件名为 kk,执行时需要敲入参数,假设敲入 ./kk 1 2 3, 则对这个程序而言,$0
8. 在目录/home/sfj/bin 下写好脚本后(假设文件名为 abc),权限为-rw- r - - r- -, 为了让脚本可以执行,需要敲
入什么命令(1) chmod +x abc 。如果想执行当前目录下的这个脚本文件(不需要参数),一般需要敲入命令
(2) ./abc 。如果当前目录是/home,则想执行脚本文件 abc,则需要敲入命令 (3) /home/abc 。 如果想
。 在主目录范围内查找 。
17 将光驱挂载到/mnt/kk 目录下,使用的命令为 mount –t iso9660 /dev/cdrom /mnt/kk
18 为何有些 Linux 系统可以使用 mount /dev/cdrom 命令完成光驱的挂载 因为在配置文件
/etc/fstab 中添加了设置(比如添加一行:/dev//mnt/cdrom iso9660 noauto,exec,ro 0 0),则敲入

LINUX第四章课后编程题答案

LINUX第四章课后编程题答案

LINUX<<4.9>>编写一个shell脚本,它把第二个位置参数及其以后的各个参数指定的文件复制到第一个位置参数指定的目录中。

#!/bin/bashdir=$1 /初始化shift /参数向左移while [ $1 ] /循环dofile=$1 / 初始化,赋值现在位置的参数1cp $1 $dir /将现位置参数1中的值复制到目录中shift /参数左移donels $dir 显示指定目录中的列表运行:bash 代码名称要移动的目录要移动的文件《4.10》编写一个shell脚本,显示当天日期,查找给定的某用户是否在系统中工作。

如果在系统中,就发一个问候给他。

#!/bin/bashdate/显示日期ifwho |grep "^$1"/寻找用户thenwrite $1 << ! /对用户发消息!echo "hello !"fi运行:bash vi编辑的文件<<4.11>>打印给定目录的某些文件,由第一个参数指出文件所在的目录,其余参数是要打印的文件名#!/bin/bashdir=$1cd $ dirshiftfor f in $@;docat $fdone运行:bash 程序代码名称目录名称文件名称<<4.12>>利用for循环将当前目录下的(*.c)文件移到指定的目录下,并按文件大小排序,显示移动后指定目录的内容。

#!/bin/bashfor file in `ls -l /root/a | grep ".*.c"` (Tab键上面的`){mv /root/a/$file /root/b}ls -lS /root/b运行:bash vi创建的文件<<4.13>>利用数组形式存放10个城市的名字,然后利用for循环把他们打印出来。

#!/bin/bashfor xahar in kaxkar tumxuk aksu kumul hotan atux alar turpan urumqi altaydoecho $xahardone运行:bash 程序代码名称《4.14》编写一个shell脚本,求斐波那契数列的前10项及总和。

《Linux操作系统及应用技术》习题参考答案

《Linux操作系统及应用技术》习题参考答案

第4章习题1.进入和退出vi 编辑器的方法有哪些?参考答案:a.进入vi编辑器的方法:在系统提示符下,输入命令vi 和想要编辑(建立)的文件名,便可进入vi。

a)退出vi编辑器的方法:“:wq”的功能是把编辑缓冲区的内容写到指定的文件中,以退出编辑器,回到shell 状态下。

b)其操作过程是,先输入冒号(:),再输入命令wq,然后按Enter 键。

以下命令的操作方式均与其相同。

c)“:ZZ”的功能是仅当对所编辑的内容做过修改时,才将缓冲区的内容写到指定文件上。

d)“:x”的功能与“:ZZ”相同。

e)“:q!”的功能是强行退出vi。

感叹号(!)告诉vi,无条件退出,不把缓冲区中的内容写到文件中。

2.vi 编辑器的工作方式有哪些?相互间如何转换?参考答案:vi 编辑器有三种工作方式,即命令方式、输入方式及ex 转义方式。

当输入命令vi 后,进入vi 编辑器时,就处于vi 的命令方式。

通过输入vi 的插入命令(i)、附加命令(a)、打开命令(o)、替换命令(s)、修改命令(c)或取代命令(r)即可以从命令方式进入到输入方式。

为使用ex 转义方式,可输入一个冒号(:)。

3.建立一个文本文件,将光标移至第5 行。

分别用c、C 和cc 命令进行修改。

参考答案:略。

4.在vi 编辑器之下,将光标上、下、左、右移动的方式有哪些?参考答案:在键盘的右下方有 4 个表示方向的方向键,利用它们可以在输入方式下移动光标。

每按一次“上”、“下”方向键,光标即相应地移动一行;每按一次“左”、“右”方向键,光标即在当前行上相应地移动一个字符位置。

当光标位于行首(或行尾)时,又按下“左”方向键(或“右”方向键),系统会发出“嘟嘟”声,并且返回到命令方式。

5.vi 编辑器中复制一行文字并粘贴到另一位置用什么命令?参考答案:复制命令yy 或Y,然后用命令:p或shift+h。

6. 进入vi 编辑器时,如果希望进入后,光标位于文件中的第9 行上,应该输入什么命令?参考答案:按8次j命令;7.不管文件中的某一行被编辑了多少次,总能把它恢复成被编辑之前的样子,应使用什么命令?参考答案:U8.要将编辑文件中的所有的字符串s1 全部用字符串s2 替换,包括在一行多次出现的字符串,应使用的命令格式是什么?参考答案:R9.使用vi 编辑器在目录里创建一个文本文件,然后输入一篇英文文章,并练习使用各种编辑命令。

Linux第四章作业答案

Linux第四章作业答案

第四章 Linux编程作业参考答案一,AWK命令行应用1)处理/etc/passwd文件a)打印第一列(userid)提示:awk -F 分隔符‘{print $第几列}’fileb)打印root用户的1,2 field2)打印用户home目录下所有文件的:owner和文件名(只打印这两列)提示:使用ls -l 和 awk3)打印所有登录本机器的ip,并去掉重复。

提示:使用last,awk,sort,uniq二,AWK完整流程创建order文件 (商品名,数量,单价)apple 20 6.5orange 10 8grape 7 12berry 5 32输出格式 awk -f order.awk order (参考employee.awk)name count price (表头)apple 20 6.5...=================== (表尾)order.awkBEGIN{print "name\tcount\tprice"; OFS="\t"}{print $1,$2,$3}END{print "=========================\n"}三,AWK变量,计算使用order文件 (商品名,数量,单价)apple 20 6.5orange 10 8grape 7 12berry 5 32输出格式:awk -f order2.awk ordername count price total...Number of item: Total count: Order total price:order2.awkBEGIN{print "name\tcount\tprice\ttotal"; OFS="\t"; total=0; totalCount=0;} {totalCount += $2;total += ($2 * $3);print $1, $2, $3, $2*$3}END{printf "Number of item: %d, Total count: %d, Order total price: %.2f\n", NR, totalCount, total}四、AWK donation作业Mike:Harrington:(510) 548-1278:250:100:175Christian:Dobbins:(408) 538-2358:155:90:201Susan:Dalsass:(206) 654-6279:250:60:50Archie:McNichol:(206) 548-1348:250:100:175Jody:Savage:(206) 548-1278:15:188:150Guy:Quigley:(916) 343-6410:250: 100:175Dan:Savage:(406) 298-7744:450:300:275Nancy:McNeil:(206) 548-1278:250:80:75John:Goldenrod:(916) 348-4278:250:100:175Chet:Main:(510) 548-5258:50:95:135Tom:Savage:(408) 926-3456:250:168:200Elizabeth:Stachelin:(916) 440-1763:175:75:300donation2.awkBEGIN{FS=":"; total = 0; max = 0; i = 0;print " *** FIRST QUARTERLY REPORT *** ";print " *** CAMPAIGN 2000 CONTRIBUTIONS *** ";print "-------------------------------------------------------------------------------";printf("%20s %15s %8s %8s %8s %15s\n", "NAME","PHONE", "Jan", "Feb", "Mar", "Total Donated");print "-------------------------------------------------------------------------------";}{name=$1 " " $2;subtotal=$4+$5+$6;total = total + subtotal;if (subtotal > 500) { names[i] = name; phone[i] = $3; lastToIndex[$2 $3]=i; i++}if (subtotal > max) { max = subtotal; max_name=name; max_first=$1;}printf("%20s %15s %8.2f %8.2f %8.2f %15.2f\n", name, $3, $4, $5, $6, subtotal);}END{print "-------------------------------------------------------------------------------";print " SUMMARY"print "-------------------------------------------------------------------------------";printf ("The campaign received a total of $%.2f for this quartar.\n", total); printf ("The average donation for the %d contributors was $%0.2f.\n", NR, total/NR);printf ("The highest total contribution was $%0.2f made by %s.\n", max, max_name);printf (" *** THANKS %s***\n", max_first);printf ("The following people donated over $500 to the campaign.\n");printf ("They are eligible for the quarterly drawing!!\n");printf ("Listed are their names (sorted by last name) and phone numbers:\n");len=asorti(lastToIndex, sortname);for (i = 1; i <= len; i++) {ii = lastToIndex[sortname[i]];printf (" %s--%s\n", names[ii], phone[ii]);}printf (" Thanks to all of your continued support!!\n");}运行结果:五、Shell 变量写一个脚本weather.sh,完成下面功能:外部定义环境变量:export weather=”Sunny”输入What’s your name? (echo, read)Which city do you live? (echo, read)输出:Hi “名字”,the weather of “城市” is“定义的weather”执行脚本:chmod u+x weather.sh; ./weather.sh外部定义局部变量weather1, 使用source执行?#!/bin/bashread -p "What's your name?" nameread -p "Which city do you live?" cityecho "hi $name, the weather of $city is $weather. Local weather is $weather1."六、Shell String pattern match创建一个脚本:ip_match.sh用户输入一个string,判断是否是IPv4地址yes: 输出This is an IPv4 addressno: 输出Wrong address提示: IPv4 regex: ([0-9]{1,3}\.){3}[0-9]{1,3}#!/bin/bashpattern='([0-9]{1,3}\.){3}[0-9]{1,3}'echo "Input a string"read strif [[ $str =~ $pattern ]]; thenecho "This is a ipv4 address: $str"elseecho "Wrong address! $str"fi七、Shell 文件条件判断输入:please input a file name:逻辑:如果文件已经存在:the file already exites不存在,新建一个空文件,名字为输入的string。

Linux系统应用与开发教程所有课后习题和答案

Linux系统应用与开发教程所有课后习题和答案

《Linux系统应用与开发教程》所有课后习题和答案第1章? Linux概述 (1)第2章? shell及常用命令 (4)第3章? vi编辑器的使用 (7)第4章? X Window系统的使用 (9)第5章Linux系统的常用软件 (11)第6章硬件管理 (11)第7章? 网络基本配置 (12)第8章? 常用网络服务的配置和使用 (15)第9章? 系统管理与监控 (19)第10章Linux系统的安全管理 (21)第11章shell程序设计 (24)第12章gcc的使用与开发 (26)第13章gtk+图形界面程序设计 (27)第14章Qt图形界面程序设计 (28)第15章集成开发环境KDevelop的使用 (31)第1章?Linux概述1.什么是Linux?Linux是一套免费使用和自由传播的类UNIX操作系统,源代码开放,能运行于各类硬件平台,包括Intel x86系列和RISC处理器。

这个系统是由世界各地成千上万的程序员设计和实现的。

其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。

2.Linux有哪些特性?(1)开放性(2)多用户(3)多任务(4)良好的用户界面(5)设备独立性(6)丰富的网络功能(7)可靠的系统安全(8)良好的可移植性3.Linux与Windows操作系统的主要区别是什么?(1)从发展的背景看,Linux是从一个比较成熟的操作系统发展而来的,而其他操作系统,如Windows等,都是自成体系,无对应的相依托的操作系统(2)从使用费用上看,Linux是一种开放、免费的操作系统,Windows是封闭的系统,需要有偿使用。

(3)Linux上丰富的应用软件也是自由的,而在Windows下,几乎所有的软件都有独立的版权,需要购买使用,即使某些软件可以免费使用,也一般不提供其源代码,更不用说由用户修改扩充其功能了。

(4)Windows对硬件配置要求高,而Linux在低端PC系统上仍然可以流畅运行4.Linux与Unix的共同点与不同点是什么?共同点:由于Linux是从Unix发展来到,它遵循Unix开放标准,基本支持同样的软件、程序设计环境和网络特性,可以说Linux是UNIX的PC版本,Linux在PC机上提供了相当于UNIX工作站的性能。

自己整理的Linux课后习题

自己整理的Linux课后习题

自己整理的Linux课后习题第一章认识linux系统1.简述linux系统的应用领域。

请问:liunx系统的应用领域主要牵涉四个方面:应用服务器、嵌入式领域、软件开发以及桌面应用领域,linux的长处主要是服务器和嵌入式两个领域。

2.详述linux系统的特点。

答:1.开放性、2.多用户、3.多任务、4.良好的用户界面、5.设备独立性、6.丰富的网络功能、7.可靠的系统安全、8.良好的可移植性。

3.简述linux系统的组成。

请问:linux系统通常存有4个主要部分:内核、shell、文件系统和应用程序。

4.详述linux和windows系统的区别与联系。

答:共性:1.都是多用户操作系统,2.支持多种文件系统,3.支持多种端口设备,4.支持联网功能,5.都提供服务。

区别:1.应用领域目标相同,2.图形界面化相同,3.文件扩展名相同,4.再次鼓励功能相同,5.命令区分大小写。

5.简述有哪些主流的linux发行版本。

答:1.mandriva2.redhat3.suse4.debian5.ubuntu6.gentoo7.slackware8.redflag6.简述fedora8系统的新特性。

请问:1.代莱fedora订制spins2.pulseaudio3.codecbuddy4.代莱外观5.代莱图形化防火墙布局工具system-config-firewall6.已进一步增强的打印机管理工具system-config-printer答:1.cpu:pentium31g以上。

2.内存:安装linux系统一般需要256mb内存。

3.硬盘空间:若要安装所有软件包,需要有6gb左右硬盘空间。

4.显示器和显卡5.dvd光驱。

8.在你的计算机上计划一个合理的分区方案。

请问:1./boot分区:用以放置与linux系统启动及有关的程序2./usr分区:用以放置linux系统中的应用程序。

3./var分区:用以放置linux系统中经常变化的数据以及日志文件。

Linux系统及编程基础习题答案

Linux系统及编程基础习题答案

Linux系统及编程基础习题答案第1章Linux基础及安装1. 什么是Linux?Linux是一款优秀的计算机操作系统,支持多用户、多进程、多线程,实时性好,功能强大且稳定。

同时,它又具有良好的兼容性和可移植性,被广泛应用于各种计算机平台上。

作为Internet的产物,Linux 操作系统由全世界的许多计算机爱好者共同合作开发,是一个自由的操作系统。

2. Linux的主要特点是什么?Linux具有UNIX的所有特性并且具有自己独特的魅力,主要表现在以下几个方面:(1)开放性(2)多用户(3)多任务(4)出色的稳定性能(5)良好的用户界面:Linux向用户提供了两种界面:用户界面和系统调用界面。

(6)设备独立性:设备独立性是指操作系统把所有外部设备统一当作文件来看,只要安装它们的驱动程序,任何用户都可以像使用文件那样操作并使用这些设备,而不必知道它们的具体存在形式。

(7)丰富的网络功能:完善的内置网络是Linux的一大特点,Linux在通信和网络功能方面优于其他操作系统。

其他操作系统不包含如此紧密的内核结合在一起的联接网络的能力,也没有内置这些联网特性的灵活性。

而Linux为用户提供了完善的、强大的网络功能。

(8)可靠的安全性(9)良好的可移植性:可移植性是指将操作系统从一个平台转移到另一个平台,使它仍然能按其自身的方式运行的能力。

3. Linux的主要组成包括什么?(1)Linux内核(Kernel):内核(Kernel)是系统的心脏,是运行程序和管理硬件设备的内核程序,决定着系统的性能和稳定性,实现操作系统的基本功能。

(2)Linux的Shell:Shell是系统的用户界面,提供用户与内核进行交互操作的一种接口。

Shell是一个命令解释器,它解释由用户输入的命令并且把他们送到内核执行。

Shell编程语言具有普通编程语言的很多特点,用这种编程语言编写shell程序与其他应用程序具有同样的效果。

(3)Linux 文件系统:文件系统是文件存放在磁盘等存储设备上的组织方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LINUX
<<4.9>>编写一个shell脚本,它把第二个位置参数及其以后的各个参数指定的文件复制到第一个位置参数指定的目录中。

#!/bin/bash
dir=$1 /初始化
shift /参数向左移
while [ $1 ] /循环
do
file=$1 / 初始化,赋值现在位置的参数1
cp $1 $dir /将现位置参数1中的值复制到目录中
shift /参数左移
done
ls $dir 显示指定目录中的列表
运行:bash 代码名称要移动的目录要移动的文件
《4.10》编写一个shell脚本,显示当天日期,查找给定的某用户是否在系统中工作。

如果在系统中,就发一个问候给他。

#!/bin/bash
date /显示日期
if
who |grep "^$1" /寻找用户
then
write $1 << ! /对用户发消息

echo "hello !"
fi
运行:bash vi编辑的文件
<<4.11>>打印给定目录的某些文件,由第一个参数指出文件所在的目录,其余参数是要打印的文件名
#!/bin/bash
dir=$1
cd $ dir
shift
for f in $@;
do
cat $f
done
运行:bash 程序代码名称目录名称文件名称
<<4.12>>利用for循环将当前目录下的(*.c)文件移到指定的目录下,并按文件大小排序,显示移动后指定目录的内容。

#!/bin/bash
for file in `ls -l /root/a | grep ".*.c"` (Tab键上面的`)
{
mv /root/a/$file /root/b
}
ls -lS /root/b
运行:bash vi创建的文件
<<4.13>>利用数组形式存放10个城市的名字,然后利用for循环把他们打印出来。

#!/bin/bash
for xahar in kaxkar tumxuk aksu kumul hotan atux alar turpan urumqi altay
do
echo $xahar
done
运行:bash 程序代码名称
《4.14》编写一个shell脚本,求斐波那契数列的前10项及总和。

4-14
#!/bin/bash
a=1
b=1
echo –n –e "$a\t$b"
let "n=a+b"
count=4
while [ $count –gt 0 ]
do
let "a=a+b"
let "b=b+a"
echo –n –e "\t$a\t$b"
let "n +=a+b"
let "count=count-1"
done
echo
echo "The sum is $n"
运行:bash vi创建的文件
《4.16》显示前面所执行的40个命令的清单,重新执行倒数第5条命令。

编写其中一条命令,然后执行。

运行:history 40
#!-5
<<4.17>>定义一个别名命令,它等价的功能是:显示当前日期和工作目录,并列出有多少用户在系统上工作。

#!/usr/bin/bash
echo $(date)
echo $(pwd)
who | wc -w
运行:bash 代码名称
《4.18》设计一个程序cuts,它由标准输入读取数据,获取由第一个参数n和第二个参数m所限定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包括这两个字符)。

#!/usr/bin/bash
read line;
expr substr "$line" $1 $2 ;
运行:bash vi创建的文件1 3
再次输入abdukader
意思是用第一个字开始连续输出三个字
结果:abd。

相关文档
最新文档