[linux] 看了就会写程序并且变成黑框高手的linux的基础工具篇 ^.^

Posted 哦哦呵呵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[linux] 看了就会写程序并且变成黑框高手的linux的基础工具篇 ^.^相关的知识,希望对你有一定的参考价值。

注:以下所有命令执行,都是基于linux系统centos7.5版本下


在这里插入图片描述

1. yum包管理器

1.1 yum包管理器是干什么的?

在linux系统中安装软件,通常是下载软件源码,并进行编译得到可执行程序。这种做法过于复杂,所以就有了形同windows的软件商店,通过商店直接下载软件包,进行直接安装。

1.2 yum的基本使用命令

  1. 罗列liunx下的所有可以下载的软件包,命令: yum list
    在这里插入图片描述

  2. 上图可以看出直接罗列出来软件实在太多了,难以分辨,所以使用grep筛选出我们想看到的软件包。命令: yum list | grep [软件包名]
    在这里插入图片描述

  3. 安装软件,命令: yum install (-y) [软件包名]

linux中安装文件需要向系统目录中写入文件,所以需要使用sudo命令或者切换到root用户下。
安装软件时必须逐个安装,不能同时安装多个。

这里以安装 lrzsz 为例,该软件是用于windows和远端linux机器通过xshell传输文件的。
在这里插入图片描述
此页面显示已经安装了该软件,进行的更新操作。

  1. 卸载软件 yum remove (-y) [软件包名称]
    这里以卸载lrzsz为例。
    在这里插入图片描述

2. Linux开发工具相关

在liunx系统中,我们最常用的功能无疑就是对软件的开发了,如何进行程序的书写,程序的编译,调试,代码的管理,将会在下文中详细介绍以上功能。

2.1 vim编辑器

2.1.1 vim是什么?

vim简单来说,就是一款编辑器,可以编写程序的编辑器,其中可以书写c/c++等,具有代码高亮显示等等一些特性。

2.1.2 vim的简单介绍

1.vim我们常用的一共有三种模式,分别为命令模式,插入模式,底行模式。

  • 命令模式:在此模式下,可以控制屏幕光标的移动,字符、字或行的删除,移动复制某区段,或进入插入模式、底行模式下。
  • 插入模式:可以进行文字的输入,按 esc 回到命令行模式,该模式使用最为频繁,在底行模式下按下键盘 i 键进入插入模式。
  • 底行模式:此模式中,可以进行文件的保存或退出,也可以进行文件替换、查找字符串,列出行号等操作。在命令模式中,shift + : 进入该模式。

在这里插入图片描述

2.1.3 vim的功能按键

贴一张键位图:
在这里插入图片描述
加下来,挑一些常用功能介绍一番。这些功能都是在正常模式下的操作,并且区分大小写,在vim中最常用的7个功能移动光标、删除、复制、粘贴、替换、撤销、更改

1.移动光标

 方法一:键盘上下左右键

 方法二:

操作现象
h光标左移
l光标右移
k光标上移
j光标下移
gg光标快速移动至第一行
G光标快速回到最后一行
[num]G光标跳转至num行

2.删除字符

操作现象
x向后删除光标所在位置的元素
[num]x向后删除num个字符
X向前光标所在删除字符
[num]X向前删除num个字符
dd对光标所在行进行剪切
[num]dd剪切num行

3.复制字符

操作现象
yy复制光标所在行
[num]yy复制光标以下num行

4.粘贴

操作现象
p在光标的下一行进行粘贴
P在光标的上一行进行粘贴

5.替换

操作现象
r替换当前光标所在的字符
R进入到replace模式,进行替换,esc结束替换

6.撤销

操作现象
u撤销上次的操作
ctrl + r反撤销

7.更改

操作现象
cw删除当前单次,并进入插入模式

2.1.4 底行模式中常用的指令

1.搜索字符

操作现象
/[待查找字符]向下搜索
?[待查找字符]向上搜索

上述操作如果第一次不是想要查找的值可以按 n 继续查找

