一、Linux 软件包管理器 yum
1.1 软件包
- 在Linux下安装软件, 一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。
- 但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。
- 软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系。
- yum (Yellow dog Updater, Modified) 是 Linux 下非常常用的一种包管理器(工具)。主要应用在 Fedora, RedHat, Centos 等发行版上。
Linux 下安装软件的方式:
源代码安装
rpm 包安装
yum 工具(yum 是一条命令)
总结:
- yum 是什么?
- 我们在 Linux 中下载资源的一种工具,类似于手机上的应用商店。
- yum 可以为我们提供什么服务呢?
- 查找、安装、卸载资源。
- 解决依赖关系。
我们在手机应用商店上面搜索下载软件,本质是在该公司的后端服务器上搜索下载软件。
思考:那么应用商店如何知道该去哪个服务器上下载软件呢?
- 这个应用商店在本地一定有相关软件的配置信息(比如软件名和其对应的下载链接)。
- 所以 yum 工具中一定也有配置文件,指明我们应该去哪里下载资源。
1.2 搜索 & 安装 & 卸载软件包
查看软件包:yum list
命令
通过此命令可以罗列出当前一共有哪些软件包。由于包的数目非常之多,一般配合管道(grep 命令)筛选出我们关注的包。
例如:
$ sudo yum list | grep lrzsz
结果如下:
# 软件包的名称和版本
lrzsz.x86_64 0.12.20-36.el7 @os
注意:
第 1 列:软件包名称,主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构。
“x86_64” 后缀表示64位系统的安装包,“i686” 后缀表示32位系统安装包,选择包时要和系统匹配。
第 2 列:“el7” 表示操作系统发行版的版本,“el7” 表示的是 centos7/redhat7。
第 3 列:表示的是 “软件源” 的名称,即该软件包的发布方,类似于 “微信官网”,“华为应用商店” 这样的概念。
安装软件:yum install
命令
$ sudo yum install -y sl # 一个好玩的东西,可以在屏幕上跑一个小火车,大家可以去试一试哦
yum 会自动找到都有哪些软件包需要下载,-y 表示直接安装,中途不需要确认。
注意:
- 安装软件时由于需要向系统目录中写入内容,一般需要 sudo 命令或者切到 root 账户下才能完成。
- yum 安装软件只能一个装完了再装另一个。在 yum 安装一个软件的过程中,如果再尝试用 yum 安装另外一个软件,yum 会报错。
卸载软件:yum remove
命令
$ sudo yum remove -y sl # 卸载sl软件以及它的依赖包
更新 yum 源:
-
yum 的配置文件 /etc/yum.conf,这个一般不要去改动。
-
在 yum 配置路径下,会有 yum 源:
[ll@VM-0-12-centos 5]$ ls /etc/yum.repos.d/ # 查看yum源 CentOS-Base.repo CentOS-Epel.repo epel.repo epel-testing.repo # CentOS-Base.repo: yum源,要求软件可靠稳定才能放进yum源中,这里的软件版本迭代比较慢 # CentOS-Epel.repo: 扩展源,比如某个软件新开发的版本,就可以放到epel源中
在 CentOS-Base.repo 文件中可以进行软件源(即软件的下载链接)的配置,当你使用 yum install 安装软件时,就会去对应的服务器上下载软件。
执行
vim /etc/yum.repos.d/CentOS-Base.repo
:
1.3 拓展:rz/sz 工具
功能:这个工具用于本地 windows 机器和远端的 Linux 服务器通过 XShell 传输文件。
安装 rzsz 工具:
$ sudo yum install -y lszrz # lszrz是要安装的软件名称
安装完毕之后可以通过拖拽的方式将文件上传过去。
用法:
-
rz 命令,上传 windows 中的文件到远端 Linux 服务器中:
$ rz # 运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器,上传到服务器的路径为当前执行rz命令的目录。
-
sz 命令,将选定的文件发送到本地 windows 机器:
$ sz filename # filename是文件名
二、Linux 开发工具
我们在 windows 中编写 C/C++ 程序时,常用的 VS2019,是一个集成开发环境,包含了很多工具包。
而 Linux 下开发,大部分情况下都是使用的一个一个独立的工具。比如编写代码用 vim,编译代码用 gcc,调试代码用 gdb。
2.1 编辑器 - vim
为什么使用 vim 呢?因为它是所有 Linux 环境下自带的。
vi / vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 mac os、windows。

