20145335郝昊 《信息安全系统设计基础》期中总结
教材学习内容总结
复习Linux常用命令
man命令:
-
是Linux下帮助指令,
man
是manul
的缩写,我们可以通过man man
来查看man的帮助 -
选项:
-a
:在所有man帮助手册中搜索-k
:根据关键字搜索联机帮助,是一种模糊搜索-f
:关键字精确搜索,显示给定关键字的简短描述信息-p
:指定内容时使用分页程序-M
:指定man手册搜索的路径
-
参数:
- 数字:指定从某本man手册中搜索帮助
- 关键字:指定要搜索帮助的关键字
-
常用命令:
man printf
:普通Linux命令man 1 printf
:操作系统提供的服务接口man 3 printf
:函数库,c语言中的函数man -k sort
:排序定位
cheat命令
- 是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。它没有提供其他额外多余的信息,只通过使用实例告诉你一个命令如何使用。
grep命令
-
Linux系统中
grep
命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。命令格式:grep [options]
-
主要参数:
-
-c
:只输出匹配行的计数 -
-I
:不区分大小写(只适用于单字符) -
-h
:查询多文件时不显示文件名 -
-l
:查询多文件时只输出包含匹配字符的文件名 -
-n
:显示匹配行及行号 -
-s
:不显示不存在或无匹配文本的错误信息 -
-v
:显示不包含匹配文本的所有行 -
如果想查找某个宏,我们已知宏保存在include文件夹中,所以可以使用下列语句:
grep -nr XXX /usr/include(XXX为所要找的宏)
find命令
-
find命令用来在指定目录下查找文件。
-
常用选项:
-name filename
:查找名为filename的文件-mtime -n +n
:按文件更改时间来查找文件,-n指n天以内,+n指n天以前-atime -n +n
:按文件访问时间来查GIN: 0px">-ctime -n +n
:按文件创建时间来查找文件,-n指n天以内,+n指n天以前-newer f1 !f2
:查更改时间比f1新但比f2旧的文件-type b/d/c/p/l/f
:查是块设备、目录、字符设备、管道、符号链接、普通文件-size n[c]
:查长度为n块[或n字节]的文件-size n[c]
:查长度为n块[或n字节]的文件-depth
:使查找在进入子目录前先行查找完本目录
locate命令
-
locate
命令是Linux一种查找命令,但是要比find命令快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb
),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。如指定范本为kcpaner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。 -
常用选项:
-
-e
:将排除在寻找的范围之外 -
-f
:将特定的档案系统排除在外 -
-q
:安静模式,不会显示任何错误讯息 -
-n
:至多显示 n个输出 -
-r
:使用正规运算式 做寻找的条件 -
-o
:指定资料库存的名称 -
-d
:指定资料库的路径 -
-h
:显示辅助讯息 -
-V
:显示程式的版本讯息
whereis命令
whereis
,which
告诉你使用的命令工具装在什么地方,比如用whereis firefox
、which firefox
这两个命令查找firefox所在的目录
IS命令
-
显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
-
参数:
-
a
:显示所有档案及目录 -
A
:与a相同,不列出目前目录及父目录
-
-
Linux Bash中,把ls命令显示当前目录的结果存入
ls.txt
的命令输出重定向命令是(ls > ls.txt
)
vi、gcc、gdb、make的使用
vi
-
三种模式的切换:
- 命名行模式中
vim +文件名
进入vim普通模式 - 普通模式中按
i
或a
键都可以进入插入模式 - 在插入模式中是使用
esc
键可以退出到普通模式 - 普通模式中输入
:wq
回车后保存并退出vim
- 命名行模式中
-
光标的移动
上、下、左、右方向键可以达到相应效果,字母
h
、j
、k
、l
也可以在插入模式中使光标进行移动。
GCC基本操作
- 预处理:
gcc –E hello.c –o hello.i;gcc –E
调用cpp
- 编 译:
gcc –S hello.i –o hello.s;gcc –S
调用ccl
- 汇 编:
gcc –c hello.s –o hello.o;gcc -c
调用as
- 链 接:
gcc hello.o –o hello ;gcc -o
调用ld
- 运行:
./hello
GDB调试
-
进入gdb:
gdb+文件名
-
常用参数:
l
:进行行号提示b n
:在第n行设置断点r
:运行代码,运行至断点处n
:单步运行q
:退出GDB
-
四种断点:
- 函数断点:
b 函数名 条件表达式
- 行断点:
b 行/函数名 条件表达式
- 条件断点:
b 行/函数名 if表达式
- 临时断点:
tbreak 行数或函数名 条件表达式
- 函数断点:
Makefile的使用
-
首先$ vim Makefile,识别文件代码是否更新,减少编译工作量
-
常用命令
- test
: prog.o code.o
gcc prog.o code.o -o test
- prog.o
: prog.c code.h
gcc -c prog.c -o prog.o
- code.o
: code.c code.h
gcc -c code.c -o code.o
- clean
:
rm -f *.o test
自己的收获
-
学习了Linux系统操作,这与原来一直接触的Windows系统还是有很大的不同的,学习了半学期的《信息安全系统设计基础》的课程,对于在Linux环境下操作和学习还是对于电脑有很多的提高,不论是从简单的使用命令
man
、find
、locate
等,还是一些上升难度的代码的编译与分析GCC
、GDB
等都有提高
-
这周的复习前7章的知识点也有了收获,对于之前没有掌握或理解透彻的知识点也得到了复习,比如GDB断点的调试练习,再之前的学习中并没有掌握扎实。这次使用GDB对书上的一个代码进行分析,逐步调试,分析栈帧的变化。不仅书熟练掌握了GDB的使用,也掌握了栈帧的变化。
自己的不足
-
最大的不足在于有拖延,总是想着一周的博客内容放在周末再去完成,在周末加班加点完成博客,平时看看书就好。但是这样是错误的,这样仅仅是将学习当成一件任务去完成,而且完成的任务的质量也并不高。就像最初的健身教练与学员的关系一样,学员不能因为教练教了动作要领就认为自己也掌握了动作的精髓,所以在拖延方面还有待提高,需要去努力。
-
学习过的课程没有很及时的复习,很多知识在周测验结束后就认为已经掌握了,在等到真正运用的时候发向并没有掌握。在最初的Linux基本命令认为已经掌握了,但是等运用的时候删除一个文件夹简单的rm+文件名都不能很熟练的使用。所以在课程复习方面需要步步抓紧,才能对学习理解的更透彻
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | 掌握核心的linux命令,了解了linux操作系统 |
第二周 | 300/500 | 2/4 | 18/38 | 学会了虚拟机上的C编程 |
第三周 | 500/1000 | 3/7 | 22/60 | 初步学习计算机中各种数的表示和运算 |
第五周 | 300/1300 | 2/9 | 30/90 | 通过学习汇编,了解逆向的思想应用 |
第六周 | 300/1500 | 2/11 | 28/110 | 安装了Y86处理器,了解了ISA抽象 |
第七周 | 150/1700 | 2/13 | 30/130 | 学习了存储器的体系结构 |
第八周 | 200/1900 | 2/15 | 30/150 | 复习前7章知识 |