20145333 《信息安全系统设计基础》期中总结
教材学习内容总结
复习Linux常用命令
常用命令总结
- man -k:
常用来搜索,结合管道使用。例句如下:
man -k k1 | grep k2 | grep 2
搜索同时含有k1和k2,且属于系统调用。
最后的数字意味着帮助手册中的区段,man手册共有8个区段,最常用的是123,含义如下:
1.Linux
2.系统调用
3.c语言
但是当单独用man语句的时候,想查看其中的单独某个区段内的解释时,用法是这样的:
man 3 printf
即查找c语言中printf的用法。
- grep -nr
这条语句可以用来查找关键字,全文搜索,并且可以直接查找文件内的内容。其中:
n:为显示行号
r:为递归查找
例如,如果想查找某个宏,我们已知宏保存在include文件夹中,所以可以使用下列语句:
grep -nr XXX /usr/include(XXX为所要找的宏)
- cheat
cheat是非常好用的“打小抄”搜索工具,能够方便的告诉你你想要的内容。
- sort命令
将文本文件内容加以排序。可针对文本文件的内容,以行为单位来排序。
参数:
m:将几个排序好的文件进行合并。
n:依照数值的大小排序
Linux Bash中,ls . | sort 命令的功能是(显示当前目录内容并排序)
常用工具
- vim
vim是一种非常好用的编辑器,总共有六种基本模式,最常用的是普通模式、插入模式和命令行模式。需要熟悉这三种模式之间的切换方式:
普通→插入: i 或 a
插入→普通: Esc 或 Ctrl + [
普通→命令行: :
命令行→普通:Esc 或 Ctrl + [
常用的进入、保存和退出指令:
进入:vim 文件名
保存:命令行模式 :w
退出:命令行模式 :q
常用动作:
删除:dd删除整行
复制:yy复制整行
粘贴:p
- gcc
常用选项
-c 只编译不链接,生成目标文件.o
-S 只编译不汇编,生成汇编代码
-E 只进行预编译,不做其他处理
-g 在可执行程序中包含标准调试信息
-o file 将file文件指定为输出文件
-v 打印出编译器内部编译各过程的命令行信息和编译器的版本
-I dir 在头文件的搜索路径列表中添加dir目录
编译过程
预处理: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** 创建可执行目标文件
-o后面是接的你给生成的文件指定的名字,如果不指定,则默认为a.out
在命令行上运行这个可执行目标文件需要输入它的名字:
./a.out
其中./代表当前目录。
- gdb
注意:使用GCC编译时要加“-g”参数,然后才能够用gdb调试
GDB最基本的命令有:
gdb programm(启动GDB)
l 查看所载入的文件
b 设断点
info b 查看断点情况
run 开始运行程序
bt 打印函数调用堆栈
p 查看变量值
c 从当前断点继续运行到下一个断点
n 单步运行(不进入)
s 单步运行(进入)
quit 退出GDB
四种断点:
1.行断点
b [行数或函数名] <条件表达式>
2.函数断点
b [函数名] <条件表达式>
3.条件断点
b [行数或函数名] <if表达式>
4.临时断点
tbreak [行数或函数名] <条件表达式>
- 静态库
静态库是一系列的目标文件(.o文件)的归档文件((lib+name).a文 件);链接阶段,选择静态库,后缀名为“.a”;选择动态库,后缀名为“.so”。
静态链接库的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o
静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx//链接到静态库
注意:
-L:在库文件的搜索路径列表中添加dir目录
-l:在头文件的搜索路径列表中添加dir目录
- 共享库
共享库的生成:
gcc -fPIC -c xxx.c
gcc -shared -o libxxx.so xxx.o
共享库的使用:gcc -o main main.c -L. -lxxx
注册共享库的方法:将库文件直接复制到/lib或者/usr/lib目录下: cp (lib+name).so /lib
收获
本学期学习Linux有很多收获的,学到了在Linux中使用命令行来完成一些操作,并且真正对于git有了了解和使用,发现git确实很好用,对于上传的每个代码都可以做详细的注释,在以后的使用中会更加方便。
不足
对于Linux的一些基本命令还不是很熟悉,这些东西不经常用很容易忘掉,还有就是书上的内容很多时候每章的后半部分都是草草略过,毕竟想要把每章100多页的东西完全理解透彻还是需要一定时间的。
课程的建议和意见
我觉得学了半学期让我最有收获的还是前两周我做的缓冲区溢出实验,虽然刚开始做这个实验时还是具有一定的目的性的,但是做到后面时我确实对这个实验产生了很大的兴趣,越做越觉得这个东西学起来很有意思,最后,不仅让我了解了掌握了关于这个实验方面的知识,还在做实验的过程中不断的复习了很多Linux的基本操作,所以我觉得实践才是最好的学习方法。但是,我认为老师在给同学们布置实验时应该给出大概的实验过程和有关的一些资料,让同学们从资料中去了解学习,然后根据给出的大概过程去不断地完善,最后不仅能很大概率的做出实验,还不会让同学们觉得只有一个题目而不知从何下手。