LINUX 实验报告Word下载.docx
《LINUX 实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《LINUX 实验报告Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
(2)passwd12345
(3)cat/etc/passwd
2)用此用户名和口令登录系统,并用passwd命令修改口令,使用chfn命令输入用户的个人资料,并用finger查看该用户的详细资料。
(1)passwdstudent
(2)chfnstudent
(3)fingerstudent
3)用who命令查看当前登录在系统中的用户列表、登录终端和登录时间以及系统中的用户总数。
2、熟悉Linux操作系统vi编辑器的使用。
1)首先使用vi编辑器编辑一个C语言源程序hello.c,程序的功能是接受用户输入的姓名,然后在屏幕上输出一条语句“Welcome姓名”。
#include<
stdio.h>
Main()
{charname[20];
printf(“Pleaseinputyourname:
”);
scanf(“%s”,name);
printf(“Welcome%s!
\n”,name);
reture0;
}
2)对上述的hello.c文件进行增、删、改操作。
(1)增加文字时用i命令。
(2)删除文字时用dd命令。
(3)修改文字时用x命令。
(4)使用命令“gcc–ohellohello.c”编译源程序,如果发现程序错误,则需要反复使用vi编辑器修改源程序文件并且在修改后重新编译。
3)在vi编辑器中列出用户当前目录下的文件。
(1)利用命令:
vi。
(2)利用命令:
e。
3、熟悉控制台的基本操作以及控制台与XWindow桌面的转换。
4、熟悉XWindow桌面及文件管理器Nautils的使用。
5、通过文件管理器Nautils在XWindow的桌面上建立文件hello.c的链接。
打开文件管理器,找到hello.c文件,单击鼠标右键,选择“创建链接”命令,则在文件管理器的窗口中出现一个图标,名字为“到……的链接”,并且带一个小箭头符号。
只要将该图标拖放到桌面就可以建立到该项目的链接。
然后通过链接打开该文件。
6、通过控制台和XWindow中的文件管理器Nautils进行文件的基本操作。
最后分别通过控制台和XWindow中的文件管理器Nautils在用户主目录下建立一个hello子目录,将hello.c源程序文件和编译以后产生的目标代码文件和可执行文件复制到hello子目录中,删除hello子目录中的hello.c源程序文件,最后再将hello子目录以及其中的文件一并删除。
实验二、Linux的文件系统和设备管理
通过本实验可以掌握Linux系统中文件管理的概念,包括常用命令的格式、文件类型、目录结构和文件系统以及Linux下存储设备的挂载与卸载的方法,并学会如何控制文件和目录的存取权限。
实验内容及步骤:
1、了解Linux系统的文件、文件系统的概念,并观察Linux系统的目录结构。
1)查看系统文件/proc/filestems,了解当前Linux系统所支持的文件系统类型。
2)查看Linux系统的目录结构,了解Linux标准目录的主要内容及其用途和操作权限。
查看当前你所处的目录,然后改变当前目录为根目录,确认当前目录为根目录后,了解Linux标准目录/usr、/home、/bin、/dev、/var、/etc和/mnt的主要用途和操作权限。
2、控制文件和目录的存取权限。
1)在用户主目录中创建一个名为mydir的目录。
进入用户主目录,将/usr/bin目录中的cal文件和/bin目录中的cat文件复制到mydir目录中,并分别命名为mycal和mycat。
使用长列表命令来查看mydir目录中的各个文件。
2)使用长列表命令查看/usr/bin目录中的cal文件和/bin目录中的cat文件,并把它们与mydir目录中的文件进行比较。
3)设法在用户主目录中以home_mycal的文件名来调用mydir/mycal文件。
比较这两个文件有什么不同?
文件的链接数是多少?
执行home_mycal文件,执行的结果是什么?
home_mycal和mydir/mycal两者权限相同,硬链接数也相同。
3)改变文件home_mycal的权限,使拥有者只具有读的权限。
试着再运行home_mycal文件,它运行了吗?
为什么?
没有运行,chmodu-rhome_mycal命令执行后,使用者只有读的权限,没有执行权限。
4)删除home_mycal,这样做也删除了mydir/mycal文件吗?
没有删除mydir/mycal,对链接的大部分操作,包括打开、读、写等,都被传递给其链接目标,操作真正作用在链接目标上。
另外一些操作,如删除等则作用在链接本身。
3、掌握Linux下存储设备的挂载与卸载的方法。
1)建立挂载点,使用mount和umount命令手工挂载本地磁盘(U盘以及Windows的分区)。
2)使用fdisk-l命令查看设备的连接情况,主要查看U盘以及Windows分区的名称。
3)卸载本地磁盘(U盘以及Windows的分区)。
4)设置/etc/fstab文件,以便在系统启动时自动挂载文件系统。
实验三、Linux下的shell编程
使学生熟悉shell的基本操作,掌握shell的基本编程方法,并通过使用Linux中最常用的参数处理创建简单的shell程序来简化日常管理任务,为系统管理服务。
假设有一台Windows和Linux双启动的主机,Windows有C、D两个分区,编写一个负责挂载的脚本程序mmnt,参数为cdrom时挂载光驱;
参数为floppy时挂载软驱;
参数为C(大小写都可以)时挂载Windows的C盘(有中文字符);
参数为D(大小写都可以)时挂载Windows的D盘(有中文字符);
参数为U(大小写都可以)时挂载U盘(有中文字符);
参数为其他值时显示帮助信息:
“Usage:
mmntcdrom|floppy|C|c|D|d|U|u”。
编写一个负责卸载的脚本程序umnt,完成相应的存储设备的卸载,参数的含义同上。
1、以root身份登录Linux系统,查看系统的命令提示符,确定系统使用的shell程序类型。
列出Linux系统常见的shell种类。
echo$SHELL
2、使用fdisk-l命令查看系统连接的存储设备,主要查看U盘以及Windows分区的名称,比如hda3,hda5和sda,以确定挂载的设备名。
3、建立挂载点。
mkdir/mnt/C
mkdir/mnt/D
mkdir/mnt/USB
4、编写/etc/fstab文件,编辑或者添加如下5行代码:
/dev/hda3/mnt/Cvfatnoauto,iocharset=cp93600
/dev/hda5/mnt/Dvfatnoauto,iocharset=cp93600
/dev/cdrom/mnt/cdromiso9660noauto,owner,ro00
/dev/fd0/mnt/floppyautonoauto,owner00
/dev/sda/mnt/USBvfatnoauto,iocharset=cp93600
5、编写shell脚本mmnt。
#!
/bin/sh
case$1in
cdrom)mount/mnt/cdrom;
;
floppy)mount/mnt/floppy;
C|c)mount/mnt/C;
D|d)mount/mnt/D;
U|u)mount/mnt/USB;
*)echo“Usage:
mmntcdrom|floppy|C|c|D|d|U|u”;
;
Esac
6、编写shell脚本umnt。
cdrom)umount/mnt/cdrom;
floppy)umount/mnt/floppy;
C|c)umount/mnt/C;
D|d)umount/mnt/D;
U|u)umount/mnt/USB;
umntcdrom|floppy|C|c|D|d|U|u”;
7、使shell脚本程序mmnt和umnt可执行。
chmod+xmmnt
chmod+xumnt
7、测试shell脚本程序mmnt和umnt执行的结果。
实验四、Linux下的C/C++编程
通过GCC工具的熟练使用,熟悉GCC编译的四个阶段,掌握Linux下C/C++程序的设计、调试与运行的原理、方法与应用技能。
1、编写一个C语言源程序test,实现从键盘输入n个整数,在内存中自小到大排序后输出。
要求在vi中编辑,用GCC编译、链接、运行,用GCC进行调试,记录输出的结果并分析。
#include<
main()
{voidDisplayarray(intarray[]);
intt,i,loop;
intarray[10];
printf("
请输入10个数:
"
);
for(i=0;
i<
10;
i++)
scanf("
%d"
&
array[i]);
原始数组为:
Displayarray(array);
for(loop=1;
loop<
=9;
loop++)
{
for(i=0;
i<
=9-loop;
i++)
if(array[i]>
array[i+1])
t=array[i];
array[i]=array[i+1];
array[i+1]=t;
}
排序后升序数组为:
}
voidDisplayarray(intarray[])
{inti;
10;
%3d"
array[i]);
\n"
2、程序调试实践:
stdlib.h>
{
charc;
//定义一个字符保存从源文件中读取出来的字符。
charname1[20],name2[20];
//定义两个字符串数组name1,name2.长度为20。
FILE*fp1,*fp2;
//定义两个文件类型的指针。
printf(“Inputsorfilname:
”);
scanf(“%s”,name1);
//输入源文件路径保存在name1数组中。
printf(“Inputdesfilname:
scanf(“%s”,name2);
//输入目标文件路径保存在name2数组中。
fp1=fopen(name1,“r”);
//fp1指针指向源文件。
以读的方式打开源文件
if(fp1==NULL)
printf(“Cannotopenrfile\n”);
exit
(1);
}//fp1如果指针指向为空,输出提示:
Cannotopenrfile,exit
(1)表示异常退出。
fp2=fopen(name2,“w”);
//fp2指针指向目标文件。
以写的方式打开目标文件
if(fp2==NULL)
{printf(“Cannotopenwfile\n”);
exit;
}//fp2如果指针指向为空,输出提示:
Cannotopenwfile,exit退出。
while((c=fgetc(fp1))!
=EOF)
fputc(c,fp2);
/*从流中读取字符,即从fp1所指定的文件中取得下一个字符。
在每取完一个字符时fp会自动向下移动一个字节。
J将读取的字符保存到C中。
EOF是一个宏,代表文件末尾通过while循环一直读取到文件末尾把文件读取完*/
//把c中的内容保存到fp2指定的文件中。
fclose(fp1);
//关闭打开的源文件,并清空缓冲区。
fclose(fp2);
//关闭打开的目标文件,并清空缓冲区。
printf(“copycomplete!
\n”);
//提示复制完成。
录入、编辑、调试、运行以上程序,记录程序的运行结果,在每行的后面加上注释并说明程序实现的功能。
该文件实现的功能是将一个文件中的内容复制到另一个文件中。
将文件编译后授予执行权限运行,在运行过程中:
Inputsorfilname:
提示输入源文件名。
Inputdesfilname:
提示输入目标文件名。
在文件内容从源文件到目标文件复制完成后会提示
copycomplete!
!
复制成功。