在这里插入图片描述
2.查找指定字符并全文替换
:%s/[待替换字符]/[替换后字符]/g 参数含义 %s全文替换 g替换当前行所有目标字符串

替换前:
在这里插入图片描述
替换后:
在这里插入图片描述
3.显示取消行号

操作现象
set nu显示行号
set nonu取消显示行号

4.批量注释与批量取消注释

操作现象
ctrl+v -> 选中注释行(j/k) -> I ->插入注释符 -> esc批量注释
ctrl+v-> 选中注释行(j/k/l/h) -> x批量取消注释

2.2 gcc/g++编译器

2.2.1 作用

gcc 用来编译c语言,g++用来编辑c++。如果提示无法使用该命令,则需要利用上述的yum管理器进行安装

2.2.2 命令格式及参数解释

命令格式:gcc/g++ [参数] 编译的文件名 [参数] [目标文件]

参数作用
-E对文件进行预处理,生成 .i 文件
-S对文件进行汇编,生成 .s 文件
-c编译目标代码,生成 .o 文件
-o文件输出到XX文件
-g编译最后的参数,可以调试程序
-static对文件进行静态编译
-shared动态编译,不填写此参数默认为动态编译

2.2.3 编译过程及参数使用

在liunx编译中需要经历4个过程,预处理、编译、汇编、链接。

1.预处理

在预处理阶段,主要完成头文件展开、宏替换、条件编译、去注释等。处理移 # 开头的所有代码。
命令格式 gcc -E filename.c -o filename.i

在这里插入图片描述
在这里插入图片描述

2.编译

生成汇编代码,在这个阶段会进行代码规范性的检测,语法语义的检查,并且编译为汇编代码
命令格式: gcc -S filename(.i) -o sort.s

在这里插入图片描述
在这里插入图片描述
3.汇编

将编译生成的汇编代码,转化为机器码文件。生成 .o文件
命令格式: gcc -c filename.s -o filename.o

在这里插入图片描述
4.链接

对编译的机器码文件,进行链接生成可执行文件
可以省略上述步骤,直接生成可执行文件
命令格式: gcc [filename] -o [filename]

在这里插入图片描述
在这里插入图片描述
注意

在链接过程中,分为静态链接和动态链接
  静态链接:静态链接的可执行文件大于动态链接生成的可执行文件,因为在这个过程中在所有依赖文件全部加入到可执行文件中,运行时不依赖任何文件。
  动态链接:默认方式为动态链接,不将库文件加入到程序中,而是在程序运行时动态链接所需要的库文件。

静态链接与动态链接大小对比:
在这里插入图片描述

2.3 gdb调试工具

2.3.1 gdb调试前的准备

程序的版本共有两种,分别为debug版本和release版本,debug版本是提供给程序员调试的程序版本,而release版本是发布程序的版本。而linux默认编译出来的release版本。所以想要调试程序必须要在编译后加上-g参数。
gcc filename.c -o filename -g

2.3.2 gdb调试的小命令

gdb 可执行文件进入调试模式才能有以下的操作。

参数作用
l显示当前调试程序的代码,一次显示10行
r运行程序,没有断点则会一次执行完程序
b 行号在指定行号位置加入断点
i b查看所有断点信息
disable 断点序号禁用断点
enable 断点序号启用断点
n逐过程执行
s逐语句执行
c从当前位置连续执行代码,直至遇到断点或程序结束
p 变量名打印指定变量信息,也可以打印自定义类型变量
bt查看调用堆栈,从底向上看堆栈信息
where与bt命令相同
q退出调试

2.3.3 gdb调试命令的演示

  1. l 显示程序代码
    在这里插入图片描述

  2. r 运行代码
    在这里插入图片描述

  3. b [行号] 对指定行号设置断点
    在这里插入图片描述

  4. i b 查看所有断点信息
    在这里插入图片描述

  5. disable 断点序号
    在这里插入图片描述

  6. enable 断点序号
    在这里插入图片描述

  7. n 逐过程执行
    一次性执行完QuicSortNonR()函数
    在这里插入图片描述

  8. s 逐语句执行
    进入到PrintResult()函数体中执行斜体样式
    在这里插入图片描述

  9. p 变量名
    在这里插入图片描述

  10. bt 查看堆栈信息
    在这里插入图片描述

