20145210《信息安全系统设计基础》期中总结
20145210《信息安全系统设计基础》期中总结
自己新学到的知识点总结
本学期学习Linux,感觉自己学到的基本都是新的知识点,我在此对感触比较深,收获比较大的几个方面进行总结:
首先,本学期我第一次接触到虚拟机,ubuntu系统。因为种种原因,我安装了好多次的虚拟机,对于虚拟机的安装我还是很有印象的。在学习的过程中,我也对ubuntu系统越来越熟悉,越来越会用,感觉ubuntu系统还是很方便的,不过可能是因为计算机的原因,我的虚拟机速度很慢
Linux命令:
•Ubuntu快捷键
•CTRL+ALT+T:打开终端;
•CTRL+SHIFT+T:新建标签页;
•ALT+数字N:终端中切换到第N个标签页;
•Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成;
•上下键盘:切换命令历史,刚输入一个很长的命令,按上键就可以恢复;
•CTRL+C:中断程序运行。
•Linux命令(系统调用)
•命令格式:command [options] [arguments];
•括号是可选的,有些命令不需要选项也不需要参数;
•选项(option)是调整命令执行行为的开关,选项不同决定了命令的显示结果不同,参数(arugment)是指命令的作用对象。
•ls命令(库函数)
•ls或ls .是两条等价的命令,显示当前目录的内容。这里“.”就是参数,表示当前目录,这个参数缺省可以省略;
•ls -a .命令表示显示当前目录中的所有内容,包括隐藏文件和目录
•man命令
•man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
•常用选项:
•-a:在所有的man帮助手册中搜索
•-k:根据关键字搜索联机帮助,是一种模糊搜索
•-f:关键字精确搜索,等价于whatis指令,显示给定关键字的简短描述信息
•-P:指定内容时使用分页程序
•-M:指定man手册搜索的路径
•参数:
•数字:指定从哪本man手册中搜索帮助
•关键字:指定要搜索帮助的关键字
•多关键字查找:man -k key1 | grep key2 | grep key3 |
•man -k 等价的命令apropos,使用man -k找到命令后,可以用man -f cmd查看命令的基本功能。
•man -f等价于whatis
•cheat 命令
•cheat命令是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。
•cheat命令简单来说,就是告诉你一个命令如何使用。它没有提供其他额外多余的信息,只通过使用实例告诉你一个命令如何使用
•grep命令
•grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
•命令格式:grep [options]
•[options]主要参数:
•-c:只输出匹配行的计数
•-I:不区分大小写(只适用于单字符)
•-h:查询多文件时不显示文件名
•-l:查询多文件时只输出包含匹配字符的文件名
•-n:显示匹配行及行号
•-s:不显示不存在或无匹配文本的错误信息
•-v:显示不包含匹配文本的所有行
•正则表达式主要参数:
•\:忽略正则表达式中特殊字符的原有含义
•^:匹配正则表达式的开始行
•$:匹配正则表达式的结束行
•\<:从匹配正则表达式的行开始
•\>:到匹配正则表达式的行结束
•[ ]:单个字符,如[A]即A符合要求
•[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求
•。:所有的单个字符
•*:有字符,长度可以为0
•其他核心命令
•find:查找一个文件在系统中的什么位置,可以通过cheat find学习find命令。
•locate:神速版本的find(Windows下有个神器Everything和locate功能类似)。
•grep :可以对文件全文检索。通过grep -n main *.c可以快速找到main在哪个C文件中并指出在第几行。grep支持正则表达式,可以通过cheat grep学习grep命令。
•whereis、which:告诉你使用的命令工具装在什么地方。我们在Linux下上网使用firefox浏览器,大家可以使用whereis firefox或更精确的使用which firefox来看看结果。
•apt-cache:可以在使用apt-get install安装一个程序时先找找软件源的库里有没有这个程序,有才可以安装。
vim
•vim有6种基本模式,常用的是普通模式、插入模式和命令行模式
•普通模式:在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。在普通模式中,进入插入模式比较普通的方式是按a(append/追加)键或者i(insert/插入)键。
•插入模式:在插入模式中,可以按ESC键回到普通模式。
•可视模式:命令多与字母v有关,移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。
•选择模式:这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
•命令行模式:在命令行模式中,执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
•Ex模式:这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令
•三种常用模式的切换
•vim启动进入普通模式;
•处于插入模式或命令行模式时只需要按Esc或者Ctrl+[即可进入普通模式;
•普通模式中按i(插入)或a(附加)键都可以进入插入模式;
•普通模式中按:进入命令行模式;
•命令行模式中输入wq回车后保存并退出vim
•退出vim(常用):
•命令行模式下退出vim:从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑。
•普通模式下退出vim:普通模式下输入Shift+zz即可保存退出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
•使用gcc编译一个c程序
•打开的gvim环境中输入i进入编辑模式,输入代码,保存为hello.c文件
•在XfceTerminal打开后的界面中输入:gcc hello.c -o hello,编译成功,将会在当前目录生成一个可执行文件 hello
•继续输入:./hello 就会运行该程序
•gcc编译常用选项
•-E:只预编译
•-S:只编译不汇编
•-o:将file文件指定为输出文件
•-c:只编译不链接
•-I dir:在头文件的搜索路径列表中添加dir目录
•-g:在可执行程序中包含标准调试信息
•库选项
•-static:进行静态编译,即链接静态库、禁止使用动态库
•-shared:生成动态库文件、进行动态编译,在没有动态库时才会链接同名静态库
•-L dir:在库文件的搜索路径列表中添加dir目录
•-lname、-fPIC:生成使用相对地址的位置无关的目标代码,然后使用gcc的-static选项从该PIC目标文件生成动态库文件
•共享库
•共享库的生成:gcc -fPIC -c xxx.c gcc -shared -o libxxx.so xxx.o;
•共享库的使用:gcc -o main main.c -L. -lxxx
•注册共享库的方法:
•修改/etc/ld.so.conf文件
•修改LD_LIBRARY_PATH环境变量
•将库文件直接复制到/lib或者/usr/lib目录下:cp (lib+name).so /lib
•静态库
•链接阶段,选择静态库,后缀名为“.a”,选择动态库,后缀名为“.so”。
•静态链接库的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o;
•静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx //链接到静态库;
•注意:-L:在库文件的搜索路径列表中添加dir目录,-l: 在头文件的搜索路径列表中添加dir目录。
gdb
•gdb调试c程序
1.打开的gvim环境中输入i进入编辑模式,输入代码,保存为gdb.c文件
2.在XfceTerminal打开后的界面中输入:gcc –g gdb.c -o testgdb,生成一个可执行文件testgdb
3.输入gdb testgdb 启动gdb
4.键入 l命令(gdb) l相当于list命令,从第一行开始列出源码
5.设置断点:(gdb) break 16:设置断点,在源程序第16行处;(gdb) break func :设置断点,在函数func()入口处。
6.输入(gdb) info break 查看断点信息。
7.输入(gdb) r 运行程序,run命令简写
8.输入(gdb) n单条语句执行,next命令简写。
9.输入(gdb) c 继续运行程序,continue命令简写。
10.输入(gdb) p i打印变量i的值,print命令简写。
11.输入(gdb) bt查看函数堆栈。
12.输入(gdb) finish退出函数。
13.输入(gdb) q退出gdb
•gdb基本命令
•gdb programm:启动GDB)
•b:设断点,在b后加入相对应的行号,例:b 6
•run:开始运行程序
•bt:打印函数调用堆栈
•p:查看变量值。例:p n
•c:从当前断点继续运行到下一个断点
•n:单步运行
•s:单步运行(s会进入函数,n不会进入函数)
•quit:退出GDB
•display:跟踪变量值的改变
•until:跳出循环
•finish:跳出函数
•help:帮助
•断点的设置:
•函数:b 文件名.c:函数名
•行:b 行数
•条件:b 行数 if 表达式(例如:b 9 if == 12)
•临时:tb [文件名:]行号或函数名 <条件表达式>
makefile
makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。其带来的好处就是——“自动化编译”,一但写好,只需要一个make命令,整个工程完全编译,极大的提高了软件的开发效率。
•makefile 基本规则
1.打开的gvim环境中输入i进入编辑模式,输入代码,保存为prog.c、 code.c、 code.h文件
2.输入vim Makefile,输入i进入编辑模式,输入代码并保存
3.输入make,进行自动化编译
4.执行./test查看结果
•makefile文件编写规则:
•目标文件:由make创建,通常是目标文件或可执行文件
•依赖文件:创建目标体所依赖的文件
•运行命令:创建每个目标体时需要的运行命令,必须以tab键开头
•格式为:目标文件:依赖文件列表 [tab键]各目标体运行命令(注意不是空格)
•使用make的格式:make 目标文件
•makefile变量的定义:
•递归展开方式:在引用该变量时进行替换(不能用于引用自己的情况),缺点:不能在变量后追加内容
•格式定义:VAR = var
•展开方式:在定义处展开,并只展开一次。优点:消除变量的嵌套引用
•格式定义:VAR := var
•make中变量的使用格式: $(变量名)
•变量名的命名:不包括“:”、“#”、“=”以及结尾空格的任何字符串;变量名大小写不敏感
教材知识点
教材里的知识对于我来讲有一些还是比较抽象的,但是在学习的过程中我也有很多的收获,对于计算机信息的表示与存储、计算机中汇编代码的具体意义还有计算机存储结构、存储流程还是有了一定的了解。按照书上的说明、表格、例子,我做了相应的练习题,觉得计算题的准确率还是比较高的,对于代码题,有一部分是能够理解,一次就能做对的,有些是做错了,需要自己思考、请教同学才能理解的,有一些就是比较抽象,不是很理解的。
总体来说教材上的知识很多很全很丰富,自己看一遍也能有很大的收获,不过感觉相较于教材上的内容,能真正装进脑子的并不是很多,还需要多加练习,多看书才能真正地学会。
自己的收获
本学期的学习模式和上学期是一样的,说起我最大的收获,可能是一种坚持看书的学习方法和生活方式吧。现在的学习大部分是依靠操作计算机来完成的,本学科让我们能够回归教材,锻炼我们自省自学的能力,让我们能够在每天抱着电脑学习的同时不忘学习书本上的知识,这是一种很好的学习方式,也是能够让我们真正踏实地、一步一个脚印地学习的机会。
自己的不足
我觉得我在动手操作这部分可能还需要加强,在刚开始学习的时候安装配置虚拟机真的占用了很多的时间,可能有客观因素的影响,但我觉得还是我的动手能力不强,学的东西表面化,没有真正理解命令里每一个部分的真正含义,在以后的学习过程中,我还需要踏踏实实地学习,多动脑,多动手,多操作,多问问题。
课程建议和意见
我们这门课每周的学习任务包括:看书、到实验楼看实验要求,做实验、看老师给的一些学习链接等等,个人觉得学习的内容太分散,不仅需要学习教材上纸质版的内容,还需要点很多链接,看很多网页版的内容,如果能够把学习的内容整合到一起的话,学习的效率会更高一些。
可能每个人的学习习惯和学习方法都不一样,我就还是比较喜欢看书,看一些纸质版的材料,笔记的话也比较喜欢写在本子上或者教材上,对于我来讲,写字还是比打字更快,在书上标注的话也更加直观。
posted on 2016-11-02 21:56 20145210姚思羽 阅读(138) 评论(2) 编辑 收藏 举报