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 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这门课对我们今后的工作也是很有益处,我们应该好好掌握。 因篇幅问题不能全部显示,请点此查看更多更全内容