2.4 make/makefile自动化构建工具

2.4.1 自动化构建是什么

如果工程中文件量非常大,则上面的gcc命令则需要手动一步步去执行,太慢了。所以有了makefile文件。
makefile文件书写一次,只需要使用make命令,整个工程就会自动编译。
makefile文件写编译规则,make负责解释这些规则。

2.4.2 makefile文件怎么写

1.书写规则
  makefile文件由三部分构成,分别是 目标文件、依赖对象、编译命令共同组成。
  伪目标:将对象设置为伪目标,则不管文件有没有更新的情况下都不会生成目标对象。常用于工程清理,比如说下发图片中第22行就是伪目标对象
在这里插入图片描述

上述makefile文件中的依赖关系为:
sort_test 依赖 sort.ostack.o
sort.ostack.o 依赖 sort.sstack.s
以此类推

2.4.3 makefile工作原理

1.make会在当前目录下寻找名字为makefileMakefile的文件进行编译
2.make命令只会为生成第一个目标文件而服务,上述例子中只会为生成sort_test文件而服务
3.如果目标文件的依赖对象不存在会在下方命令中寻找可以生成该依赖对象的命令进行执行。会先生成所需要的依赖对象再去生成目标对象
4.如果文件没有更新则执行make命令不会去重新编译,如果文件有更新,再去执行make命令才会对改变的目标重新生成目标对象。

  1. 执行make命令
    在这里插入图片描述

  2. 文件未更新执行 make命令
    在这里插入图片描述

  3. 文件更新执行make命令
    在这里插入图片描述

  4. 清理工程
    在这里插入图片描述

2.4.4 内置变量和自定义变量

1.内置变量
  在这里只列最常用的两个变量

参数作用
$^代表所有依赖对象
$@代表所有目标对象

2.自定义变量

自定义方法: 变量名 = 字符串
使用方法:$(变量名) 一般用来定义名字出现次数较多的变量

  还记得上面makefile文件中的代码吗,我们将上述代码改写以下利用内置变量与自定义变量进行改写。

在这里插入图片描述
在这里插入图片描述


2.4 git代码管理工具

  在这个工具的使用中,我会以我的个人仓库作为示例进行演示。

1.登录自己的远端仓库
  登录自己的远端仓库,并且新建一个仓库。我这里有仓库了就不新建了。

2.复制远端仓库链接
  找到远端仓库的链接复制下来,一会有大用。
在这里插入图片描述

2.4.1 linux下的git工具使用

没有工具的要先下载工具

1.克隆项目到本地

如果想对远端仓库进行代码的提交,则必须先要克隆仓库到本地
git clone [url]
克隆时,也保证当前文件夹不是仓库

在这里插入图片描述
2.将代码交由git管理

将代码放入仓库中,如果直接在仓库新建代码,但是它不归仓库所管理,所以要通过add命令交由仓库管理。
git add [文件名]

在这里插入图片描述
3.提交改动到本地

上一步做完之后,新建的文件已经由仓库管理了,本地仓库没有接收这个改动,所以将改动提交至本地。
git commit -m "日志信息"
提交代码时,一定要提前配置好用户名和邮箱地址。下面就是反例。

在这里插入图片描述
4.将改动过的代码提交到远端仓库

git push origin master

在这里插入图片描述
在这里插入图片描述

总结

以上的所有内容就是关于liunx工具的使用了,文章中难免会出现一些小问题,如果有发现,欢迎批评指正。

以上是关于[linux] 看了就会写程序并且变成黑框高手的linux的基础工具篇 ^.^的主要内容,如果未能解决你的问题,请参考以下文章

小白看了就会用IO流的文章

将Excel表中数据导入数据库(看了就会)

从超级菜鸟变成Linux系统高手

mfc调用cmd执行完保留黑框

看了就很快学会jQuery

看了就想收藏的文章链接