目录
前言
本章主要是讲解Linux的各软件的讲解和解释,下面讲解到的软件需要灵活运用,可以在Linux中达到事半功倍的效果。
一、指令补充
1.查看当前用户
指令:whoami
二、yum 资源包管理
1.认识 yum
在Linux中我们也是需要进行工具/指令/程序的安装、检查、卸载等,这时候我们就需要yum软件。
在Linux中安装软件的方式有以下三种:
1. 源代码的安装 —— 交叉编译的工作(麻烦且不推荐)
2. rpm 包直接安装(由开发人员提供)
3. 使用 yum 或 apt-get
yum是Linux预装的一个指令,可用于搜素,下载,安装对应的软件,好比于手机中的应用市场。
2.快速了解使用yum软件
2.1.应用软件搜索
指令:yum list | grep [软件名字]
2.2.下载并安装软件
指令:yum install [-y] [软件名字]
-y 表示安装时所有询问都允许
yum install指令需要在 root 或 sudo 下执行。
2.3.查看已下载的软件
指令:yum list installed
可配合 grep 指令去查找
2.4.卸载软件
指令: yum remove [软件名]
2.5.yum 清除缓存
指令:yum clean all
该指令用于清除YUM缓存,确保获取到最新的软件包信息。
2.6.yum 更新软件库/系统内核
指令:yum update
该命令来更新系统中已安装的所有软件包,也升级软件和系统内核。
3.yum的周边
这里我们可以发现yum是个神奇的指令,他的软件包又是从哪拉取来的,又是如何或者下载的,这时候我们就要了解一下yum的周边了。
先查看一下yum的配置文件,路径:ls /etc/yum.repos.d/
我们可以看见有这几个文件reop是仓库,最重要的是Base文件,Base文件里面默认配置了下载的软件链接 —— 用于获取软件源。我们用 vim 查看一下。
这里的链接我们看见都是阿里云里服务器里的,如需要更改配置文件最好参考网上的教程进行。
三、vim 软件
1.快速了解vim
vim是一个多模式的编辑器,vim里面还有很多的子命令,来进行代码的变成操作。
2.vim的模式
这里我们可以发现vim存在非常非常多的指令,我们先了解vim中的模式先。
2.1 命令模式
vim在打开的时候就进入的默认的模式,任何的输入都会被当作命令来看待,除非误触了模式的切换。
2.2 插入模式
插入模式从文字直观可理解,就是对文本进行插入输入数据,有几种方式可以直接进入插入模式,最直接的方式是在命令模式下按 i 是直接默认进入插入模式的指令,还有以下三种:
1. o 自动换行插入
2. a 光标移动一格
3. cc 当前行的内容重写
4. i 默认插入(常用)
2.3 底行模式
进入底行模式是要在命令模式下按 :可直接进入,底行模式的指令后面会详细介绍。
这三个模式要灵活运用和理解,vim都是由命令模式为基础,要退出vim软件还是需要保证在命令模式下,在不保证在哪个模式的话只需要按exc即可。
3.常见的模式中指令的使用
3.1 命令模式
里面的 n 代表数字
shift + $ :将光标定位在当前行的最后侧结尾处的描点
shift + ^ :将光标定位在当前行的最左侧结尾处的描点
shift + g :将光标定位到文本的最后一行
n + shift + g :将光标定位到文本的指定行数
gg :将光标定位到文本的最开始的第一行
光标指针控制:
h:左 j:下 k:上 l:右
这里可能会有疑问,为什么不用上下左右方向键呢?
第一:是因为在早期计算机中没有方向键,都是用hjkl来代替方向。
第二:有些指令只能用hjkl来代表方向去控制,不可以用↑↓←→来控制的。
n + yy / yy :复制多行 / 当前行
n + p / p :进行多行粘贴 / 在下一行进行粘贴
u :撤销上一个编辑的操作 (undo)
ctrl + r :对刚刚撤销的操作进行恢复重做
n + dd / dd :删除 / 剪切当前行 / 多行
可配合剪切粘贴使用。
n + r :替换当前光标的字符(n为多少位)
shift + r = R:改为替换模式,类似与wins系统的ins插入替换模式。
x:删除光标的所在字符
shift + 3 = #:用于高亮查找相同的字符串(函数名)
高亮的状态下:n 查找下一个高亮的字符串
shift + zz = ZZ :保存并退出 vim
3.2 底行模式
输入 : 进入底行模式
指令: :w / q / wq / w! / q! / wq! 这里!代表强制执行的意思
w:代表写,q:代表退出
指令::! (command)
!:代表执行vim外面的Linux指令语句
command:代表Linux要执行的指令
该指令是在指令!下输入的情况
:! vim (filename) 可直接新建一个文本文件
:vs (filename) 可同时查看两个vim的窗口文件,光标在哪个窗口,就编辑哪个窗口,底行也一样。
切换窗口文件只需要使用指令:ctrl + ww (光标多端口切换)
补充
如在Linux命令行中,如需要进入文件到指定的行数,可直接在后面加号加上数字,如:
指令:vim test.c +10
3.3 批量化模式
批量化注释 / 添加内容
1. Ctrl + v 进入模式
2.使用 h、j、k、l 英文方向键进行选区
3. shift + i = I 进行输入
4. 在exc退出模式,会自动输入数据
批量化去注释 / 内容
1. Ctrl + v 进入模式
2.选区
3. 按d去掉内容 / 注释
4. 给 vim 进行配置
在root用户中要对vim软件进行配置的话需要到路径: /etc/vimrc 下进行配置。
普通用户话是进入自己的家目录中创建一个 .vimrc 文件进行配置
要对vim进行配置的话内容必须写在 vimrc 中,配置内容可以参考网络上的配置方法。
5. vim安装插件
在 gitee 中查看 vim For cpp 的配置
地址:VimForCpp: 快速将vim打造成c++ IDE (gitee.com)
安装方法可参考以上地址进行操作。
vim安装插件建议在普通用户下操作,不要把插件安装到root用户下,进行配置时普通用户要在sudoers白名单中。
根据教程中输入以下指令:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
这里密码输入的是root的密码,不是普通用户的密码。
完成后会有提示,根据提示继续进行操作。
完成后我们在重新用vim软件打开一个文本就可以看见不同了,之后的时候对我们编程也有很大的帮助。
四、make / Makefile 自动化构建工具软件
在使用 make / Makefile 时,我们需要了解 make 是指令,makefile 是一个文件,他们之间是存在的是一个依赖方法以及依赖的关系,在使用 make 前必须创建一个 Makefile 的文件,执行 make 指令就会自动执行 Makefile 文件内容的指令。
Makefile文件内容:
定义一个mybin文件,用于自动化构建项目
![](https://i-blog.csdnimg.cn/blog_migrate/92f51d1d8b3c4b7487f1922a3ebe2093.png)
然后我们准备好文件以及文件的内容后,可直接执行make指令:
使用了make指令后,就会自动执行makefile里的指令,实现自动化构建及编译文件,可运行查看:
定义一个clean用于删除项目文件
我们可以创建一个自动化清理过程的指令,指令内容也是写在makefile中,具体指令:
那我们该如何执行clean的指令呢?只需要使用make时,后面配上make clean即可。
makefile和make形成目标文件的时候,默认是自上到下扫描makefile文件的,所有是默认执行第一个目标文件里的依赖方法,且默认只形成一个。
makefile文件的语法补充
设置目标成伪目标
.PHONY:[执行目标文件名]
如:.PHONY:clean 用于修饰clean目标文件成为一个伪目标,使它总是可被执行。
一般建议把clean设置成伪目标,因为可执行程序必须要删除后,再编译。(原因后面会给大家解释)
对构建过程依赖方法拓展
![](https://i-blog.csdnimg.cn/blog_migrate/15737f57cf9e1d08c1b13a31ac4c264b.jpeg)
makefile中变量的定义
![](https://i-blog.csdnimg.cn/blog_migrate/a7fc7ac236f0fc6d22c80611deaf6224.jpeg)
语法补充结合使用
![](https://i-blog.csdnimg.cn/blog_migrate/53aec560d3e9ab176dcde38c268953b0.png)
其他
爱折腾的小伙伴也许可能已经发现了问题了,我们当已经make出一个可执行程序时,继续使用make指令是会报错的,从报错信息会知道可执行程序文件已经是最新的了,无需继续执行,那么make和makefile是怎么知道可执行文件是最新的呢?
这个其实是通过对比时间对比出来的,只要可执行程序是最近修改时间比所有源文件的最近修改时间新时,说明该可执行程序就是最新的。
认识Linux里的文件时间
在Linux中我们如何查看文件的详细信息呢?
查看详细信息指令
指令:stat 【文件名】
该stat指令是用于显示文件和文件系统的详细信息
其他信息我们先不了解,主要是探讨文件的时间。
我们可以发现时间是存在三个的那他们区别是什么呢?
Access time:文件最后被访问的时间
Modify time:文件内容最后被修改的时间
Change time:文件的元数据(如权限或所有权)最后被修改的时间
我们在权限篇说过
文件 = 内容 + 属性
其实这里的内容就代表Modify time ,属性就是Change time。
那修改文件信息,系统会更新文件的哪些时间呢?
当修改文件的内容,M time 和 C time都会跟着修改,原因是文件内容的修改会对文件写入和修改权限进行访问,所以时间也会跟着改变。
那刚刚上一节说的make是看文件的最新时间是否成立呢?
我们可以使用 touch 【文件名】指令,对文件所有的时间进行更新。
程序更新指令
指令:touch 【文件名】
这里发现make指令又可以使用了。
总结
本章就到这里啦,下章给大家讲讲gcc/g++的编译过程吧。