20144303《信息安全系统设计基础》期中总结
20144303《信息安全系统设计基础》期中总结
复习Linux常用命令
man:
- 在Linux环境中,如果你遇到困难,可以使用man命令,它是Manual page的缩写。
- man命令通常与管道命令结合使用:
如:man -k k1 | grep k2 | grep 2
这表示搜索同时含有k1和k2,且属于系统调用。
最后的数字意味着帮助手册中的区段,man手册共有8个区段,最常用的是123,含义如下:
- Linux
- 系统调用
- c语言
输入man man 查看man的使用手册:
输入man -k printf查看printf的用法:
输入man 3 printf 查看C语言中printf的用法:
cheat:
用man来查看帮助和选项,里面的描述太长,无法短时间获得想要的信息。使用cheat可以更快的学习到如何使用一个命令名。
用法:cheat+命令名
grep:
查找宏 STDIN_FILENO 的值的命令是:grep -nr XXX /usr/include
该语句可以用来查找关键字,全文搜索,并且可以直接查找文件内的内容。其中:
- n:为显示行号
- r:为递归查找
比如:查找宏 STDOUT_FILENO 的值的命令是(grep -nr STDOUT_FILENO /usr/include)
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 :使查找在进入子目录前先行查找完本目录
cd:
- 进入上一级目录:cd ..
- 进入你的“home”目录:cd ~ 或者 cd /home/
- 使用 pwd 获取当前路径:pwd
新建文件:
- 使用 touch 命令创建空白文件
- 使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性
- 使用 -p 参数,同时创建父目录
- 使用cp(copy)命令复制一个文件或目录到指定目录。将之前创建的"test"文件复制
- 要成功复制目录需要加上-r或者-R参数,
- 使用rm(remove files or directories)命令,删除一个文件或目录:
- 使用mv(move or rename files)命令,移动文件(剪切)。将文件"file1"移动到"Documents"目录mv 源目录文件 目的目录
vim:
三种模式的切换:
- 命名行模式中vim +文件名进入vim普通模式
- 普通模式中按i或a键都可以进入插入模式
- 在插入模式中是使用esc键可以退出到普通模式
- 普通模式中输入:wq回车后保存并退出vim
- 光标的移动:
上、下、左、右方向键可以达到相应效果,字母h、j、k、l也可以在插入模式中使光标进行移动。
gcc:
编译并运行一个简单的hello.c:
- 预处理: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:
- gcc -g xxx.c -o xxx
- gdb xxx
查看源码:
- (gdb) l:进行行号提示
- (gdb) b n:在第n行设置断点
- (gdb) r:运行代码,运行至断点处
- (gdb) n:单步运行
- (gdb) c:使程序继续往下运行,直到再次遇到断点或程序结束
- (gdb) q:退出GDB
- (gdb) watch n:在"n"设置了观察点,观察变量的变化情况
- gdb中使用命令(break main)设置main函数断点。
- gdb中使用命令(until)可以跳出循环语句。
- gdb中next和step都可以单步跟踪,根据自顶向下原则应该优先选用next
- GDB中以16进制形式打印%eax中内容的命令是(print /x $eax)
makefile:
功能 :识别文件代码是否更新,减少编译工作量
makefile文件的编写规则
格式为:
- 目标体:依赖文件
- [tab键]各目标体运行命令
- 目标体:由make创建,通常是目标文件或可执行文件
- 依赖文件:创建目标体所依赖的文件
- 运行命令:创建每个目标体时需要的运行命令,必须以tab键开头。
- 使用make的格式:make 目标体
makefile变量的定义:
- 递归展开方式:在引用该变量时进行替换(不能用于引用自己的情况),缺点:不能在变量后追加内容。
- 格式定义:VAR = var
- 非递归展开方式:在定义处展开,并只展开一次。优点:消除变量的嵌套引用。
- 格式定义:VAR := var
- make中变量的使用格式: $(变量名)
- 变量名的命名:不包括“:”、“#”、“=”以及结尾空格的任何字符串;变量名大小写不敏感。
- 变量分类:用户自定义变量、预定义变量、自动变量及环境变量。
自己的收获
通过八周的学习,掌握了linux的一些基本命令和操作。在本学期的开始,由于思想上的放松导致了身体上的懒惰,很多学习内容没有学到位,有很多知识也只是粗略的了解,导致在第六周的时候加入了老师的“待及格队伍”。但也正是从那个时候开始,改变了学习态度,能够认真的自学书上的知识,开始自己动手实践、发现问题、解决问题。包括基本的linux安装、git安装使用、gcc、vim都是受到“刺激”之后动手学习的。之后,掌握了学习这门课的正确方法,学习也变得轻松愉快了许多,自然而然的也就不再觉得写博客是一种累赘,也真正的学到了一些东西。感谢老师能让我们早点看到自己在学习上的缺陷和漏洞,感知到“不及格”的危险,让我们从“不愿意学”到“被赶着学”,最后做到“享受学习的过程”。
自己的不足
在学习时遇到问题,我总是想着去问别人如何解决,总是想着这样能尽快把问题解决完,不能做到先自己想办法解决。在接下来的学习中要尽量改掉这个缺点,遇到问题先自己多想想。还有就是这周残留下来的问题,可能下周学习新的内容时就会忘掉,导致有很多遗留的问题没能及时解决。打算以后把每周遇到的问题先全部总结起来,然后先自己解决,解决一个删去一个,然后再询问老师同学,没能解决的加到下周的学习任务中。另外,接下来应该把学习提前到周一就开始,不能到周末才急急忙忙的想着学习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 20/20 | |
第二周 | 300/300 | 1/2 | 20/40 | |
第三周 | 300/600 | 1/3 | 20/60 | |
第五周 | 200/800 | 2/5 | 20/80 | |
第六周 | 100/900 | 2/7 | 20/80 | |
第七周 | 160/1060 | 1/8 | 20/100 | |
第八周 | 0/1060 | 2/9 | 20/120 |