20135304刘世鹏——信息安全系统设计基础第二周学习总结

第一节、Linux基础

1.Linux命令

  • Linux中命令格式为:command [options] [arguments]

    • 选项:是调整命令执行行为的开关,选项不同决定了命令的显示结果不同
    • 参数:决定了命令的显示结果不同

      例如:ls .中.为参数;ls -a中-a为选项

2.man命令

  • 1 Executable programs or shell commands(普通的Linux命令)
  • 2 System calls (系统调用,操作系统的提供的服务接口)
  • 3 Library calls (库函数, C语言中的函数)
  • 4 Special files (指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义)
  • 5 File formats and conventions eg /etc/passwd(配置文件帮助)
  • 6 Games(给游戏留的,由各个游戏自己定义)
  • 7 Miscellaneous (给游戏留的,由各个游戏自己定义), e.g. man(7), groff(7)
  • 8 System administration commands (系统管理用的命令,这些命令只能由root使用,如ifconfig)
  • 9 Kernel routines [Non standard]

3.man -k命令

  • 多关键字查找man -k key1 | grep key2 | grep key3 | ... 

20135304刘世鹏——信息安全系统设计基础第二周学习总结_第1张图片

4.cheat命令

cheat命令是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。 通过cheat安装与学习学习cheat命令。

其他核心命令

  • find查找一个文件在系统中的什么位置,locate是神速版本的find(Windows下有个Everything工具和locate类似)
  • grep 可以对文件全文检索,支持正则表达式,正则表达式也是一个重要的元知识
  • grep 可以对文件全文检索,支持正则表达式,正则表达式也是一个重要的元知识

第二节、Linux下C语言开发基础

vim编辑器

  • vim基本操作

    • h左移 j下行 k上行 l右移
    • 欲进入vim编辑器(从命令行提示符),输入vim文件名<回车>
    • 退出vim,放弃所有修改: :q! <回车>
    • 退出vim,保存所有修改: :wq! <回车>
    • 正常模式删除字符:x
    • 正常模式插入文本:i
    • 按下回到正常模式
    • 欲从当前光标删除至单子、单词末尾:dw
    • 欲从当前光标删除至当前行末尾:d$
    • 欲删除正行:dd
    • 正常模式下一个命令格式:[number] command object

      number - 命令执行的次数
      command - 要做的事情,比如d代表删除
      object - 代表要操作的对象,比如w代表单子、单词,¥代表到行末。
      
    • 撤销以前的操作:u
    • 撤销在一行中所做的改动:U
    • 撤销以前的撤销命令,恢复以前的操作结果:CTRL-R
    • 重置已经删除的文本内容:p
    • 替换光标所在位置的字符:r
    • 替换当前光标到单词末尾的内容:cw
    • 替换当前光标到行末的内容:c$
    • 更改命令的格式: [number] c object
    • 显示当前光标所在位置和文件状态信息:CTRL -g; Shift -G将光标跳转至最后一行,敲入行号后按Shift -G将光标移动至指定行号。
    • 在当前编辑文档中向后查找:/+字符串
    • 在当前编辑文档中向前查找:?+字符串
    • 光标当前位置是括号,查找配对括号:%
    • 一行内替换一个字符串:s/old/new
    • 一行内替换所有字符串:s/old/new/g
    • 在两行内替换所有的字符串:#,#s/old/new/g
    • 在文件内替换所有的字符串:%s/old/new/g
    • 进行全文替换时询问用户确认每个替换需添加 c 选项:%s/old/new/gc
    • 执行一个外部命令::!command,如:!dir用于显示当前目录的内容
    • 将当前VIM中正在编辑的文件保存到名为FILENAME的文件中:w FILENAME
    • :#,#w FILENAME 可讲当前编辑文件第# 行至第 #行的内容保存到文件FILENAME中
    • :r FILENAME可提取磁盘文件FILENAME,并将其插入到当前文件的光标位置。
    • 输入小写的o可在光标下方打开新的一行
    • 输入大写的O可在光标上方打开新的一行
    • 输入a可在光标所在位置之后插入文本
    • 输入A可在光标所在行的行末之后插入文本
    • 输入大写R进入替换模式
    • /xxx;set ic;set hls is
    • vim中的help命令与man命令类似
    • :set nu 显示行号
    • :set ai 自动缩行
    • :set ts=4 设置一个 TAB 键等于几个空格

编译器 gcc的使用

用gcc编译程序

  1. 在Xfce终端中打开输入vim打开vim编译器
  2. 进入插入模式并输入程序,用命令q保存文件名为hello.c20135304刘世鹏——信息安全系统设计基础第二周学习总结_第2张图片
  3. 退出vim编译器,并在终端中输入gcc hello.c -o hello指令编译程序,成功后输入./hello执行程序。20135304刘世鹏——信息安全系统设计基础第二周学习总结_第3张图片

gcc编译模块化的程序

通常一个程序都是有很多个源文件组成,相应的就形成了多个编译单元 gcc能够很好的处理这些编译单元,最终形成一个可执行程序

20135304刘世鹏——信息安全系统设计基础第二周学习总结_第4张图片20135304刘世鹏——信息安全系统设计基础第二周学习总结_第5张图片

GDB的使用

  • 1.启动gdb的方法有以下几种:

  a)gdb program也就是执行文件,一般在当前目录下。

  b)gdb core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后,core dump后产生的文件。

  c)gdb 如果程序是一个服务程序,那么可以指定这个服务程序运行时的进程ID。

  • 2.设置断点

  (gdb) break func <-------------------- 设置断点,在函数func()入口处。

  (gdb) info break <-------------------- 查看断点信息。

  (gdb) r <--------------------- 运行程序,run命令简写

  (gdb) n <--------------------- 单条语句执行,next命令简写。

  (gdb) c <--------------------- 继续运行程序,continue命令简写。

  (gdb) p I <--------------------- 打印变量i的值,print命令简写。

  (gdb) bt <--------------------- 查看函数堆栈。

  (gdb) finish <--------------------- 退出函数。

  (gdb) c <--------------------- 继续运行。

  (gdb) q <--------------------- 退出gdb。

  • 3.其他调试命令有:

    display 跟踪变量值的改变 until 跳出循环 finish 跳出函数 help 帮助

Make和Makefile

进去Makefile

$ vim Makefile

1.Makefile 基本规则

1.Makefile的一般写法:

一个Makefile文件主要含有一系列的规则,每条规则包含以下内容:

  • 需要由make工具创建的目标体,通常是可执行文件和目标文件,也可以是要执行的动作,如‘clean’;

  • 要创建的目标体所依赖的文件,通常是编译目标文件所需要的其他文件。

  • 创建每个目标体时需要运行的命令,这一行必须以制表符TAB开头

     test(目标文件): prog.o code.o(依赖文件列表) 
     tab(至少一个tab的位置) gcc prog.o code.o -o test(命令) 
     .......
     即:
     target: dependency_files
     command
    

2.Makefile还可以定义和使用宏(也称做变量):

  • 定义宏的格式为:macroname = macrotext

  • 使用宏的格式为:$(macroname)

3.Makefile的一般写法:

  • test(目标文件): prog.o code.o(依赖文件列表)

  • tab(至少一个tab的位置) gcc prog.o code.o -o test(命令)20135304刘世鹏——信息安全系统设计基础第二周学习总结_第6张图片

你可能感兴趣的:(20135304刘世鹏——信息安全系统设计基础第二周学习总结)