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 | ...

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.c
  3. 退出vim编译器,并在终端中输入gcc hello.c -o hello指令编译程序,成功后输入./hello执行程序。

gcc编译模块化的程序

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

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(命令)
时间: 09-27

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

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

第一节 Linux系统简介 一.Linux是一个操作系统 1. Linux 本身只是操作系统的内核.内核是使其他程序能够运行的基础. 它实现了多任务和硬件管理,用户或者系统管理员交互运行的所有程序 实际上都运行在内核之上. 2. Linux 内核具备了挑战 UNIX 的所有本质特性,包括 TCP/IP 网络,图 形界面系统 二.linux与windows的区别 Linux 免费或少许费用. Linux 平台:大都为开源自由软件,用户可以修改定制和再发布,由于基本免费没有资金支持,部分软件质量和体

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

第三章 程序的机器级表示 1.历史观点 GCC C语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的文本表示,给出程序中的每一条指令.x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的.8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构 2.程序编码 机器级程序的格式和行为,定义为指令集体系结构(ISA),它定义了处理器状态.指

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

第十章.系统I/O 一个Unix文件就是一个m个字节的序列:B0,B1,…,BK,…,Bm-1 一.unix i/o 596 Unix I/O:一种将设备优雅地映射为文件的方式,允许Unix内核引出一个简单.低级的应用接口,这使得所有的输入输出都能以一种统一且一致的方式来执行: **1.打开文件:** - 内核返回一个小的非负整数,叫做描述符. -Unix外壳创建的每个进程开始时都有三个打开的文件:标准输入(描述符 为0).标准输出(描述符为1).标准错误(描述符为2). 2.改变当前文件位置:

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

第四章 处理器体系结构 ISA:一个处理器支持的指令和指令的字节级编码——指令集体系结构 ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层 与IA32相比Y86指令集的数据类型.指令和寻址方式都要少一些,它的字节级编码比较简单,不过它仍然足够完整 4.1.Y86指令集结构 定义一个指令集体系结构,暴扣定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理 1.程序员可见的状态 程序员可见状态:Y86程序中的每条指令都会读取或修改处理器状态的某些部分 Y86的处理器状态类似与

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

一.代码理解 1.env文件夹-environ.c代码 #include <stdio.h> #include <stdlib.h> int main(void) { printf("PATH=%s\n", getenv("PATH"));//getenv函数用来取得参数PATH环境变量的值,执行成功则返回该内容的指针 setenv("PATH", "hello", 1);//见下方解释 printf(

信息安全系统设计基础第二周学习总结(一)

Linux下C语言编程基础实验报告 学习任务 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 学习内容 1. 快捷键 2. vim 3. gcc 4. gdb 5. make与makefile 学习过程记录 第一部分 第一讲第一节:移动光标 H左.j下.k上.l右 第一讲第二节:VIM的进入和退出 <E

20135218 信息安全系统设计基础第二周学习总结

深入理解计算机系 Linux基础 一.实验说明 环境登录  无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 二.实验步骤 三种知识: 元知识:这门课程思考问题框架是什么?遇到老问题,它会怎样分析?遇到新问题,它会怎样分析? 硬知识:这门课程的主要知识点是什么?适合用思维导图组织吗? 软知识:这门课程的哪些知识点需要哪些实践环节来强化理解和记忆? 1. Linux命令 Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,

20135220谈愈敏--信息安全系统设计基础第二周学习总结

<深入理解计算机系统>实验一 在我的理解中: 元知识:思考问题的能力 硬知识:可见的知识点 软知识:实践中的经验 后面的常用命令是老师上课中讲到的. 一边看提供的材料一边在实验楼里实践,我的实验顺序如下: vim编辑器实验1234 普通模式(Normal mode):在普通模式中,用的编辑器命令,比如移动光标,删除文本等等.这也是Vim启动后的默认模式. Vim强大的编辑能来自于其普通模式命令.普通模式命令往往需要一个操作符结尾.例如普通模式命令dd删除当前行,但是第一个"d&quo

信息安全系统设计基础第二周学习总结——20135308

本周,我学习了vim的使用方法. VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,VI来说,一开始就需要相当大的技能,但一旦掌握这些技能,则你将会越来越熟练,这跟五笔打字很类似.我们建议通过实践练习来学习具体来说通过VIMTUTOR来学习.只要在命令行中输入vimtutor,然后跟着教程练习就可以了. 大写“K”可以用来查找函数的帮助信息:查看 man page,命令模式下,将光标放在函数名上,按"K"可以直接察看 man page. 几个设置 :set nu 显示行