2.1.1 vim 的基本概念
vim 的常见三种模式(其实有好多模式,掌握常见这 3 种即可)的功能如下:
-
正常 / 普通 / 命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 模式或者 last line mode 模式下。
-
插入模式(Insert mode)
只有在 Insert mode 模式下,才可以做文字输入编辑。
-
底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
如果要查看你的所有模式:打开 vim,底行模式直接输入
:help vim-modes
2.1.2 vim 的基本操作
刚进入 vim 编辑器时,是处于「正常模式」下的,你要切换到「插入模式」才能够输入文字。
- 「正常模式」切换至「插入模式」,有 3 种方式:
- 按「i」进入插入模式后,从当前光标所在位置开始输入文字。
- 按「a」进入插入模式后,从当前光标所在位置的下一个位置开始输入文字。
- 按「o」进入插入模式后,插入新的一行,从行首开始输入文字。
- 「插入模式」切换至「正常模式」
- 按「ESC」键。
- 「正常模式」切换至「末行模式」
- 按下「
shift + :
」,其实就是输入「 : 」冒号。
- 按下「
- 退出 vim 操作,在「正常模式」中输入「 : 」冒号进入「末行模式」,然后输入:
- w(保存当前文件)
- wq(保存当前文件并退出 vim)
- q!(不保存强制退出 vim)
2.1.3 vim 在正常模式中的命令集
移动光标:
- vim 可以直接用键盘上的方向键来控制光标上下左右移动,但正规的 vim 是用小写英文字母「h」、「j」、「k」、「l」来分别控制光标向左、下、上、右移一格。
- 按[gg]:进入到文本开始
- 按「shift+g / G」:移动到文章的最后
- 按「 $ 」:移动到光标所在行的 “行尾”
- 按「^」:移动到光标所在行的 “行首”
- 按「w」:光标跳到下个字的开头(以单词为单位)
- 按「e」:光标跳到下个字的字尾(以单词为单位)
- 按「b」:光标回到上个字的开头(以单词为单位)
- 按「#l」:光标移到该行的第 # 个位置,如:5l、56l
- 按「#G」:光标移动到第 # 行
- 按「#j / k」光标向下 / 上移动 # 行
- 按「ctrl」+「b」:屏幕往 “后” 移动一页
- 按「ctrl」+「f」:屏幕往 “前” 移动一页
- 按「ctrl」+「u」:屏幕往 “后” 移动半页
- 按「ctrl」+「d」:屏幕往 “前” 移动半页
删除文字:
- 「x」:每按一次,删除光标所在位置的一个字符(常用)
- 「#x」:例如,「6x」表示删除光标所在位置的 “后面(包含自己在内)” 的 6 个字符
- 「shift+x / X」:大写的 X,每按一次,删除光标所在位置的 “前面” 一个字符
- 「#X」:例如,「20X」表示删除光标所在位置的 “前面” 20个字符
- 「dd」:删除光标所在行(常用)
- 「#dd」:从光标所在行开始删除 # 行
复制文字:
- 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
- 「#yw」:复制 # 个字到缓冲区。
- 「yy」:复制光标所在行到缓冲区。(常用)
- 「#yy」:例如,「6yy」表示拷贝从光标所在的行(包含自己在内) “往下数” 6 行文字。
- 「p」:将缓冲区内的字符粘贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。(常用)
- 「#p」:将缓冲区内的字符粘贴 # 份到光标所在位置。
- yy + p:复制粘贴
- dd + p:剪切粘贴
替换操作:
- 「r」:替换光标所在处的字符(局部文本替换)。(常用)
- 「R」:替换光标所到之处的字符,直到按下「ESC」键为止(整体文本替换)。
字母大小写转换:
- 「shift+~」:先按下 shift 键,再按下波浪号 ~ 不要停,往后遇到的所有小写字母将被转成大写,所有大写字母将被转成小写。
撤销上一次操作:(常用)
- 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次 “u” 可以执行多次恢复。
- 「ctrl + r」: 撤销的恢复。
更改操作:
- 「cw」:更改光标所在处的字到字尾处。
- 「c#w」:例如,「c3w」表示更改3个字。
跳至指定的行:
- 「ctrl」+「g」列出光标所在行的行号。
- 「#G」:例如,「15G」表示移动光标至文章的第 15 行行首。
2.1.4 vim 在末行模式中的命令集
在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再输入「 : 」冒号即可进入末行模式。
列出行号:
- 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。
跳到文件中的某一行:
- 「#」:# 号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字 15,再回车,就会跳到文章的第 15 行。
查找字符命令:
:/word
:向光标之下寻找一个名称为 word 的字符串,如果第一次找的关键字不是您想要的,可以一直按「n」键向下继续寻找该关键字。(常用):?word
:向光标之上寻找一个字符串名称为 word 的字符串,如果第一次找的关键字不是您想要的,可以一直按「n」键向上继续寻找该关键字。
批量化替换字符命令:
:%s/printf/cout/g
(把文中所有 printf 替换成 cout,g --global 表示全局的意思)(常用)
查看函数手册命令:
:!man [选项] [函数名]
(按 q 退出手册)(常用)
保存文件命令:
- 「w」: 在冒号输入字母「w」就可以将文件保存起来。可以跟一个感叹号「 w! 」强制保存。
退出 vim 命令:
- 「q」:按「q」就是退出,如果无法退出 vim,可以跟一个感叹号「 q! 」强制退出 vim。
- 「wq」:一般建议退出时,搭配「w」一起使用,这样在退出的时候还可以保存文件。(常用)
多文件多屏操作:
-
比如ÿ