20145306《信息安全系统设计》期中总结
以往考试错题总结
填空:Linux Bash中,Ctrl+a快捷键的作用是(将光标移至输入行头,相当于Home键)
在 Linux 里面可以使用使用(chmod)命令修改文件的权限
Linux中没有C盘,D盘,其文件系统的目录是由(FHS)标准规定好的。
强制删除test文件的命令是(rm -f test )。
查找home目录中昨天创建的文件的命令是(find ~ -ctime 1)
使用tar命令把home目录打包成home.tar的命令是( tar -cf home.tar ~)
(touch test)命令可以创建一个空白文件test。
ls | sort 命令的功能是( 显示当前目录内容并排序 )
使用grep查找当前目录下*.c中main函数在那个文件中的命令是( grep main *.c )
使用wc统计hello.c和main.c共有几行代码的的命令是( wc -l hello.c main.c )
实现“Display files,Sorted by size”功能的ls命令是 ( ls –S )
查找根目录下所有目录的find命令是(find / -type d)
查找宏 STDOUT_FILENO 的值的命令是(grep -nr STDOUT_FILENO /usr/include)
CPU中的(PC或程序计数器)寄存器总指向主存中的某条机器语言指令
Linux系统中,链接器程序是(ld)
(加载器)将可执行文件的内容映射到存储器,并运行这个程序
在main.c中给say_hello函数设置断点 gcc -g *.c -o main b say_hello
Linux中查找配置(configure)网卡(interface)的命令是(man –k configure | grep interface )
gdb中使用命令( until ) 可以跳出循环语句
Linux中,对目标代码test.o进行反汇编的命令是(objdump -d test.o)
两个寄存器(%ebp和%esp)保存着指向程序栈中重要位置的指针。
为单个过程(函数)分配的那部分栈叫(栈帧)
解开sim.tar的Linux命令是(tar -xvf sim.tar)
自己的收获
通过前七周的学习,对计算机系统如存储器的结构和信息在计算机内的表示和处理有了一些基本的认识。在学习的方法上,在读课本之前因该先看看老师写的本周学习目标和学习重点,之后再有目的的看书,遇到不会的问题一定要及时的解决。可以在答疑论坛上提出问题,看看别人是否也遇到了同样的问题。
自己的不足
以前的学习方法不好,直接就看书,没有重点,导致看书很难进行下去;知识点也没能及时引用。今后学习中要加强实践。
对这门课程的意见和建议
这门课程的学习方法挺好的,强调自学。每周的博客以及下一周的周一测试,推动了学习的过程。
学到的知识点
vim 编写c代码并使用gdb进行调试。
常用的linux命令:
man
· 在 Linux 环境中遇到困难,可以使用man (Manual page)命令。要查看相应区段的内容,就在 man 后面加上相应区段的数字即可
· man命令通常与管道命令结合使用
man -k k1 | grep k2 | grep 2grep
· 用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
· -n:在显示符合范本样式的那一列之前,标示出该列的列数编号。
-r:为递归查找
cheat命令
cheat是非常好用搜索工具,能够方便的告诉你你想要的内容。cat
· 参数:
-n 由 1 开始对所有输出的行数编号
-b 和 -n 相似,只不过对于空白行不编号
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行find
· 用法 : find
将档案系统内符合描述的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。
将目前目录及其子目录下所有延伸档名是 c 的档案列出来:# find . -name "*.c"
将目前目录其其下子目录中所有一般档案列出:# find . -ftype f
将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出:# find . -ctime -20locate
· 使用方式: locate [-q] [-d ] [--database=]
说明:locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了sort
· 将文本文件内容加以排序。可针对文本文件的内容,以行为单位来排序。
· 参数:
-m:将几个排序好的文件进行合并。
-n:依照数值的大小排序
du
· 显示目录或文件的大小。du会显示指定的目录或文件所占用的磁盘空间。
· 参数:
-a:显示目录中个别文件的大小。
-b:显示目录或文件大小时,以byte为单位。
-c: 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。ls
· 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
· 参数:
-a 显示所有档案及目录
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-t 将档案依建立时间之先后次序列出
· 列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" : ls -AF
如何设置和使用一个静态库
静态函数库:.a;
利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,
编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。
如果静态函数库改变了,那么你的程序必须重新编译。
gcc -c hello.c
ar rcvs libhello.a hello.c
gcc main.c -o main -L. -lhello (or gcc main.c ./libhello.a -o main)
怎么样设置和使用一个动态库
动态函数库:.so;
动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。
由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。
动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。
动态库的生成:gcc -fPIC -c xxx.c
gcc -shared -o libxxx.so xxx.o
·共享库的使用:gcc -o main main.c -L. -lxxx
编写Makefile编译代码
代码托管链接