教材学习内容总结

1.熟悉Linux系统下的开发环境

  • Linux为何物
    • Linux 就是一个操作系统,也就是系统调用和内核那两层
  • Linux命令
    • command [options] [arguments]command作用于arguments,options区别指令的不同
  • man指令
    • man -k可以结合grep多关键字查找
    • 等价命令apropos
    • man -f cmd查看命令的基本功能,等价于whatis
  • cheat命令
  • 快捷键
    • ctrl+c 中端程序
      Ctrl+d 键盘输入结束或退出终端
      Ctrl+s 暂定当前程序,暂停后按下任意键恢复运行
      Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
      Ctrl+a 将光标移至输入行头,相当于Home键
      Ctrl+e 将光标移至输入行末,相当于End键
      Ctrl+k 删除从光标所在位置到行末
      Alt+Backspace 向前删除一个单词
      Shift+PgUp 将终端显示向上滚动
      Shift+PgDn 将终端显示向下滚动
  • Shell 常用通配符
    • * 匹配 0 或多个字符
      ? 匹配任意一个字符
      [list] 匹配 list 中的任意单一字符
      [!list] 匹配 除list 中的任意单一字符以外的字符
      [c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
      {string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串
      {c2..c2} 匹配 c1-c2 中全部字符 如{1..10}
  • who am i命令查看用户
    • who 命令其它常用参数
      -a 打印能打印的全部
      -d 打印死掉的进程
      -m 同am i,mom likes
      -q 打印当前登录用户数及用户名
      -u 打印当前登录用户登录信息
      -r 打印运行等级
  • su <user>切换到用户user,su<cmd>以特权级别运行cmd命令,su - <user>切换用户的同时环境变量也会跟着切换
  • groups <user>命令得知用户属于哪个组
  • usermod命令为用户添加用户组,deluer删除用户
  • ls -l查看文件权限
  • cd命令切换目录:.表示当前目录,..表示上一级目录,- 表示上一次所在目录,通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)
  • mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性, -p 参数,同时创建父目录
  • cp(copy)命令复制一个文件或目录到指定目录,复制目录加参数-r
  • 使用rm命令,删除一个文件或目录,删除目录加参数-r
  • 使用mv命令,移动文件(剪切),
    重命名文件,批量重命名,rename来实现
  • 使用cat,tacnl命令查看文件,cat为正序显示,tac倒序显示,nl命令,添加行号并打印
  • 使用moreless命令分页查看文件,打开后默认只显示一屏内容,终端底部显示当前阅读的进度(百分比)。可以使用Enter键向下滚动一行,使用Space键向下滚动一屏,按下h显示帮助,q退出
  • 使用headtail命令查看文件,只查看的头几行(默认为10行,不足10行则显示全部)和尾几行,也可以加上-n参数,后面紧跟行数
  • file命令可以查看文件的类型
  • declare命令创建变量
  • 环境变量有关命令:set 显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量
    env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行
    export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量
  • 变量修改:${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据
    ${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据
    ${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
    ${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据
    ${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串
    ${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串
  • Linux文件压缩格式:*.zip zip程序打包压缩的文件
    *.rar rar程序压缩的文件
    *.7z 7zip程序压缩的文件
    *.tar tar程序打包,未压缩的文件
    *.gz gzip程序(GNU zip)压缩的文件
    *.xz xz程序压缩的文件
    *.bz2 bzip2程序压缩的文件
    *.tar.gz tar打包,gzip程序压缩的文件
    *.tar.xz tar打包,xz程序压缩的文件
  • zip压缩打包程序,zip -r -q -o shiyanlou.zip /home/shiyanlou-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。后面使用du命令查看打包后文件的大小,-e参数可以创建加密压缩包,-l参数转换格式,使之在Windows下打开没有问题
  • unzip命令解压缩zip文件,-d表示路径(不存在会自动创建),-l不解压只查看压缩包内容,-o指定编码类型
  • rar打包压缩命令,rar a shiyanlou.rar压缩文件(使用a参数添加一个目录~到一个归档文件中,如果该文件不存在就会自动创建),rar d shiyanlou.rar .zshrc从指定压缩包文件中删除某个文件,rar l shiyanlou.rar查看不解压文件,unrar x shiyanlou.rar全路径解压,unrar e shiyanlou.rar tmp/去掉路径解压
  • tar打包工具,tar -cf shiyanlou.tar ~创建一个 tar 包,-c表示创建一个 tar 包文件,-f用于指定创建的文件名,注意文件名必须紧跟在-f参数之后,-v参数以可视的的方式输出打包的文件。上面会自动去掉表示绝对路径的/,你也可以使用-P保留绝对路径符,解包一个文件(-x参数)到指定路径的已存在目录(-C参数),只查看不解包文件-t参数
  • df 命令查看磁盘的容量,加-h转换成能看懂的形式
  • du 命令查看目录的容量,-d参数指定查看目录的深度(1级目录~ 0~)
  • dd命令用于转换和复制文件,bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如'K','M','G'等单位),count用于指定块数量
  • bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如'K','M','G'等单位),count用于指定块数量
  • dd 命令创建虚拟镜像文件, dd if=/dev/zero of=virtual.img bs=1M count=256
  • mkfs 命令格式化磁盘,命令sudo mkfs.ext4 virtual.img格式化为ext4文件系统
  • sudo mount查看下主机已经挂载的文件系统,命令格式mount [options] [source] [directory],常用操作mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]umount 命令卸载已挂载磁盘sudo umount /mnt
  • fdisk为磁盘分区,查看硬盘分区表信息sudo fdisk -l,进入磁盘分区模式sudo fdisk virtual.img
  • type查看,内建命令
    xxx is a shell builtin
    外部命令
    xxx is /usr/sbin/xxx
    指令为命令别名所设定的名称
    xxx is an alias for xx --xxx
  • help命令只能用于显示内建命令的帮助信息。外部命令基本上都有一个参数--help,这样就可以得到相应的的帮助
  • man没有内建与外部命令的区分
  • cut命令,打印每一行的某一字段
  • grep命令,在文本中或 stdin 中查找匹配字符串,格式grep [命令选项]... 用于匹配的表达式 [文件]...
  • wc命令,简单小巧的计数工具
  • sort排序命令
  • uniq去重命令
  • tr命令可以用来删除一段文本信息中的某些文字
  • 使用tee命令同时重定向到多个文件,除了将需要将输出重定向到文件之外也需要将信息打印在终端
  • 永久重定向,使用exec命令
  • 利用设个/dev/null屏蔽命令的输出完全屏蔽命令的输出

2.熟悉vi的基本操作

参考:https://blog.csdn.net/xie_xiansheng/article/details/78413306

3.熟悉gcc编译器的基本原理

GCC编译器编译程序的流程:源文件(*.c)–>预处理(预处理器)–>编译(编译器)–>汇编(汇编器)–>链接(链接器)–>可执行文件
假定有一个最简单的hello.c源文件,代码即输出一个helloworld。通过几个不同步骤来展现gcc的编译器编译流程:
第一步:~ gcc -E hello.c -o hello.i 这是讲源文件进行预处理器处理,也就是主要进行一些宏替换,不会进行语法检查,-E参数可以让gcc在预处理结束后停止后面的编译过程。
第二步:~ gcc -c hello.i -o hello.o 此步骤会进行一些语法检查,将.i文件编译成目标文件。
第三步:~ gcc hello.o -o hello 第三步也是最后一步,将目标链接为一个可执行文件,最后的hello是自定义生成的可执行文件名。
GCC编译模块化的程序:代码:~ gcc denpend.c hello.c -o hello

4.熟练使用gcc编译器的常用选项

参考:https://blog.csdn.net/arackethis/article/details/43370307

5.熟练使用gdb调试技术

1)启动gdb
gdb hello或者gdbfile hello
2)显示程序
list 或者 l
3)打断点
break(b) main() //函数的入口处
break(b) 11 //行号
break(b) hello.c:14 //特定文件的行号
break(b) 12 if i=10 //if语句满足后在行号处打断点
4)获取断点信息
info break
5)删除断点
delete 13(断点编号)
6)运行程序
run(r)
7)单步(不进入子函数)
next(n)
8)单步(进入子函数)
step(s)
9)继续运行
continue(c)
10)查看变量
print(p) i(变量名)
11)运行程序到当前函数结束
finish
12)监控变量
watch i(变量名)
13)退出gdb
quit(q)

