您的当前位置:首页正文

Linux操作系统报告

来源:华佗健康网


Linux操作系统实验报告

学生姓名: 王颢

学 号: 20091001928

专 业: 通信工程 专业班级: 07509413

指导教师: 沈永珞

一、实验要求

1、 熟悉linux操作系统的基础命令及VI 编辑器的使用,上机操作命令及vi编辑器。

2、 掌握基础的Bash Shell编程操作,能够编写出实验要求中的程序。 3、 掌握GCC及调试工具GDB的使用,能够编写简单的Makefile文件。按要求完成实验内容。

二、实验内容

1、Linux基础操作及VI 编辑器的使用

① 系统启动后,新建“terminal”,进入命令交互模式。

Ubuntu-server 11.10为无图形界面系统,登陆后直接进入终端模式。 ② 分别运行命令“date”“cal”“pwd”“whoami”“uname”“ls -a”,观察结果。

结果如图:

③ 在当前登录用户根目录下新建工作目录“mywork”。

命令为$ mkdir mywork 演示结果如下图:

④ 拷贝当前登录用户根目录下的隐藏文件“.profile”到目录“mywork”中,并用自己的学号重新命名拷贝后的文件。

命令为$ cp ./profile ./mywork/075094 演示如下:

⑤ 进入工作目录“mywork”,并使用vi编辑器打开步骤4中已拷贝的文件075094,完成以下编辑操作:

a) 复制5遍该文档第一行内容

用vi打开文件;复制命令为$ yy ;粘贴命令为$ p ; 演示如下:

b) 然后新起一行并添加文字“TodayIsMonday”

命令为在命令模式下输入o新起一行添加内容。演示如下:

c) 在该文档所有行首添加内容“#MyViFile#”。

ctrl-v选中所有行首进行插入。或者在命令模式下输入:%S/^/#MyViFile#/ 现采用第二种方法,演示如下:

d) 将该文本中所有内容为“file”的文字替换为“CUG” 命令为:%s/file/CUG/g 演示如下:

e) 存档并退出 命令为:wq

⑥ 观察文档的不同用户的读写执行属性,然后修改成“-rw-rw-rw-”

查看命令为$ ls –l

计算可知rw权限转换成数字为6,所以修改权限的命令为$ sudo chmod 666 075094 演示如下:

⑦ 利用tar命令中的gzip功能将MyWork目录压缩打包为压缩文件MyWork.tar.gz,然后解压该压缩文件。

压缩命令为$ tar -zcvf MyWork.tar.gz ./MyWork 演示如下:

解压命令为$ tar -zxvf MyWork.tar.gz 演示如下:

2、Bash Shell 编程操作

1. 由于操作系统平台纵多,比如Linux,FreeBSD,Solaris等,编写shell脚本判断当前操作系统平台,并给与用户良好的文字提示。提示:使用`uname`命令。

程序如下:

#!/bin/sh

echo \"This systerm is `uname`.\"; 演示如下:

2. 输入任意个整数数字(单个数字小于1000),求他们的平均值,数值总和,最大数,最小数。并给与用户良好的文字提示。要求使用位置参数的shift操作。

程序如下: #!/bin/sh n=$# max=0 min=1000 sum=0 avrg=0

while [ 0 -lt $# ] #使用while循环 do

if [ $max -lt $1 ]; #使用if判断 then max=$1; fi

if [ $min -gt $1 ]; then min=$1; fi

let \"sum=($sum+$1)\" let avrg=$sum/$n shift done

echo \"===============\" echo \"the max is $max\" echo \"the min is $min\" echo \"the sum is $sum\" echo \"the avrg is $avrg\" echo \"===============\" 演示如下:

3. 计算并显示1到n的平方,其中n为用户输入的整数数值。 显示结果为: 1 4 9 16

程序如下:

#!/bin/sh

echo Please input a number: read n

echo -----------------------

for i in `seq $n` #使用for循环

do

let 'b=i*i' echo $b done

echo ----------------------- 演示如下:

4. 设计一个Shell程序,在当前目录下建立50个目录,即user1~user50 a) 目录user1下生成10个文件,分别为Myfile1-1,Myfile1-2,„, Myfile1-10 目录user2下生成10个文件,分别为Myfile2-1,Myfile2-2,„, Myfile2-10 以此类推„„ 程序如下:

#!/bin/sh

for i in `seq 50`#使用for循环创建50个目录 do

mkdir usr$i cd usr$i

touch Makefile$i-{1..10}#使用touch创建10个文件 cd .. done 演示如下:

b) 并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

执行命令$ sudo chmod o=r,u=rwx,ug=rxusr*

3、GCC及makefile练习

①使用gcc编译命令编译下面的“optimize.c”文件。并根据设置不同的优化级别编译,通过”.time 执行文件”来观察执行时间的开销。

#include int main(void) {

double counter; double result; double temp;

for(counter=0;counter<2000.0*2000.0*2000.0/20.0+2020; counter+=(5-1)/4) {

temp=counter/1979; result=counter; }

printf(\"Result is \"\"%lf\\n\return 0; }

执行命令$ gcc –o optimize optimize.c编译程序:

执行命令$ ./optimize 运行编译的结果,并用time命令来观察时间开销:

②将“optimize.c”文件拷贝为“optimize-1.c”文件,并在“optimize-1.c”文件中的main函数中增加3个子函数(在 rerurn 0 之前),分别为fun1(),fun2(),fun3()。

该三个子函数的功能分别为打印“This is function 1”,“This is function 2”,“This is function 3”.其中,fun1() 中还要求包含运算数字10的算术平方根,即包含sqrt() 函数。

a) 编写在此目录结构下的makefile文件,编译成功后重新命名为MyMakeFile-a

执行$ sudo make –f MyMakeFile-a进行编译并执行$ ./optimize-1 执行观察结果。

演示如下:

b) 编写在此目录结构下的makefile文件,编译成功后重新命名为MyMakeFile-b

将文件按要求存放后,执行$ sudo make –f MyMakeFile-b进行编译并执行$ ./optimize-1 执行观察结果。

演示如下:

c) 编写在此目录结构下的makefile文件, 编译成功后重新命名为MyMakeFile-c

将文件按要求存放后,执行$ sudo make –f MyMakeFile-c进行编译并执行$ ./optimize-1 执行观察结果。

演示如下:

三、实验总结

这学期学到的LINUX可以说是第一次接触到,从刚开始的陌生到现在有了一定的了解和认识,在老师的耐心讲解下,对于LINUX有了一个从摸索到了解的过程,最后的实验,是将所学到的课堂知识通过实践动手来让我们对于LINUX这样一个操作系统的操作更为熟练,其实在实验中很多同学都能慢慢做出老师所提的实验,但是在验收的时候很多同学就是因为操作不够熟练而被老师指出,所以说对于任何新的知识,新的操作系统,只有学好并且加以实际动手操作,才能真正的掌握它,最后你也会喜欢上它。最后,不得不说LINUX这门课对我们今后的工作也是很有益处,我们应该好好掌握。

因篇幅问题不能全部显示,请点此查看更多更全内容