Linux实验报告【全集】

2023-10-26

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

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

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

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

实验一  Linux常用命令

【实验题目】

       Linux常用命令

【实验目的】

熟练掌握Linux常用命令

【实验内容与实现】

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. 熟练运行通配符。

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

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

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

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

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

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

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

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

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

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

【实验心得】

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

实验二  linux下的shell编程

【实验题目】

      Linux下的shell编程

【实验目的】

      掌握shell脚本的设计方法。

【实验内容与实现】

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

实验三   Linux下的c编程

【实验目的】

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

【实验内容与实现】

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

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

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

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

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

实验四  Linux下的API编程

【实验目的】

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

【实验内容与实现】

5.4.4节中的示例程序

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

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

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

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

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

5. 使用命令访问FIFO。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux实验报告【全集】 的相关文章

  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • 是否从页面缓存中的脏页面进行文件读取?

    当字节写入文件时 内核不会立即将这些字节写入磁盘 而是将这些字节存储在页缓存中的脏页中 回写缓存 问题是 如果在脏页刷新到磁盘之前发出文件读取 则将从缓存中的脏页提供字节 还是首先将脏页刷新到磁盘 然后进行磁盘读取以提供字节 将它们存储在进
  • 如何确保 numpy BLAS 库可用作动态加载库?

    The theano安装文档 http www deeplearning net software theano install html troubleshooting make sure you have a blas library指
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 如何用X11复制到剪贴板?

    使用 OS X 上的框架 我可以使用以下命令将 PNG 复制到粘贴板 在 C 中 显然我可以将 NSPasteboard 与 Cocoa 一起使用 include
  • 在 LINUX 上使用 Python 连接到 OLAP 多维数据集

    我知道如何在 Windows 上使用 Python 连接到 MS OLAP 多维数据集 嗯 至少有一种方法 通常我使用 win32py 包并调用 COM 对象进行连接 import win32com client connection wi
  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 如何在Python中独立于语言安装(linux)获取用户桌面路径

    我找到了 如何找到用户桌面的路径 的几个问题和答案 但在我看来它们都已失效 至少我找到的那些 原因是 如果用户安装的 Linux 不是英语 他或她的桌面很可能位于除 Desktop 例如 对于瑞典语 我相信它是在 Skrivbord 谁知道
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • Linux shell 脚本中的 while 循环超时

    这工作正常 无限循环 while TRUE do printf done 我在尝试着timeout this while loop与timeout命令 所有这些都不起作用 timeout 5 while TRUE do printf don
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u

