【Linux学习】第三弹:Linux工具——实用工具介绍与使用说明

        本文主要介绍Linux中关于安装器、编辑器、编译器、调试器、自动化构建项目、版本管理器等实用工具的功能介绍与使用说明。

目录

包安装器:yum

yum的常规操作

文件传输工具:lrzsz & xftp

编译器:vim

三种常见模式

正常模式下7种快捷操作方式

安装vimforcpp

其他

编译器:gcc/g++

区别

编译的四个过程

静态编译与动态编译

调试器:gdb

程序发行版本

调试基础方式

三种使用场景

自动化构建项目:make&makefile

介绍说明:

makefile文件格式:

make的工作方式(针对makefile文件):

伪目标定义:

版本管理工具:git


包安装器:yum

        用于安装和移除软件

yum的常规操作

(1)查询软件信息

yum list                            软件目录查询
yum list | grep "xxx"                通过管道grep过滤查询xxx

(2)安装软件

yum list [软件名]                        安装软件
yum list -y [软件名]                   安装软件(免询问)

(3)移除软件

yum remove [软件名]                        移除软件
yum remove -y [软件名]                   移除软件(免询问)

文件传输工具:lrzsz & xftp

区别

        ltzsz:在Linux系统中使用,用于与win系统之间的文件传输

        xftp:在win系统中与Xshell结合使用,用于与Linux系统之间的文件传输

(1)lrzsz安装

yum install -y lrzsz                        安装lrzsz

(2)lrzsz使用

rz +鼠标选择上传文件                          win文件上传Linux
sz [文件名] +鼠标选择下载地址                  Linux文件下载到win

(3)注意:仅针对文件使用,如需对文件夹使用,可将其压缩后进行操作

编译器:vim

        用于编辑代码

三种常见模式

(1)普通模式:不能输入

vim [文件名]                进入文档编辑的图片模式

(2)插入模式:可输入内容

在‘正常模式’中按‘A’进入插入模式                  切换插入模式
在‘插入模式’中按‘Esc’退回正常模式                退回正常模式

(3)底行模式

在‘正常模式’中按‘:’进入底行模式                  进入底行模式
在‘底行模式’中按‘Esc’退回正常模式                 退回正常模式
在‘底行模式’中按‘wq’退出文件                      退出文件
            保存退出:wq       退出:q        仅保存:w
            强制退出:q!      强制保存退出:wq!

正常模式下7种快捷操作方式

(1)移动(光标)

  • 上下左右:h(左)j(下)k(上)l(右)
  • gg:光标回到文本开始
  • G:光标回到文本末尾
  • ^:光标回到所在行的行首
  • $:光标回到所在行的行尾

 (2)删除(内容)

  • x:删除光标所在字符
  • [数字]x:删除光标在内的多个字符
  • X:删除光标所在位置的前一个字符
  • [数字]X:删除光标前多个字符
  • dd:删除光标所在一行的内容
  • [数字]dd:删除包含光标向下多行的内容

(3)复制

  • yy:复制当前光标所在行
  • [数字]yy:向下复制包括光标所在行的多行
  • p:粘贴到光标所在行的下一行
  • P:粘贴到光标所在行的上一行

(4)替换

  • r:替换光标所在字符(一次一个)
  • R:替换光标所在之处的字符(一次多个)

(5)撤销

  • u:撤销上一次误操作的命令
  • ctrl+r:反撤销

(6)更改

  • cw:更改光标所在处的字到字尾处
  • c[数字]w:修改多个字(单词)

(7)跳跃

  • [数字]G:跳转到数字行号的行首

安装vimforcpp

在非root用户下直接运行以下指令即可

curl -sLf [网址]            仓库正在构建,后续补充更新

其他

(1)多行注释与多行去注释

        多行注释:

