20145212 《信息安全系统设计基础》期中总结
一、学习内容重点
1.Linux核心命令
Linux中命令格式为:command [options] [arguments]
[]表示是可选的,即组成结构为:命令 [选项] [参数]
man命令
- man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
常用选项:
-a:在所有的man帮助手册中搜索
-k:根据关键字搜索联机帮助,是一种模糊搜索
-f:关键字精确搜索,等价于whatis指令,显示给定关键字的简短描述信息
-P:指定内容时使用分页程序
-M:指定man手册搜索的路径
grep命令
- grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
常用选项:
-c:只输出匹配行的计数
-I:不区分大小写(只适用于单字符)
-h:查询多文件时不显示文件名
-l:查询多文件时只输出包含匹配字符的文件名
-n:显示匹配行及行号
-s:不显示不存在或无匹配文本的错误信息
-v:显示不包含匹配文本的所有行
-nr:查找文件中的某些关键字符串
grep -nr XXX /usr/include
的意思:查找叫XXX的宏,已知宏保存在include文件夹中。
cheat命令
- cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。
find命令
- cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。
常用选项:
-name:按照文件名查找文件
-perm:按照文件权限来查找文件
mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
-newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件
-type:查找某一类型的文件,诸如:b - 块设备文件,d - 目录,c - 字符设备文件,p - 管道文件,l - 符号链接文件,f - 普通文件
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
-depth:查找文件时先查找当前目录中的文件,然后再在其子目录中查找
2.Linux下的程序开发
vim
VIM下三种常用的模式及其切换
普通模式(Normal mode):在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。在普通模式中,进入插入模式比较普通的方式是按a(append/追加)键或者i(insert/插入)键。
按键 | 说明 |
---|---|
h | 左 |
l | 右 |
j | 下 |
k | 上 |
w | 移动到下一个单词 |
b | 移动到上一个单词 |
插入模式(Insert mode):在插入模式中,可以按ESC键回到普通模式。
命令 | 说明 |
---|---|
i | 在当前光标处进行编辑 |
I | 在行首插入 |
A | 在行末插入 |
a | 在光标后插入编辑 |
o | 在当前行后插入一个新行 |
O | 在当前行前插入一个新行 |
cw | 替换从光标所在位置后到一个单词结尾的字符 |
命令行模式(Command line mode):在命令行模式中,执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
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
GDB
- GDB最基本的命令有:
gdb programm(启动GDB)
l
列出源码,相当于list
b
设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
run
开始运行程序
bt
打印函数调用堆栈
p
查看变量值
c
从当前断点继续运行到下一个断点
n
单步运行
s
单步运行
quit
退出GDB
Makefile
- 一个工程中的源文件不计其数,按其类型、功能、模块分别放在若干个目录中。makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。一但写好,只需要一个make命令,整个工程完全编译,极大的提高了软件的开发效率。
makefile文件编写规则:
目标文件:由make创建,通常是目标文件或可执行文件
依赖文件:创建目标体所依赖的文件
运行命令:创建每个目标体时需要的运行命令,必须以tab键开头
使用make的格式:make 目标文件
静态库与动态库
静态库
- 静态链接库的生成:
ar rcsv libxxx.a xxx.o
- 静态库的使用:
gcc -o main main.c -L. -lxxx
动态库
- 动态库的生成:
gcc -fPIC -c xxx.c
gcc -shared -o libxxx.so xxx.o
- 动态库的使用:
gcc -o main main.c -L. -lxxx
3.重点章节博客链接
1.第1周学习总结 链接
2.第2周学习总结 链接
3.第3周学习总结 链接
4.第5周学习总结 链接
5.第6周学习总结 链接
6.第7周学习总结 链接
二、考试题目
三、期中总结
1.自己新学到的知识点总结
- 学会用命令行操作Linux系统。
- 学会在Linux系统下进行C语言的编程。
- 学习了汇编与反汇编,从更基础的层面理解了计算机系统。
- 理解了计算机系统之后,以往编写的C程序时出现的不懂的很多问题都迎刃而解。
2.自己的收获
- 上学期接触的JAVA课程的学习模式让我对这种自主学习的模式逐渐熟悉了起来,在这门课的学习中没有像上学期那样刚开始接触这种教学模式的生疏感。
- 当自己看书的时候,虽然还是有很多不是很懂的东西,却基本上都能通过看别人的博客和自己练习将知识点弄清楚,自主学习能力得到了毋庸置疑的提升。
- 对于操作系统理解的深入,可以弄清楚很多以前存下的疑惑。编程的时候也不再需要求助他人,这种感觉很棒。
3.自己的不足
- 在看一些概念很多的章节的时候,我往往会偷懒跳过那些看似冗杂的知识点。这样就疏漏了许多细节性的问题,考试的时候也容易出错。看书还是不能偷懒。
- 对于有的难点问题没有一问到底,有的题只掌握了方法没有掌握原理。在编程的时候一知半解往往是很致命的。
- 没有及时复习,看过的一些知识点会忘记。
- 有两次对当周需要学习的内容有些遗漏,这一点我一定会注意。
4.课程建议和意见
自主学习的模式对于自律性强、学习性主动的人而言十分适合,但是对于一些不那么主动学习的学生来说,还是需要更多的鞭策,尤其是对于一些比较深刻难理解的章节,我更希望老师能在课上集中的讲解一下。并且对于一些考试出错率很高的题目,希望老师可以在上课的时候强调一下,这样也许对于我们深刻的理解章节内容更加有帮助。