Linux实验报告【全集】

爱被打了一巴掌 2023-06-18 05:53 303阅读 0赞

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70若对你有帮助,记得点赞、关注我哦!

实验目录:Linux常用命令、linux下的shell编程、 Linux下的c编程、Linux下的API编程(每个实验的图片都比较多)

一开始实验基本都是书上的例题、后面会变难,做实验时往往会想:为什么每届都做同样的实验,却没有留传下来“成果”?

所以就有了我的“实验报告”博文,写这种博文也挺麻烦的。

实验一 Linux常用命令

【实验题目】

Linux常用命令

【实验目的】

熟练掌握Linux常用命令

【实验内容与实现】

  1. 使用联机帮助命令,包括man命令和info命令。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 1

图1 使用man ls命令获取ls的联机说明

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 2

图2 使用info ls获取ls的联机说明

  1. 熟练使用目录和文件操作命令。

(1)使用cd命令改变当前工作目录,使用pwd命令显示当前工作目录的绝对路径。

20191130161045636.png

(2)linux提供的mkdir、rmdir两个命令分别用于创建新的目录、删除空目录。删除非空目录要用到rm命令。要求在某个mkdir、rmdir、rm命令后跟ls(list)命令,列出文件目录,以验证目录创建、目录删除操作是否成功。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 3

  1. ls命令用于检视指定目录下的文件列表与文件属性。

(1)回到用户的“家”目录

20191130161224200.png

(2)显示当前目录列表,包括文件名以“.”开头的隐藏文件

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 4

(3)给出绝对路径,列出目录/etc下的文件名列表

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 5

(4)列出当前目录列表,给出每个文件的类型标记

20191130161617869.png

(5)将家目录(可用符号“~”表示)下的所有文件及详细属性列出来,每行一个文件

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 6

(6)显示当前目录(省略目录名为当前目录)下所有文件的文件名及其i节点号(显示于文件名的前面)

20191130161728734.png

(7)显示当前目录下的所有文件

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 7

  1. 熟练使用文件权限命令。

(1)在/tmp目录下创建文件f52、f521、f522,将文件f522的文件权限更改为777,为所有用户添加对f521文件的读写权限,去掉所有用户对f522文件的写权限。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 8

(2)文件档案归属更改:chown、chgrp

以root身份登录,在/tmp目录下创建文件f53,将其文件主、所属用户组分别更改为can、bin。

20191130162127230.png

  1. 熟练运行通配符。

(1)在/tmp目录下创建两个文件ff1和ff2,将所有文件名ff开头,长度为3个字符的文件复制到目录personal中。

20191130162351586.png

(2)删除personal目录下的所有名字以ff开头的文件。

20191130162551714.png

(3)删除personal目录下的所有文件、目录、包括子目录。

20191130162605728.png

  1. 熟练使用输入输出重定向和管道命令。

(1)将前一命令给出的passwd联机帮助重定向到文件a,覆盖文件a的所有内容。

(2)将命令date给出的日期时间信息追加到文件a

(3)不带参数的cat命令本来是从终端读取输入,通过输入重定向改从文件读取

(4)将文件/etc/passwd的内容送往命令sort排序输出

(5)find命令在当前用户的家目录树中查找所有文件名后缀为.c的文件信息交由more分页显示

(6)grep命令在当前目录树文件中搜索包含”main()”的文本,交由命令more分页显示

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 9

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 10

20191130162651373.png

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 11

【实验心得】

通过本次试验我熟练掌握了使用联机帮助命令man和info命令来获取相应命令的联机说明,学会使用目录和文件操作命令,同时还会用文件权限管理命令,熟练运行通配符、输入输出重定向和管道命令,受益匪浅。

实验二 linux下的shell编程

【实验题目】

Linux下的shell编程

【实验目的】

掌握shell脚本的设计方法。

【实验内容与实现】

  1. 根据提示输入你的用户名和密码,并将结果显示在屏幕上。

20191130164453826.png

201911301646250.png

  1. 对IF行的命令进行测试,如果命令执行成功,则执行then分支的语句序列(“it worked”)。

20191130164638610.png

20191130164740868.png

  1. 对IF的命令进行测试,如果在IF行放了一条错误的命令,显示语句序列为”we’re outside of the if statement”

20191130164821526.png

