20145214 《信息安全系统设计基础》第10周学习总结

教材学习内容总结

视频学习内容总结

ls -l可以显示当前目录下目录或文件的详细属性信息

  • 如上图所示,第一列为文件属性,其中

      第一位表示类型,`-`代表文件,`d`代表目录;
      二至四位代表文件创建者权限,`-`代表无权限,`r`代表具有读权限,`w`代表具有写权限,`x`代表具有执行权限;
      五至七位代表同组用户权限;
      八至十位代表其他用户权限。
    
  • 第二列为文件硬链接数,或目录、子目录数。若为目录的,该字段至少是2,表示该目录下至少有两个子目录

  • 第三列为所有者

  • 第四列为所属用户组

  • 第五列为文件大小

  • 第六列为文件最后修改时间

  • 第七列为文件名

ls最主要的功能是列出目录内容,显示文件信息

编写ls三大问题

	1、如何列出目录内容
	2、如何读取文件属性
	3、如何判断目录名与文件名
  • 目录文件永远不会为空,每个目录至少包含两个特殊项...,其中.表示当前目录,..表示上一级目录

cp1.c代码

  • 第一次运行时因为没有指定源文件和目的文件而出错

  • 按照cp src des顺利运行,运行后可以在src/week10文件夹中看到复制的cp2.c文件

echostate.c代码和setecho.c代码

  • echostate.c代码是用来检查命令行中的提示符是否显示的,如果显示,输入的命令都可见,不显示则表示输入的命令不可见,具体例子结合setecho代码一起

  • echostate.c代码运行如下

  • 结合setecho.c代码运行如下

  • setecho.c可以改变符号显示状态,no是不显示符号,yes是显示。当执行no指令后输入的命令看不见,状态值为0;yes指令后恢复可见,状值态为1

fileinfo.c代码

  • fileinfo.c代码用来实现显示文件信息。先判断命令是否有操作数,有的话才能继续进行下去,如果没有报错就打印出来相关文件信息,报错就用perror将报错信息打印出来

  • 其中:

      mode:st_mode        文件的类型和存取的权限         
      links:st_nlink      连到该文件的硬链接数目,刚建立的文件值为1
      user:st_uid         用户ID
      group:st_gid        组ID          
      size:st_size        文件字节数
      modtime:st_mtime    最后一次修改时间
      name:               输入的文件名
    

filesize.c代码

  • filesize.c用st_size成员来计算文件的字节数大小,先判断是否有错误,没有的话就调用

  • 运行filesize.c代码时发现无论后面输入的要计算字节数的文件名怎样改变,计算出来的代码字节数都是一样的

  • 阅读代码后发现此时程序计算的文件是指定的etc/passwd的字节数

  • 修改filesize.c的代码如下

  • 修改后再次编译运行得到正确的结果

ls1.c代码与ls2.c代码

  • ls1.c简单显示当前目录下的内容

  • ls2.cls1.c的基础上更加完善,还可显示出文件的详细信息,如读写权限,大小和创建时间等

spwd.c代码

  • spwd.c用来列出当前的目录

who.c代码

  • 代码的思想是,从UTMP_FILE文件中读取想要的信息到存储器中,然后再用标准输出函数打印到屏幕上,最后关闭文件

  • who1.cwho2.c代码运行的结果完全一致

testioctl.c代码

  • 代码获得当前终端窗口的大小,以行列数来计算

  • 不同窗口大小显示代码运行结果不同,如下图

代码托管情况

代码托管链接

代码托管截图

代码行数统计

其他(感悟、思考等,可选)

  • 虽然老师上课说过了后面几周的学习方式会和前几周的方式不同,但是在本周刚开始学习的时候,即使和往常一样从周一的晚上开始学,也很难进入状态,不知道应该怎么学习。到了周五渐渐有其他同学发表了博客后才开始找到了学习的方向,在往后的几周相信自己会更适应这样的学习方式,以老师给的学习资源为主,以课本内容为辅,相辅相成。
  • 本周主要是视频的学习和老师给的代码的实践。我认为视频就像是一个引入,以ls为例子告诉我们编写一个代码应该考虑的问题,以此为基础,再去看懂并且实践老师给的代码就变得有意义了许多。实践代码之后,自己对这些指令又会有更深刻的理解,知其所以然,以后也就能更熟悉地运用这些指令了。
  • 上一周的学习任务中我少学习了课本内容的“附录”部分,导致小测时见到附录的题目时一脸懵逼并且老师给了翻书的机会时也根本来不及细看,本周已经及时补上了。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第零周 0/0 1/1 5/5 使用虚拟机安装linux系统,安装ubuntu
第一周 100/100 1/2 20/25 掌握核心的linux命令,了解了linux操作系统
第二周 76/176 1/3 30/55 学会了虚拟机上的C编程
第三周 214/390 1/4 20/75 初步学习计算机中各种数的表示和运算
第五周 138/528 1/5 25/100 通过学习汇编,了解逆向的思想应用
第六周 150/678 1/6 30/130 安装了Y86处理器,了解了ISA抽象
第七周 100/778 1/7 20/150 理解了局部性原理和缓存思想在存储层次结构中的应用
第八周 0/778 2/9 20/170 对前七周的内容进行了查缺补漏
第九周 77/855 2/11 25/195 学习了Unix I/O并且了解了Unix I/O的使用情况
第十周 514/1369 2/13 20/215 实践了常用指令的代码,加深了对指令的理解

参考资料

Copyright © 2024 20145214张宁
Powered by .NET 9.0 on Kubernetes