6.熟悉makefile基本原理及语法规范

20175327 《信息安全系统设计基础》第1周学习总结
20175327 《信息安全系统设计基础》第1周学习总结

7.掌握静态库和动态库的生成与调用方法

参考:https://blog.csdn.net/hua12134/article/details/88381929

8.理解C程序中模块的概仿,模块分解的“高内聚,低耦合”的原则

高内聚:
如果类中的方法是一组相关的行为,则称该类是高内聚的,反之成为低内聚的。
高内聚便于类的维护,而低内聚不利于类的维护。
迭代器模式中,对于高内聚低耦合原则的使用会有很好的解释。
低耦合:
就是尽量不要让一个类有太多其他类的实例引用,以避免修改系统的其中一部分会影响到其他部分,
中介者模式中,就会体会到这个低耦合原则的必要性。

9.了解链接的概念

参考:https://blog.csdn.net/u011857683/article/details/81044856

教材学习中的问题和解决过程

xxx
xxx

代码调试中的问题和解决过程

xxx
xxx

课后作业中的问题和解决过程

XXX
XXX

本周代码托管截图

其他(感悟、思考等,可选)

xxx
xxx

相关文章:

  • 2021-07-15
  • 2021-08-30
  • 2022-01-21
  • 2021-06-13
  • 2021-11-27
  • 2022-03-09
  • 2022-02-16
猜你喜欢
  • 2022-02-08
  • 2022-12-23
  • 2022-12-23
  • 2021-05-27
  • 2021-11-17
  • 2021-08-25
相关资源
相似解决方案