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


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

    知识点总结

    常用的Linux命令

    • Linux中命令格式为:command [options] [arguments] []表示是可选的,即组成结构为:命令 [选项] [参数]

    man命令

    • man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
    • 常用选项:
      1. -a:在所有的man帮助手册中搜索
      2. -k:根据关键字搜索联机帮助,是一种模糊搜索
      3. -f:关键字精确搜索,等价于whatis指令,显示给定关键字的简短描述信息
      4. -P:指定内容时使用分页程序
      5. -M:指定man手册搜索的路径
    • 参数:
      1. 数字:指定从哪本man手册中搜索帮助
      2. 关键字:指定要搜索帮助的关键字
    • man -k:常用来搜索,结合管道使用。例句如下:man -k k1 | grep k2 | grep 2

    cheat命令

    • 在linux上,man命令几乎是万能的,但它却不是最高效的。由于它给出的帮助信息很长,在短时间内不好理解,所以在这种情况下,用cheat命令更方便,cheat命令简单来说,就是告诉你一个命令如何使用。它没有提供其他额外多余的信息,只通过使用实例告诉你一个命令如何使用。

    grep命令

    • grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
    • 命令格式:grep [options]
    • [options]主要参数:
      1. -c:只输出匹配行的计数
      2. -I:不区分大小写(只适用于单字符)
      3. -h:查询多文件时不显示文件名
      4. -l:查询多文件时只输出包含匹配字符的文件名
      5. -n:显示匹配行及行号
      6. -s:不显示不存在或无匹配文本的错误信息
      7. -v:显示不包含匹配文本的所有行
    • 如果想查找某个宏,我们已知宏保存在include文件夹中,所以可以使用下列语句:grep -nr XXX /usr/include(XXX为所要找的宏)

    find命令

    • find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
    • 命令格式:find pathname -options [-print -exec -ok ...]
    • 参数:
      1. pathname:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录
      2. print:find命令将匹配的文件输出到标准输出
      3. exec:find命令对匹配的文件执行该参数所给出的shell命令,相应命令的形式为'command' { } ;,注意{ }和;之间的空格
      4. ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
    • 常用选项:
      1. -name:按照文件名查找文件
      2. -perm:按照文件权限来查找文件
      3. mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
      4. -newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件
      5. -type:查找某一类型的文件,诸如:b - 块设备文件,d - 目录,c - 字符设备文件,p - 管道文件,l - 符号链接文件,f - 普通文件
      6. -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
      7. -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找

    locate命令

    • locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
    • 命令格式:locate [选择参数] [样式]
    • 命令参数:
      1. -e:将排除在寻找的范围之外
      2. -1:如果是1则启动安全模式,在安全模式下,使用者不会看到权限无法看到的档案。这会使速度减慢,因为 locate必须至实际的档案系统中取得档案的权限资料
      3. -f:将特定的档案系统排除在外,例如我们没有到必要把proc档案系统中的档案放在资料库中
      4. -q:安静模式,不会显示任何错误讯息
      5. -n:至多显示 n个输出
      6. -r:使用正规运算式 做寻找的条件
      7. -o:指定资料库存的名称
      8. -d:指定资料库的路径
      9. -h:显示辅助讯息
      10. -V:显示程式的版本讯息

    whereis命令

    • whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
    • 命令格式:whereis [-bmsu] [BMS 目录名 -f ] 文件名
    • 主要参数:
      1. -b:定位可执行文件
      2. -m:定位帮助文件
      3. -s:定位源代码文件
      4. -u:搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件
      5. -B:指定搜索可执行文件的路径
      6. -M:指定搜索帮助文件的路径
      7. -S:指定搜索源代码文件的路径

    which命令

    • which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。which是根据使用者所配置的PATH变量内的目录去搜寻可运行档的,所以,不同的PATH配置内容所找到的命令是不一样的。
    • 命令格式:which 可执行文件名称
    • 命令参数:
      1. -n:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名
      2. -p:与-n参数相同,但此处的包括了文件的路径
      3. -w:指定输出时栏位的宽度
      4. -V:显示版本信息

        find、locate、which、whereis的区别

    • which (寻找执行档) :这个指令是根据PATH这个环境变量所规范的路径,去搜寻执行档的档名,所以,重点是找出执行档而已,which 后面接的是完整档名
    • whereis (寻找特定档案):搜寻linux数据库档案中所记录的东西,和locate的主要区别在于后面的参数
    • locate:搜寻linux数据库档案中所记录的东西,后面直接跟档案的部分名称就行
    • find:直接搜索整个硬盘

    sort命令

    • 将文本文件内容加以排序。可针对文本文件的内容,以行为单位来排序。
    • 参数:
      • m:将几个排序好的文件进行合并。
      • n:依照数值的大小排序
    • Linux Bash中,ls . | sort 命令的功能是(显示当前目录内容并排序)

    du命令

    • 显示目录或文件的大小。du会显示指定的目录或文件所占用的磁盘空间。
    • 参数:
      • a:显示目录中个别文件的大小。
      • b:显示目录或文件大小时,以byte为单位。
      • c: 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和

    ls命令

    • 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
    • 参数:
      • a:显示所有档案及目录
      • A:同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
      • t:将档案依建立时间之先后次序列出
    • 列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" : ls -AF
    • Linux Bash中,把ls命令显示当前目录的结果存入ls.txt的命令输出重定向命令是(ls > ls.txt)

    vi、 gcc、gdb、make的使用

     

    Vim常用命令总结

    • 插入:
      • i:在当前光标处进行编辑
      • a:在光标后插入编辑
    • 退出:
      • q!:强制退出,不保存
      • :q:退出
      • :wq!:强制保存并退出
      • :wq:保存并退出
      • :w <文件路径>:另存为
    • 删除:
      • x:删除游标所在的字符
      • dd:删除整行
    • 行间跳转:
      • nG(n Shift+g):光标移动到第n行
    • 复制与粘贴:
      • nyy:复制光标所在及其后的整行共n行
      • p:代表粘贴至光标后
    • 功能设定:
      • :set autoindent(ai):设置自动缩进
      • :set cindent(cin):设置C语言风格缩进
      • :set nu:以显示行号

    GCC编译过程

    • 预处理:gcc –E hello.c –o hello.i ;gcc –E调用cpp 产生预处理过的C原始程序
    • 编译: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

    静态库

    • 静态库是一系列的目标文件(.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

    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"设置了观察点,观察变量的变化情况
    • 四种断点:
      • 函数断点:b 函数名 条件表达式
      • 行断点:b 行数或函数名 条件表达式
      • 条件断点:b 行数或函数名 if表达式
      • 临时断点:tbreak 行数或函数名 条件表达式

    makefile

      • 功能:识别文件代码是否更新,减少编译工作量
      • 格式为:
        • 目标体:依赖文件
        • [tab键]各目标体运行命令
      • 目标体:由make创建,通常是目标文件或可执行文件
      • 依赖文件:创建目标体所依赖的文件
      • 运行命令:创建每个目标体时需要的运行命令,必须以tab键开头。
      • 使用make的格式:make 目标体

    收获

    • 第一层次的收获是关于这门课程的。比如我学会了虚拟机的安装,学会了许多虚拟机的指令以及计算机的运行原理。
    • 第二层次的收获是认识方面的,比如git的使用,在一开始我真的是拒绝的,我想在电脑上点几下鼠标的事情为什么要用命令行这么

            高深的东西,结果这种思想在上学期的Java到这学期的Linux中渐渐发生了转变,可以说是从老师的强制要求变成了我自己的一个习惯。这

            其实是一个很重要的转变,在某种程度上说他其实是改变了我的思维方式,让我开始具备一种程序员的谨慎、严密,具有逻辑性的思维。这对我以后的工作是很有帮助的。

    • 第三层次的收获是对我的价值观产生的影响也是最为深远的影响。在娄老师任教的一年间,我看到了周围许多同学对于翻转课堂不同的态度以及不同的结果。刚开始的时候

            我是挺讨厌这种方式的,所以上学期的Java也就是浑浑噩噩的度过,最后看到班里满分的同学羡慕又无奈。这学期我看到有同学的博客里写感觉自己选错了专业,对现在的

            课程很没兴趣,想要去研究文学。其实我也曾经有过类似的烦恼,但仔细想想,编程、代码,这些看似无聊而机械的课程其实深层次锻炼了我们的理性思维,扎扎实实

            坐在电脑面前,安静本分的敲几行代码,比什么都来得实在。因此,说随遇而安也好,说浪子回头也好,反正我这学期已经在尽己所能的学习这门课程了。

    不足

    • 遇难则退。

    课程建议和意见

    每周大家提的多的问题和百度不到的问题老师可以上课同一讲解,每个人私下里问老师很麻烦,关键是很多同学想学但害怕问问题的时候犯低级错误。

  • 相关阅读:
    axios使用post提交方式
    ajax请求携带cookie和自定义请求头header(跨域和同域)
    HTML <form> enctype 属性, 表单上传
    浏览器常用设计规范,字体与行高(Ant)
    关于级联选择器el-cascader的一些属性
    elemen-ui中的table表格支持行列动态改变
    websocket双向通信
    文本超出用省略号表示或是自动换行
    新建js文件中有自己编写的方法和数据,在其他.vue文件中调用
    了解WebSocket
  • 原文地址:https://www.cnblogs.com/dwc929210354/p/6036400.html
Copyright © 2020-2023  润新知