Linux考试试卷评讲(4)

4.现在告诉你sed s/abc/def/可以把标准输入中``abc''替换成``def''并输出到标准输出
,find . -name "*" -exec cat "{}" \;,会显示当前目录及子目录下所有文件内容。

请写一个脚本,把当前目录及子目录下*.txt的文件中的abc替换成def。(提示,cat a.tx
t | sed s/abc/def/ >a.txt并不会如你预期的起作用。因为在读取a.txt文件之前,a.tx
t的内容已经被清空了)
评讲:Unix/Linux体系下非常强调各个工具的配合,本题就是考察大家打组合拳的能力,
遗憾的是只有2个人做对,而且用的还不是我期望的方法,看样子大家离领悟Linux思想的
精髓还差的很远很远。

find . -name "*" -exec cat "{}" \;
这句话非常的简单,就是从当前路径(.)寻找(find)所有文件(-name "*"),并在每个文件
上执行(-exec)cat操作(cat "{}"\。
而题目的要求是寻找当前路径下所有文件,把每个文件的内容进行关键字替换。因此,首
先写一个脚本来完成这个关键字替换的任务:

replace.sh:
cat $1 | sed s/abc/def/ > $1.tmp
mv -f $1.tmp $1

replace.sh这个脚本接收一个参数,并把他用sed替换后写成另一个文件,然后把它覆盖回
原来的文件名。
接下来就是find . -name "*" -exec ./replace.sh "{}" \;。

5.请你谈一下什么是make,它是如何工作的。
评讲:很多同学都说make使用来编译程序的,这就没说到点子上。make用于处理具有树型
依赖特征的任何事情,编译项目程序仅仅是具备这个特征的应用之一。例如有人就用make
加速Linux的启动速度,因为Linux启动需要运行一大堆的配置脚本,而这些脚本之间都有
相互依赖的关系。

6.请谈一下你所了解的开源项目中常用的License。
评讲:License的问题也许在学校并不突出,但是一旦进入公司工作,尤其是在外企,就必
须小心了。这方面在第九课我做了简单的介绍,主要是GPL,LGPL,BSD License,Public
Domain等License的区别与共同点,此外还有当几个License出现冲突是会怎么样等等。


7.你认为这堂课对你有何帮助?
评讲:本题还是灌水题,并且我也很想了解大家对本课的认识情况,并从大家的评价中了
解学习的程度。大部分人的评价都是没有学到具体的东西。我在第一节课一开始就说过,
大学的任务是让你认识到世界之大,而不是像中学那样按照书本一点点的学知识点,而且
10天的时间也不允许我讲具体的东西。因此本课主要目的是,给不想学Linux的人送学分,
让不了解Linux的人引发学习的兴趣,让想学习Linux的人树立正确的哲学观,对有一定基
础的人树立整体框架结构,而对真正想在某个方面深入的人提供课后与我交流的途径。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/835e40460eebed6346801814f80a3e2f.html