1.ctrl+v
2.选择要注释的行,使用hjkl继续选择
3.shift+i:进入插入模式
4.输入注释符号(C/C++://)
5.Esc

        多行去注释

1.ctrl+v
2.选择要删除的注释符号,使用hjkl进行选择
3.x:直接删除

(2)替换字符串(底行模式/命令模式)

        替换光标所在行的首个目标字符串

s/[目标字符串]/[新字符串]/

        替换光标所在行的所有目标字符串

s/[目标字符串]/[新字符串]/g

        替换全文中所有的目标字符串

%s/[目标字符串]/[新字符串]/g

结论:g:代表当前行所有

          %:代表当前所有行

编译器:gcc/g++

        用于将源代码编译成为可执行程序:

区别

        gcc:编译c语言文件(.c文件)

        g++:编译c++语言文件(.c\.cpp\.cc\.cxx\.hpp文件均可)

编译的四个过程

预处理:对待编译文件执行宏替换,头文件展开,去注释等操作

gcc/g++ -E [源文件.c] -o [预处理生成文件.i]
        -E:对文件只执行预处理操作
        .i:产生的新文件后缀为.i

编译 :(1)进行语法语义的检测

            (2)源代码编译成汇编指令

gcc/g++ -S [源文件.c或预处理文件.i] -o [编译指令.s]

汇编:将汇编指令转化为机器可识别的二进制代码

gcc/g++ -c [源文件.c或预处理文件.i或汇编指令文件.s] -o test.o
        tets.o也被称为目标文件

链接:将若干个二进制代码(.o文件)或者库文件,链接起来生成可执行程序

gcc [源文件.c或预处理文件.i或汇编指令文件.s或二进制文件.o] -o [可执行程序文件名]

执行:运行可执行程序文件(运行文件)

./[可执行程序文件]

静态编译与动态编译

区别:

        (1)动态编译:编译程序时没有使用-static

        动态编译产生的可执行程序小,耗时大,因为依赖库没有编译到可执行程序中(主流)

        (2)静态编译:编译程序时使用-static

        静态编译产生的可执行程序大,耗时小,因为依赖库已经编译到可执行程序中

ldd命令:

        该命令可以查看可执行程序依赖的文件

ldd [文件名]

调试器:gdb

        用于调试程序bug的工具

程序发行版本

        (1)debug版本比relesase版本多调试信息

        (2)程序发布默认为release版本,如需发布debug版本,则增加-g命令行参数

gcc [源文件.c] -o [发行文件]               release版本
gcc [源文件.c] -o [发行文件] -g            debug版本

        (3)gdb调试只能调试debug版本,调试语句为:

gdb [文件名]                    调试文件(debug文件)

调试基础方式

l:从main函数开始查看源码
1 [函数名称]:查看某个函数的源码
r:执行程序
n:逐过程执行程序(F10)
s:逐语句执行程序(F11)
b [行号]:在该行号设置断点
i b:查看断点
c:继续执行
delede oreekpoints:删除所有断点
delete brcakpoints n:删除序号为n的断点【重要]
disable breakpoints:禁用断点
enable breakpoints:启用断点
info locals:查看当前栈帧局部变量的值
P [变量名]:查看变量的值,查看内置变量,查看自定义类型(struct,class,this)等,功能很强大
bt:展示调用堆栈,可以通过调用堆栈来代码执行的函数调用关系(非常重要,反馈函数调用关系,从下往上看)
q:退出

三种使用场景

可执行程序运行前:

gdb [文件名]                    调试文件(debug文件)

可执行程序正在运行:

gdb attach [pid进程号]

可执行程序运行完成,但发生崩溃:

(1)coredump文件:核心转储文件,是程序在崩溃一瞬间内存的映像(案发现场)

        奔溃情况:1.内存访问越界    2.解引用空指针    3.double free

(2)coredump文件设置

ulimit -a                         显示当前资源限制的设定(包括核心转储文件的数量)
ulimit -c [数字或unlimited]        设置核心转储文件数量

(3)调试命令

gdb [可执行程序] [coredump文件]

注意:

        如果可执行程序为release版本,调试命令展示错误信息但不显示行号

        如果可执行程序为debug版本,调试命令展示错误信息、行号及该行内容

自动化构建项目:make&makefile

介绍说明:

        make:是一个命令,是用来自动化构建项目的工具

        makefile:是一个文件,文件内容当中包含了编译程序时的规则

        Makefile:也是一个文件,文件内容当中包含了编译程序时的规则

        关系:make根据makefile的文件内容规则进行解析,编译程序,构建项目

makefile文件格式:

目标对象:依赖对象
    编译命令

[新项目文件]:[源代码文件]
    gcc/g++ [源代码文件] -o [新项目文件]

        目标对象:要生产的可执行程序

        依赖对象:生成可执行程序时依赖的源代码

        编译命令:如何通过依赖对象生成目标对象

        注意:编译命令之前的空白部分是由table键形成的,#注释

make的工作方式(针对makefile文件):

(1)只为生成第一个目标对象服务

  •  如果已经生成了目标对象,则后续文件当中的内容不解析
  • 如果生成第一个目标对象需先生成依赖对象,则会在makefile文件当中查找生成依赖对象的方法,然后生成第一个目标
  • 如果发现依赖的对象不存在,再返回报错

(2)若依赖对象的最后一次修改时间早于目标对象的最后一次修改时间,则不生成

        理解:依赖对象不更新,目标对象不生成(已经生成一次后)

伪目标定义:

特征:总是被执行

.phony:[文件名]                将该文件设置为总是被执行的伪目标

作用:可无视依赖文件和目标文件的修改时间关系与生成限制

自定义变量和内置变量:

(1)内置变量

        $^:代表所有的依赖对象

        $<:第一个依赖对象

        $@:目标对象

(2)自定义变量

        随意命名,后续使用$符号对其进行解析

$(ABCD)                自定义变量ABCD

makefile中定义清理规则

        makefile文件:

.phony:clean
clean:
    rm [文件名]

        make操作:

make clean

版本管理工具:git

        用于代码的版本管理工具

(1)克隆仓库

git clone [网址]

(2)提交到本地

git add *
git commit -m "name"

(3)推送到远端仓库

git push [目标位置]

(4)将远端仓库更新到自己的本地仓库

git pull

(5)git status

作用:查看当前仓库状态


 持续制作更新中, 创作不易求点赞,欢迎大家交流讨论!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值