Linux 操作系统
实验报告
姓 名
班 级
实 验 名 称
学 号
指 导 教 师
Linux 操作系统实验
开 设 学 期
2 0 1 5 第 一 学 期
开 设 时 间
第 1 1 周 — — 第 1 8 周
报 告 日 期
评 定 成 绩
评
定
人
评 定 日 期
1
【实验目的】
实验一 熟悉 Linux 环境
1.了解 Linux 系统基本操作方法,学会独立使用该系统。
2.熟悉 Linux 下如何编辑、编译和运行一个 C 语言程序。
3.学会利用 gcc、gdb 编译、调试 C 程序。
【预习内容】
1.预习 Linux 下各种应用程序的使用。
2.预习常用的 SHELL 命令。
3.预习 vim 编辑器和 emacs 编辑器使用方法。
4.预习 Linux 下 C 程序编辑、编译和运行过程。
【实验内容】
一、常用的 Shell 命令。
1.目录操作
mkdir abc 创建一个目录 abc cd /abc 将工作目录改变到 abc
cd 改变当前目录到主目录 ls 列出当前目录的内容
ls -l 输出当前目录内容的长列表 pwd 显示当前目录的全路径
根据实际操作,其命令执行的书写形式和简略内容如下:
[qdf@localhost ~]$ mkdir abc
[qdf@localhost ~]$ cd abc
bash: cd: /abc: 没有那个文件或目录
[qdf@localhost ~]$ cd
[qdf@localhost ~]$ ls
abc a.out ha math maths.c nano.save rr.c 公共的 视频 文档 音乐
abc.c d h.c matH m.c q.c xx 模板 图片 下载 桌面
[qdf@localhost ~]$ ls -l
总用量 92
drwxrwxr-x 2 qdf qdf 4096 12 月 1 08:05 abc
-rw-rw-r-- 1 qdf qdf 6810 12 月 1 07:04 a.out
drwxrwxr-x 3 qdf qdf 4096 12 月 1 06:41 d
······
drwxr-xr-x 2 qdf qdf 4096 12 月 1 02:58 视频
drwxr-xr-x 2 qdf qdf 4096 12 月 1 02:58 图片
drwxr-xr-x 2 qdf qdf 4096 12 月 1 02:58 文档
drwxr-xr-x 2 qdf qdf 4096 12 月 1 02:58 下载
drwxr-xr-x 2 qdf qdf 4096 12 月 1 02:58 音乐
drwxr-xr-x 3 qdf qdf 4096 12 月 1 08:03 桌面
[qdf@localhost ~]$ pwd
/home/qdf
2
2.文件显示实用程序
cat mx.c 显示 mx.c 文件内容 more mx.c 分屏显示 mx.c 内容
cat file1 file2 连接 file1 和 file2
根据实际操作,其命令执行的书写形式和简略内容如下:
[qdf@localhost ~]$ vi mx.c
[qdf@localhost ~]$ cat mx.c
#include
main(){
Printf(“Hello world!!!”);
Printf(“Hello world!!!”);
Printf(“Hello world!!!”);
}
[qdf@localhost ~]$ more mx.c
#include
main(){
Printf(“Hello world!!!”);
Printf(“Hello world!!!”);
Printf(“Hello world!!!”);
}
[qdf@localhost ~]$ vi file1 file2
[qdf@localhost ~]$ cat file1 file2
abcdef
123456
3.文件管理实用程序
cp file1 file2 将文件 1 复制到文件 2 mv file1 file2 将文件重命名为 file2
rm filename 删除文件 filename
根据实际操作,其命令执行的书写形式和简略内容如下:
[qdf@localhost ~]$ cp file1 file2
[qdf@localhost ~]$ cat file2
abcdef
[qdf@localhost ~]$ vi file1
[qdf@localhost ~]$ cat file1
A-B-C-D-E-F-G
[qdf@localhost ~]$ mv file1 file2
[qdf@localhost ~]$ cat file2
A-B-C-D-E-F-G
[qdf@localhost ~]$ rm filename
[qdf@localhost ~]$ cat filename
cat: file2: 没有那个文件或目录
[qdf@localhost ~]$
3
4.数据操作实用程序
tty 显示当前终端的路径和文件名
who 显示当前登录用户的列表
根据实际操作,其命令执行的书写形式和简略内容如下:
[qdf@localhost ~]$ tty
/dev/pts/6
[qdf@localhost ~]$ who
qdf tty1 2014-12-01 03:04 (:0)
qdf pts/4 2014-12-01 04:50 (:0.0)
qdf pts/6 2014-12-01 08:03 (:0.0)
5.其他实用程序
根据实际操作,其命令执行的书写形式和简略内容如下:
[qdf@localhost ~]$ date
2014 年 12 月 01 日 星期一 09:12:50 CST
[qdf@localhost ~]$ history
1 vi ha.c
2 vi h.c
3 cc h.c
4 ls -l h.c
5 ./a.out
······
121 cat file
122 history
二、Linux 下 C 程序编辑运行过程
1.Linux 下编写 C 程序编辑运行过程的步骤:
⑴命名 C 程序为 hello.c,同时启动 vi 编辑器,并键入 C 源程序代码,具体如下:
#include
void main(void)
{
Printf(“Hello world!!!\n”);
}
⑵编译源程序,即用 gcc 编译器对 hello.c 进行编译,以生成 hello.out。方法如下:
gcc -o hello.out hello.c ↙
⑶键入一条指令,运行 hello.out。
·/ hello.out ↙
2.Linux 下 C 程序编辑运行命令执行的形式和容如下:
[qdf@localhost ~]$ vi hello.c
[qdf@localhost ~]$ gcc -o hello.out hello.c
4
[qdf@localhost ~]$ ./hello.out
Hello world!!!
[qdf@localhost ~]$
三、实验心得总结
首先,由对 Linux 基本不了解到能独立安装 Linux 虚拟机以及可以独立编写一些简单的
shell 命令,我认为这就是一种进步。本次实验共四学时,实验期间对 Linux 系统基本操作
方法有了深入的了解,进一步巩固了常用的 shell 命令,如显示文件内容的命令:cat、more、
less、head、tail;文件的创建与删除的命令:mkdir、rmdir;改变工作目录、显示路径以
及显示目录内容的命令:cd、pwd、ls 等等。
其次,在具体的实验内容指导下,能熟悉地利用 vi 命令打开编辑器(如 vi hello.c
命令就是编辑一个名为 hello.c 的 C 源程序),更改所编写的文本或计算机程序的文件名或
目录名(如 cd f1 f2 就是将 f1 文件名更改为 f2),修改其内容或删除已建的文件或目录(如
rm hello.c 就是删除名为 hello.c 源程序文件),同时熟悉了在 Linux 系统下如何编辑、编
译和运行一个 C 语言程序。
再者,
最后,
5
实验二 文件操作
【实验目的】
1.掌握文件的概念及对文件的操作。
2.掌握对目录及文件系统的操作。
3.掌握对设备文件的操作。
【实验内容】
char buf[]=[512];
fd=open(av[1], O_RDONLY);
一、文件的创建
编写程序,实现 cp 命令的功能。被复制的文件名与复制出的新文件由用户指定。调用方法:
“你编写的程序名 被复制文件名 复制出的文件名”。要求程序有一定的健壮性,即对用户
错误调用及其他错误要有处理和反馈。(提示:可以使用 man 手册查看具体的系统调用,e.g.,
man 2 open)。
[qdf@localhost ~]$ vi read.c
[qdf@localhost ~]$ cc read.c
[qdf@localhost ~]$ ./a.out
[qdf@localhost ~]$ cat read.c
#include
#include
#include
main(int ac, char *av[]){
int fd;
int n;
while((n=read(fd,sizeof,buf,sizeof(buf)))>0)
}
[qdf@localhost ~]$ ls -l read.c
-rw-rw-r-- 1 qdf qdf 299 12 月 9 19:06 read.c
[qdf@localhost ~]$ cp read.c readcp.c
[qdf@localhost ~]$ ls -l readcp.c
-rw-rw-r-- 1 qdf qdf 299 12 月 9 19:27 readcp.c
二、查看目录内容及文件属性
1.编写程序,实现 ls -l 的功能。调用方法:“你编写的程序名”——这时打印出当前目录
文件及其属性;“你编写的程序名 目录名”——这时在终端显示给定目录下的文件及其属
性。(提示:当用户给定目录后,需要改变进程的当前目录,可使用 chdir()。
(1)编写程序:
#include
printf(“%.*s\n”,n,buf);
close(fd);
6
#include
#include
main(int ac, char *av[]){
DIR * dirp;
struct dirent * p;
if(1==ac){
dirp=opendir(".");
dirp=opendir(av[1]);
}else{
}
while((p=readdir(dirp))!=NULL){
if(p->d_name[0]!='.'){
}
printf("%s\n", p->d_name);
}
closedir(dirp);
}
(2)实现 ls -l 的功能
[qdf@localhost ~]$ vi lsone.c
[qdf@localhost ~]$ cc lsone.c
[qdf@localhost ~]$ ls -l lsone.c
-rw-rw-r-- 1 qdf qdf 292 12 月 9 19:48 lsone.c
[qdf@localhost ~]$ mkdir ls1
[qdf@localhost ~]$ ls -l lsone.c ls1
-rw-rw-r-- 1 qdf qdf 292 12 月 9 19:48 lsone.c
ls1:
总用量 0
[qdf@localhost ~]$
2.编写程序,实现 ls -R 的功能。
(1)编写程序:
#include
#include
#include
#include
main(int ac, char *av[]){
int fd;
int n;
char buf[512];
fd=open(av[1], O_RDONLY);
7
printf("%.*s", n, buf);
while((n=read(fd, buf, 512))>0){
}
close(fd);
}
(2)实现 ls -R 的功能
[qdf@localhost ~]$ vi open.c
[qdf@localhost ~]$ cc open.c
[qdf@localhost ~]$ ./a.out
[qdf@localhost ~]$
[qdf@localhost ~]$ ls -R open.c
open.c
三、设备文件操作
在/dev 目录下,找到你的鼠标对应的文件。打开这个文件,从该文件循环读出字符,并将
字符对应的 ascII 代码在终端显示出来。
四、实验总结
【实验报告】
8