• 第2章Linux常用命令(下)


    目录

    2.2Linux常用开发工具

    2.2.1ⅵ编辑器

    1.命令模式

    2.插入模式

    3.底行模式

    4.模式转换

    2.2.2GCC编译器

    2.2.3 GDB调试工具


    2.2Linux常用开发工具

    2.2.1ⅵ编辑器

    vi编辑器是 Linux系统下最基本的编辑器,工作在字符模式下。由于不使用图形界面,

    因此ⅵ的工作效率非常高,且它在系统和服务管理中的功能是带图形界面的编辑器无法比

    拟的。ⅵ编辑器共有三种工作模式,分别是:命令模式( command mode)、插入模式( Insert

    mode)和底行模式( last line mode)。

    案例2-38:将目录etc下的 passwd文件复制到itheima用户的家目录中,将副本命名

    为 passwd,使用ⅵ编辑器打开家目录下的 passwd文件。

    cp /etc/passwd passwd

    vi passwd

    1.命令模式

    命令模式下,可通过键盘控制光标的移动,实现文本内容的复制、粘贴、删除等操作。

    (1)光标移动

    光标的移动可分为6个级别,分别为:字符级、行级、单词级、段落级、屏幕级和文档级。

    级别

    操作符

    说明

    字符级

    “左键”或字母“h”

    使光标向字符的左边移动

    “右键”或字母“l”

    使光标向字符的右边移动

    行级

    “上键”或字母“k”

    使光标移动到上一行

    “下键”或字母“j”

    使光标移动到下一行

    符号“$”

    使光标移动到当前行尾

    数字“0”

    使光标移动到当前行首

    单词级

    字母“w”

    使光标移动到下一个单词的首字母

    字母“e”

    使光标移动到本单词的尾字母

    字母“b”

    使光标移动到本单词的首字母

    段落级

    符号“}”

    使光标移至段落结尾

    符号“{”

    使光标移至段落开头

    屏幕级

    字母“H”

    使光标移至屏幕首部

    字母“L”

    使光标移至屏幕尾部

    文档级

    字母“G”

    使光标移至文档尾行

    n+G

    使光标移至文档的第n行

    (2)删除

    操作符

    说明

    字母“x”

    删除光标所在的单个字符

    字母“dd”

    删除光标所在的当前行

    n+dd

    删除包括光标所在行的后边n行内容

    d+$

    删除光标位置到行尾的所有内容

    (3)复制和粘贴

    操作符

    说明

    字母“yy”

    复制光标当前所在行

    n+yy

    复制包括光标所在行后的n行内容

    y+e

    从光标所在位置开始复制直到当前单词结尾

    y+$

    从光标所在位置开始复制直到当前行结尾

    y+{

    从当前段落开始的位置复制到光标所在位置

    p

    将复制的内容粘贴到光标所在位置

    2.插入模式

    插入模式下,用户可对文件内容进行修改操作,此模式下的操作与Windows操作系统中记事本的操作类似。

    3.底行模式

    底行模式下可以对文件进行保存,也可进行查找、设置、退出编辑器等操作。

    (1):set nu。设置行号,仅对本次操作有效,当重新打开文本时,若需要行号,要重新设置。

    (2):set nonu。取消行号,仅对本次操作有效。

    (3):n。使光标移动到第n行。

    (4):/xx。在文件中查找“xx”,若查找结果不为空,可以使用“n”查找下一个,使用“N”查找上一个。

    (5)尾行模式下还可以进行内容替换,其操作符和功能如表所示。

    操作符

    说明

    :s/被替换内容/替换内容/

    替换光标所在行的第一个目标

    :s/被替换内容/替换内容/g

    替换光标所在行的全部目标

    :%s/被替换内容/替换内容/g

    替换整个文档中的全部目标

    :%s/被替换内容/替换内容/gc

    替换整个文档中的全部目标,且每替换一个内容都有相应的提示

    (6)操作完毕后,如要保存文件或退出编辑器,可先使用“ESC”进入底行模式,再使用表中的按键完成所需操作。

    操作符

    说明

    :q

    退出vi编辑器

    :w

    保存编辑后的内容

    :wq

    保存并退出vi编辑器

    :q!

    强行退出vi编辑器,不保存对文件的修改

    :w!

    对于没有修改权限的用户强行保存对文件的修改,并且修改后文件的所有者和所属组都有相应的变化

    :wq!

    强行保存文件并退出vi编辑器

    4.模式转换

    vi编辑器的三种模式之间可进行转换:

     

    (1)命令模式切换至插入模式:

    操作符

    说明

    字母“a”

    光标向后移动一位进入编辑模式

    字母“s”

    删除光标所在字母进入编辑模式

    字母“o”

    在当前行之下新起一行进入编辑模式

    字母“A”

    光标移动到当前行末尾进入编辑模式

    字母“I”

    光标移动到当前行行首进入编辑模式

    字母“S”

    删除光标所在行进入编辑模式

    字母“O”

    在当前行之上新起一行进入编辑模式

    在命令行中对vi编辑器进行的设置,只对本次操作有效,若想长久保存vi设置,可通过对用户家目录中的.vimrc文件进行编辑实现。常用设置如表所示。

    设置

    说明

    set number

    设置行号

    set autoindent

    自动对齐

    set smartindent

    智能对齐

    set showmatch

    括号匹配

    set tabstop=4

    使用tab键时为4个空格

    set mouse=a

    鼠标支持

    set cindent

    使用C语言格式对齐

    2.2.2GCC编译器

    GCC编译过程分为四个步骤,分别是预处理、编译、汇编和链接。

    (1)预处理

    删除代码中的“#define”,展开所有宏定义;

    处理条件编译指令,如#if、#ifdef、#undef等;

    将由“#include”包含的文件插入到预编译指令对应的位置,若文件中包含其它文件,同样进行替换;

    删除代码中的注释;

    添加行号和文件标识;

    保留#pragma编译器指令。

    (2)编译

    在编译阶段,GCC会对经过预处理的文件进行语法、词法和语义分析,确定代码实际要做的工作,若检查无误,则生成相应的汇编代码文件。

    汇编过程将编译后生成的汇编代码转换为机器可以执行的命令,即二进制指令,每一个汇编语句几乎都会对应一条机器指令。

    链接过程是组装各个目标文件的过程,在这个过程中会解决符号依赖和库依赖关系,最终生成可执行文件。

    文件编译

    · 单文件编译

    $ gcc hello.c

    · 多文件编译

    $ gcc _main.c _add.c -o _main

    2.2.3 GDB调试工具

    GDB可以逐条执行程序、操控程序的运行,并且随时可以查看程序中所有的内部状态,如各变量的值、传给函数的参数、当前执行的语句位置等,藉此判断代码中的逻辑错误。

    (1)在代码中加入调试信息,并调试程序

    $ gcc gdbtest.c –o app –g

    (gdb) gdb app

    (2)列出程序代码,并设置断点

    list 行号

    b 行号

    b 22 if i = 5 #在22行设定带条件的断点

    info b #查看断点

    disable Num #取消断点

    (3)查看变量值

    p 变量名

    (4)继续执行

    s —— 单步执行

    n —— 单步执行且跳过标准函数库

    finish —— 跳出当前函数

    (5)结束调试

    continue —— 结束当前断点调试

    quit —— 退出调试

  • 相关阅读:
    奥康的高尔夫鞋,圈不住投资者的心
    【高项笔记】No.2 网络和网络协议
    <2>【深度学习 × PyTorch】pandas | 数据预处理 | 处理缺失值:插值法 | networkx模块绘制知识图谱 | 线性代数初步
    【故障公告】cc攻击又来了,雪上加霜的三月
    二叉树的(前,中,后序)遍历
    fonts什么文件夹可以删除吗?fonts文件夹删除了怎么恢复
    洛谷P4847 银河英雄传说V2
    进阶JAVA篇-深入了解内部类
    UGUI交互组件Toggle
    19-springcloud(下)
  • 原文地址:https://blog.csdn.net/WHT869706733/article/details/125409880