📒博客主页:Morning_Yang丶
🎉欢迎关注🔎点赞👍收藏⭐️留言
📌本文所属专栏: 【Linux】
🙏作者水平有限,如果发现错误,敬请指正!感谢感谢!
一、Linux 软件包管理器 yum
1.1 软件包
- 在Linux下安装软件, 一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。
- 但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。
- 软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系。
- yum (Yellow dog Updater, Modified) 是 Linux 下非常常用的一种包管理器(工具)。主要应用在 Fedora, RedHat, Centos 等发行版上。
Linux 下安装软件的方式:
- 源代码安装
- rpm 包安装
- yum 工具(yum 是一条命令)
总结:
- yum 是什么?
- 我们在 Linux 中下载资源的一种工具,类似于手机上的应用商店。
- yum 可以为我们提供什么服务呢?
- 查找、安装、卸载资源。
- 解决依赖关系。
我们在手机应用商店上面搜索下载软件,本质是在该公司的后端服务器上搜索下载软件。
思考:那么应用商店如何知道该去哪个服务器上下载软件呢?
-
这个应用商店在本地一定有相关软件的配置信息(比如软件名和其对应的下载链接)。
-
所以 yum 工具中一定也有配置文件,指明我们应该去哪里下载资源。
-
sudo yum install -y epel-release
拓展源有些服务是非标准的,放在其他库,所以需要拓展源
1.2 搜索 & 安装 & 卸载软件包
查看软件包:yum list
命令
通过此命令可以罗列出当前一共有哪些软件包。由于包的数目非常之多,一般配合管道(grep 命令)筛选出我们关注的包。
例如:
$ sudo yum list | grep lrzsz
这个指令的含义是:通过管道把yum检索的结果传递给grep,过滤其中包含lrzsz的软件包。
结果如下:
# 软件包的名称和版本
lrzsz.x86_64 0.12.20-36.el7 @os
lrzsz是一个用于文件的上传和下载的工具
- rz(zmodem file receive)接收到Linux端
- sz(zmodem file send)发送到windows机器
注意:
第 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
命令,不是unistall !
$ sudo yum remove -y sl # 卸载sl软件以及它的依赖包
yum search 搜索包含指定关键字的软件包
更新 yum 源:
-
yum 的配置文件 /etc/yum.conf,这个一般不要去改动。
-
在 yum 配置路径下,会有 yum 源:
[yzy@VM-4-4-centos day5]$ 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
:
以下命令正确的是:
A.yum makecache命令的功能是将服务器的软件包信息缓存到本地
B.yum search命令可以在所有软件包中搜索包含有指定关键字的软件包
C.yum clean all 命令可以清除缓存中老旧的头文件和软件包
D.yum upgrade命令可以更新所有的rpm软件包
答案解析
yum工具在每次安装指定软件包的时候,都会检测源服务器上的软件包信息,为了便捷不用每次都去搜索软件包信息,因此使用 yum makecache将软件包信息缓存到本地,使用 yum clean all 清理老旧的缓存信息。因此A和C是正确的
yum search 用于在搜索包含有指定关键字的软件包,B也是正确的
D选项:
yum -y update:升级所有包同时,也升级软件和系统内核;
yum -y upgrade:只升级所有包,不升级软件和系统内核,软件和内核保持原样。 所以D选项不完整严谨
正确答案是:A,B,C
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++ 程序时,常用的 VS,是一个集成开发环境,包含了很多工具包。
而 Linux 下开发,大部分情况下都是使用的一个一个独立的工具。比如编写代码用 vim,编译代码用 gcc,调试代码用 gdb。
2.1 编辑器 - vim
为什么使用 vim 呢?因为它是所有 Linux 环境下自带的。
vi / vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 mac os、windows。
① vim 的基本概念
vim 的常见三种模式(其实有好多模式,掌握常见这 3 种即可)的功能如下:
-
正常 / 普通 / 命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 模式或者 last line mode 模式下。
-
插入模式(Insert mode)
只有在 Insert mode 模式下,才可以做文字输入编辑。
-
底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
如果要查看你的所有模式:打开 vim,底行模式直接输入
:help vim-modes
【拓展】
安装vimforcpp插件
在使用vim前,可以安装一个vimforcpp插件,方便写C/C++代码。初学时不了安装和配置可以直接复制下面这段指令到命令行中:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
常见错误
如果上一次编辑时异常退出了,就会产生这样的警告,这是因为异常退出导致.swp文件没有删除,当进入vim时遇到这样的警告,按"d"将.swp文件删除即可。
② vim 的基本操作
刚进入 vim 编辑器时,是处于「正常模式」下的,你要切换到「插入模式」才能够输入文字。
- 「正常模式」切换至「插入模式」,有 3 种方式:
- 按「i」进入插入模式后,从当前光标所在位置开始输入文字。
- 按「a」进入插入模式后,从当前光标所在位置的下一个位置开始输入文字。
- 按「o」进入插入模式后,插入新的一行,从行首开始输入文字。
- 「插入模式」切换至「正常模式」
- 按「ESC」键。
- 「正常模式」切换至「末行模式」
- 按下「
shift + :
」,其实就是输入「 : 」冒号。
- 按下「
- 退出 vim 操作,在「正常模式」中输入「 : 」冒号进入「末行模式」,然后输入:
- w(保存当前文件)
- wq(保存当前文件并退出 vim)
- q!(不保存强制退出 vim)
③ 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」:up 光标往上移动半页
- 按「ctrl」+「d」:down 光标往下移动半页
删除文字:
- 「x」:每按一次,删除光标所在位置的一个字符(常用)
- 「#x」:例如,「6x」删除光标后面6个字符(包括光标所在位置)
- 「shift+x / X」:大写的 X,每按一次,删除光标所在位置的 “前面” 一个字符(不包括光标所在位置)
- 「#X」:例如,「20X」表示删除光标所在位置的 “前面” 20个字符
- 「dd」:删除光标所在行(常用)
- 「#dd」:从光标所在行开始删除 # 行
👉 这里的删除本质上都是剪切,可以通过p进行粘贴。
复制文字:
- 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
- 「#yw」:复制 # 个字到缓冲区。
- 「yy」:复制光标所在行到缓冲区。(常用)
- 「#yy」:例如,「6yy」表示拷贝从光标所在的行(包含自己在内) “往下数” 6 行文字。
- 「p」:将缓冲区内的字符粘贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。(常用)
- 「#p」:将缓冲区内的字符粘贴 # 份到光标所在位置。
- yy + p:复制粘贴
- dd + p:剪切粘贴
替换操作:
- 「r」:替换光标所在处的字符(局部文本替换)。(常用)
- 「R」:替换光