20191130164835952.png

  1. if语句行使用grep命令搜索/etc/passwd文件,查看系统是否正在使用某个特定的用户名。如果一个用户拥有该用户名,脚本会显示一些文本,然后列出用户家目录下的bash文件。

20191130164928411.png

20191130165003801.png

  1. 定义两个变量val1和val2,比较val1是否大于5,val1是否等于val2,并输出比较的结果。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 12

20191130165756282.png

  1. 检查对象是否存在,在使用脚本或目录之前,-e选项能检查它们是否存在。若要确定指定的对象是否为文件,可使用-f选项。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 13

20191130165833157.png

  1. 检查文件是否能够运行,请使用-x选项确定是否拥有指定文件的运行权限。

201911301658502.png

20191130170707943.png

  1. 编写程序,使用case语句对指定的不同变量进行模式匹配。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 14

201911301707574.png

  1. 编写程序,请读取列表或变量中的值。

20191130170922346.png

20191130170944978.png

10.编写程序,请读取命令结果中的值。

20191130171023646.png

2019113017104532.png

  1. 使用通配符读取目录。

20191130171057981.png

20191130171112265.png

  1. 利用一个until循环对一个值为整数的变量做递减运算,并显示运算结果。

20191130171128856.png

20191130171200206.png

  1. 使用管道,将cat命令的输出通过管道送给read命令。若输入文件有多行数据要读出来,则将cat输出送往while read命令。

2019113017122982.png

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 15

  1. 在Shell脚本中调用同一个函数3次,最后打印结果“This is the end of the loop”。

20191130171402153.png

20191130171424698.png

  1. 逆序输出一个字符串。

20191130171445624.png

20191130171501486.png

  1. 编写一个shell脚本,利用for循环将当前目录下的.c文件移动到指定的目录,并按文件大小显示出移动后指定的目录的内容。

20191130171537519.png

20191130171554221.png

  1. 利用数组形式存放10个城市的名字,然后利用for循环把它们打印出来。

20191130171624447.png

20191130171633973.png

实验三 Linux下的c编程

【实验目的】

熟练使用Linux自带系统库,执行教材3.2.4、3.2.5、3.5.1、3.5.2节中的示例程序,对程序进行功能扩充。分别在教材第70-71页、第72-73页、第90-91页、第91页。

【实验内容与实现】

  1. 应用time函数,将两次调用的时间相减得到代码的执行时间。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 16

20191130171935186.png

  1. 使用qsort函数,对整型数组int num[10]={90,51,32,83,94,45,36,47,28,19}进行排序。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 17

20191130172110843.png

  1. 利用linux C程序相关函数展示环境变量的读取方法。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 18

2019113017214344.png

  1. 请编写程序演示命令行的读取方法。

20191130172201264.png

20191130172216247.png

  1. 用希尔排序法将数组中的数据按由小到大的顺序进行排序

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 19

20191130172256454.png

实验四 Linux下的API编程

【实验目的】

  1. 熟练使用signal函数,执行教材5.4.4节中的示例程序,并分析程序执行结果。教材第191-193页。
  2. 熟练掌握管道编程方法,执行教材7.1.2节中的示例程序,观察程序执行结果,并对程序进行改进。教材第275-277页。

【实验内容与实现】

20191211183913532.png5.4.4节中的示例程序

信号处理函数的定义在第3~6行。main函数在第8和第9行设置信号处理程序,然后进入休眠状态,直到接收到一个信号(第10行)。当接收到SIGINT信号时,运行信号处理程序,输出一条信息(第4行),然后终止这个进程(第5行)。

  1. 捕获用户在键盘上键入CTRL+C时Shell的SIGINT信号。

20191211184723393.png

  1. 思考下列程序的输出是什么?

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 20

2019121118480663.png

  1. 通过命令行创建命名管道。

20191211184928551.png

  1. 通过程序在目录/tmp下创建一个FIFO文件,文件名为myfifo。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 21

20191211185024387.png

  1. 使用命令访问FIFO。

20191211185214915.png

20191211185302332.png

  1. 编写程序将命令行参数argv[1]的值写入/tmp/myfifo,再编写另一个不同的程序实现从/tmp/myfifo读出数据并显示出来。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 22

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 23

20191211185706619.png

20191211185721424.png

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTg3NjEy_size_16_color_FFFFFF_t_70 24

发表评论

表情:
评论列表 (有 0 条评论,303人围观)

还没有评论,来说两句吧...

相关阅读