20144303《信息安全系统设计基础》期中总结

20144303《信息安全系统设计基础》期中总结

复习Linux常用命令

man:

  • 在Linux环境中,如果你遇到困难,可以使用man命令,它是Manual page的缩写。
  • man命令通常与管道命令结合使用:

如:man -k k1 | grep k2 | grep 2

这表示搜索同时含有k1和k2,且属于系统调用。

最后的数字意味着帮助手册中的区段,man手册共有8个区段,最常用的是123,含义如下:

  1. Linux
  2. 系统调用
  3. 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
posted @ 2016-11-06 21:23  20144303石宇森  阅读(143)  评论(2编辑  收藏  举报