福建农林大学计算机与信息学院实验报告
Linux基本操作和shell编程
实验环境 1、硬件环境:
计算机设备:P4+256MB内存 2、软件环境:
VM+红旗Linux 4.0 桌面版
一、实验目的:
1)掌握Linux常用的命令操作。
2)掌握在Linux下的C编程基本方法。 3)掌握shell编程方法。
4)掌握dialog图形化编程方法。
二、实验内容
1、启动红旗linux系统或其它Linux系统 操作步骤:
1) 以root用户,登录红旗linux,进入其桌面环境。
2) 查看红旗linux的桌面图标、系统面板和主菜单中的内容,并记录相应的项目。 2、在终端中完成下列命令操作,并记录结果
1) 在root主目录下创建一个mydir子目录和一个myfile文件,再在mydir下建立d1
和d2两个子目录。 Mkdir /root/mydir;cat >myfile(若是空文件直接ctrl+d结束);mkdir /mydir/d1 my/dir/d2;
2) 查看mydir和myfile的默认权限 ls –dl mydir myfile
3) 查看当前myfile和mydir的权限值是多少? ls –dl mydir myfile
由上可知mydir权限值是755,myfile权限值是644
4) 将myfile文件分别复制到root 和d1的主目录中 cp myfile /root/mydir/d1
5) 将root主目录中的myfile改为yourfile mv myfile yourfile
6) 通过从键盘产生一个新文件text.txt并输入I am a student cat >text.txt
7) 查找text.txt文件是否包含student字符串 grep –n student text.txt
3、创建一个新用户,名为dd1。要求记录操作步骤或命令序列。 Useradd dd1;passwd 123456
4、编写能输出“Hello world!”问候语的C程序,并在终端中编译、执行。要求记录所使用的命令及结果。 #include { printf(“Hello World!); Getch(); } 5、编写一个程序并设置其在后台执行,其功能是在一段时间后(可自行设置),在屏幕上显示信息:Time for play!,写出相应的程序、命令及结果 #include < unistd.h > #include main() { sleep(10); printf(“Time for play!‖); getch();} 6、编写C程序,求1到100之间整数的阶乘和,并对程序进行优化。写出程序、命令和结果。 #include {int I;double jc=1;double sum=0; For(i=1;i<=100;i++) {jc*=I; Sum+=jc; } Printf(―total is :%d‖,sum);} 7、编写C程序,根据键盘输入的半径求圆面积,要求在命令行使用不同的圆周率(PI=3.14,PI=3.14159,PI=3.14159626等)进行编译,写出程序、命令和结果。 #include double getArea(double r, double PI){ double area = 0; area = PI * r * r; return area;} int main(int argc, char *args[]){ double R = 0; double Area = 0; double PI = atof(args[1]); printf(\"The valum of PI is: %f\\n\ printf(\"Imput the R: \"); scanf(\"%lf\ Area = getArea(R, PI); printf(\"面积是:%f\\n\ 8、编写shell程序sh.1, 完成向用户输出“你好!”的问候语。并根据实验的时间,分别给出:“上午好!”或者“下午”,或“晚上”好的问候。 #!/bin/sh TIME=$(date +%H) if [ \"$TIME\" -ge 1 ] && [ \"$TIME\" -le 11 ] ;then echo \"早上好!\" elif [ \"$TIME\" -ge 12 ] && [ \"$TIME\" -le 18 ] ;then echo \"下午好!\" elif [ \"$TIME\" -ge 19 ] && [ \"$TIME\" -le 24 ] ;then echo \"晚上好!\" fi 9、编程sh.2:如果存在sh.1文件,则输出信息:sh.1文件已经存在,并询问是否运行?如果用户回答:要运行。那么结果是什么?如果sh.1不存在,则提示用户先创建文件。 #!/bin/sh PWD=$(pwd) if [ -f \"$PWD\"/8.sh ] ; then echo \"脚本8.sh存在,是否运行,输入Y/N\" read a if [ $a == Y ] || [ $a == y ] ; then $PWD/8.sh elif [ $a == N ] || [ $a == n ] ; then exit 2 fi else echo \" 上一题的脚本8.sh不存在,退出\" exit 1 # fi 10、编程sh.3:循环显示所有的sh.*文件。 #!/bin/sh for i in $(ls sh.*) do ls -l $i done 11、Dialog 工具编程sh.4:实现用信息框+输入框:显示问候语“某同学,你好!”的信息。(提示:输入信息请用英文。) #!/bin/sh dialog --inputbox \"Enter your name:\" 9 28 2>1.txt export name=$(cat 1.txt) dialog --msgbox \"$name同学,你好\" 9 28 12、设计一个图形化的菜单查询系统sh.5,名为“欢迎来到学生之家!”,调查内容包括:姓名、性别、年龄和建议(提示:输入信息请用英文。)。并将所得到的结果,用信息框显示出来。(格式不限,自由发挥。) #!/bin/sh dialog --title \"欢迎来到学生之家\" --inputbox \"姓名\" 10 25 —inputbox \"性别\" 10 25 --inputbox \"年龄\" 10 25 --inputbox \"建议\" 10 25 2>12.txt info=$(cat 12.txt) dialog --msgbox \"$info\" 10 30 13、对教材P49的程序代码4-1.C进行调试,要求在进入两个函数的调用时进行跟踪并单步运行,记录结果中要求给出断点的设置、进入函数体内的跟踪情况(用行号表示),并说明静态变量的作用。 本程序中的静态变量是 lastnum.静态变量,是当函数printmessage退出后,这个变量的值还将保存起来,以等待下一次调用。 gcc test4_1.c –o a -g gdb a (gdb)b main 三、实验结果与讨论(根据实验结果回答下列问题) 1、 你所使用的实验环境是什么?请写出Linux的平台、内核版本号。 2、 在Linux中,标准设备文件有哪些?这些设备文件在哪个目录? 3、 对于上述各编程题目中所用到了的各个头文件,请找到它们的位置。 4、 使用gdb进行调试的步骤,s命令与n命令有何区别? 四、总结 因篇幅问题不能全部显示,请点此查看更多更全内容