2017-2018-1 20155313 《信息安全系统设计基础》第四周学习总结

2017-2018-1 20155313 《信息安全系统设计基础》第四周学习总结

学习任务

补充完成课上没有完成的内容(2分)

学习教材附录A,第十章内容

参考别出心裁的Linux系统调用学习法,学习视频,掌握两个重要命令:

man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用

grep -nr XXX /usr/include :查找宏定义,类型定义

完成head,tail的使用,相关API的分析,伪代码,产品代码,测试代码的编写(3分)

发表相关内容的学习博客(课堂上完成实践内容的可以选做),博客标题“2017-2018-1 学号 《信息安全系统设计基础》第四周学习总结”,博客(随笔)要通过作业提交,截至时间 本周日 23:59。


课堂任务

这次课堂任务完成度达到80%,可是在调试好调用文本主函数的以后,打印出来的od出现了乱码,在课堂时间没有发现原因是什么,所以选择了直接提交。

课下在学习中发现了问题,因为在定义字符串STR[1000]的时候没有进行初始化,所以在后面读取完文本以后,字符串STR就生成了乱码。

课下对STR[1000]进行了初始化,定义字符串初始值为0,就不会出现乱码的情况。

课下对myod_2.c文件又进行了调试最终运行的myod文件实现了与od -tx1 -tc命令几乎相同的效果,以下是课堂截图与课下截图。


课堂笔记


man -k read | grep 2(搜到的结果用2过滤)

man -k read | grep 2 | grep file

man -k find | grep 3(寻找查找的功能并用3过滤)


课上老师讲了通过man命令来查找Linux命令的详细介绍,然后通过自己学习介绍中的信息理解该命令。以上是我课堂记录的关系关键字检索的命令。

grep 数字是一个过滤除此结构的信息的命令,过滤的数字是指具体如下所示:

1、Standard commands (标准命令)

2、System calls (系统调用)

3、Library functions (库函数)

4、Special devices (设备说明)

5、File formats (文件格式)

6、Games and toys (游戏和娱乐)

7、Miscellaneous (杂项)

8、Administrative Commands (管理员命令)

9、其他(Linux特定的), 用来存放内核例行程序的文档。

也可以通过命令行输入man man来进行查看。

grep -nr O_RDONLY /user/include

课堂上我还记录了老师写的另一条代码,但是当时并不是很明白什么意思,所以通过课下学习对此命令进行了理解。

grep是Linux中查找文本内容的命令,参数后面的搜索内容O_RDONLY是指read only只可读文件的意思,最后的内容是指搜索位置。

附grep的参数列表:


-a或--text   不要忽略二进制的数据。

-A<显示列数>或--after-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之后的内容。
  
-b或--byte-offset   在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。

-B<显示列数>或--before-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前的内容。

-c或--count   计算符合范本样式的列数。

-C<显示列数>或--context=<显示列数>或-<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

-d<进行动作>或--directories=<进行动作>   当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-e<范本样式>或--regexp=<范本样式>   指定字符串做为查找文件内容的范本样式。

-E或--extended-regexp   将范本样式为延伸的普通表示法来使用。

-f<范本文件>或--file=<范本文件>   指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。

-F或--fixed-regexp   将范本样式视为固定字符串的列表。

-G或--basic-regexp   将范本样式视为普通的表示法来使用。

-h或--no-filename   在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

-H或--with-filename   在显示符合范本样式的那一列之前,表示该列所属的文件名称。

-i或--ignore-case   忽略字符大小写的差别。

-l或--file-with-matches   列出文件内容符合指定的范本样式的文件名称。

-L或--files-without-match   列出文件内容不符合指定的范本样式的文件名称。

-n或--line-number   在显示符合范本样式的那一列之前,标示出该列的列数编号。

-q或--quiet或--silent   不显示任何信息。

-r或--recursive   此参数的效果和指定“-d recurse”参数相同。

-s或--no-messages   不显示错误信息。

-v或--revert-match   反转查找。

-V或--version   显示版本信息。

-w或--word-regexp   只显示全字符合的列。

-x或--line-regexp   只显示全列符合的列。

-y   此参数的效果和指定“-i”参数相同。

--help   在线帮助。


课下任务

head命令的c语言编写

通过man head命令得知head命令是输出文件的前面部分,具体的输出模式需要参照具体参数。

head的命令的具体格式为:head [OPTION]... [FILE]...

输出截图如下所示。


tail命令的c语言编写

通过man tail命令查看tail命令的作用,是输出文件的结尾部分或文件更新部分,具体的输出模式需要参照具体参数。

tail的命令具体格式为:tail [OPTION]... [FILE]...

tail命令是一个与head命令输出形式差不多,输出顺序不同或者相反的一个命令。

输出截图如下所示。


参考资料

Linux的tail 与head 命令

原文地址:https://www.cnblogs.com/bonsai/p/7668375.html