随机推荐

  • 如何实现 Array 和 List 之间的转换?

    在 Java 中 我们可以通过以下方法实现 Array 和 List 之间的转换 数组转 List String arr apple banana orange List
  • 2023最新宝塔面板8.0.1企业版开心版

    宝塔面板是目前一个非常好用的可视化面板 这几天我自己搭建了一个宝塔云端 不经过宝塔官方接口 无需绑定手机号 安装之后直接显示企业版 所有插件全部免费使用 付费的也能使用 脚本如下 centos安装脚本 yum install y wget
  • 【蓝牙开发】Andorid蓝牙绝对音量

    蓝牙绝对音量相关基础知识 1 什么是绝对音量 Android 蓝牙部分的官方文档有如下描述 Androud Bluetooth Service 在 Android 6 0 及更高版本中 Android 蓝牙堆栈允许音频源设置绝对音量 以便用
  • 【毕业设计】深度学习行人重识别算法研究与实现 - python opencv yolo Reid

    文章目录 0 前言 1 课题背景 2 效果展示 3 行人检测 4 行人重识别 5 其他工具 6 最后 0 前言 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这两年开始 各个学校对毕设的要求越来越高 难度也越来
  • WIN10的传递优化文件是个什么鬼?能删除吗?

    Win10正式版系统使用时间长了以后 电脑磁盘总会产生一些冗余的文件和磁盘碎片 我们可以用一些工具软件对硬盘进行优化和处理 其实利用系统自带的工具也可以清理磁盘的 但在操作过程中 我们常常会看到一个名叫 传递优化文件 的选项 而且多数情况下
  • UA到底是什么

    欢迎关注勤于奋 每天12点准时更新国外LEAD相关技术 今天这篇文章也是比较基础的文章 其实有很多新手还是搞不懂 所以我特意来写篇文章聊聊这个UA 到底是什么 在我们国外LEAD当中起到的作用 如果搞不懂 很多东西你都没有办法灵活运用 首先
  • 19款资源整合类网站推荐:每一个网站都堪称以一敌百

    强烈推荐这19个资源聚合网站 每一个网站都足以堪称 以一敌百 因为每一个网站都聚合了相当多不同类型 不同领域的网站资源 并且做了分类导航方便大家查找使用 所以 与其收藏那么多零碎的网址 不如收藏下面这些网站资源 比格张 发现更好的资源 一个
  • java8的日期工具类(获取当前时间 相隔天数 小时 分钟 秒等处理)

    package com example list test import java text ParseException import java text SimpleDateFormat import java time import
  • tvm 入门(二)

    代码是一个tvm入门的例子 以向量相加为例 使用tvm的流程是 1 描述串行的向量相加是怎么做的 2 描述并行的时候 怎么对计算单元做划分 3 编译目标函数 本文所示代码可以看到用tvm生成的cuda代码 4 把编译生成的内容保存成文件 加
  • VMware Workstation 未能启动 VMware Authorization Service。您可以尝试手动启动 VMware Authorization Service。如果此问题仍然存

    报错界面 解决方法一 管理员身份运行即可 解决方法二 打开服务 找到VMware Authorization Service右键选择然后点启动 然后发现又报了下面的错误 不慌这时候打开属性把启动类型改成手动即可
  • String、StringBuffer和StringBuilder的异同点

    String StringBuffer StringBuilder三者的异同 String 不可变的字符序列 底层使用char 存储 StringBuffer 可变的字符序列 线程安全的 效率低 底层使用char 存储 StringBuil
  • OpenAI的人工智能语音识别模型Whisper详解及使用

    1 whisper介绍 拥有ChatGPT语言模型的OpenAI公司 开源了 Whisper 自动语音识别系统 OpenAI 强调 Whisper 的语音识别能力已达到人类水准 Whisper是一个通用的语音识别模型 它使用了大量的多语言和
  • 安装mingw出现download failed和unable to continue

    利用mingw get setup安装mingw总是出现download failed和unable to continue错误 截图如下 错误原因 因为服务器在外网 可能是对方服务器不稳定 连接出错等问题导致 解决办法 下载对应等离线安装
  • 11信号学习之sigaction函数及使用其实现信号捕捉案例(信号最重要的一节)

    概述 注意 在我关于信号的文章中 我所说的系统的mask的意思实际上是进程的mask 每个进程的mask都是唯一的 所以我就将其称为系统的 但不能理解为每个进程的mask都是共用的 1 sigaction函数 1 上一篇我们说的signal
  • 基于STM32的DMX512开发

    首先基本了解一下DMX512的基本协议 一 DMX512协议 DMX 是Digital MultipleX 的缩写 意为多路数字传输 DMX512控制协议是美国舞台灯光协会 usITT 于1990年发布的灯光控制器与灯具设备进行数据传输的工
  • 复习使用git(二)

    删除远程分支 git push origin delete 分支名 撤销修改 撤销工作区的修改 已修改 但尚未添加 add 使用 git restore 文件名 撤销工作区的修改 Note git checkout 文件名 checkout
  • 基于STM32F407的SDCard读写操作及USB挂载(HAL库)

    基于STM32F407的SDCard读写操作及USB挂载 HAL库 本来在上一篇SD卡读写也都OK了 后来想着挂载SD卡做U盘 就去查了下资料 结果基本全是HAL库的 原来没用过HAL库 于是本着好奇的心态去下了 说实话 确实看起来简单多了
  • 【Spring Boot】——集成JSON工具

    前言 json是现在非常流程的数据交换格式 所以对于被开发人员来说如何更好了解java对象和json格式之间的转换是至关重要的 接下来我们来好好说一说 一 什么是JSON 摘自百度百科 JSON JavaScript Object Nota
  • android 涨潮动画加载_潮汐apk客户端-潮汐android最新版APP下载v2.0.1.1 免费版-腾牛安卓网...

    潮汐一个非常有特色的静心平台 它可以让你在工作困乏时聆听几分钟就可以更加高效的工作 让你的工作效率达到更好的专注 它可以让你的心情更加温和 让你的每一天不再那么浮躁和枯燥无味 让你的心情越来越舒畅 喜欢的朋友快来腾牛网下载吧 软件特色 保持
  • Linux实验报告【全集】

    若对你有帮助 记得点赞 关注我哦 实验目录 Linux常用命令 linux下的shell编程 Linux下的c编程 Linux下的API编程 每个实验的图片都比较多 一开始实验基本都是书上的例题 后面会变难 做实验时往往会想 为什么每届都做