目录
本节目标:
一、Linux 软件包管理器 yum
1.1、什么是软件包
1.2、Centos 7 中安装软件/工具/指令常用的方案
在 Linux 和 Winodws 系统下,当安装别人的软件/工具/指令时则需要:
1、需要别人先把代码编译成可执行程序、
2、以Windows为例,需要有人将编译好的可执行程序做成软件包,放在用户能够下载的地方,这个地方指的就是公司的服务器中,而公司官网或者是应用软件市场等等提供的并不是软件包,当用户需要下载软件时,可以通过公司官网或者应用软件市场来访问到公司的服务器,从而满足用户的需求,这一过程是通过网络来完成的,然后,公司的服务器将先搜寻到用户需要下载的软件包,然后再发送给用户,即,用户从官网或应用软件市场下载软件包,本质上就是去公司的服务器里面下载对应的软件包,但问题是,用户通过公司官网或应用软件市场来访问公司的服务器,这一过程是如何实现的呢,这是因为,应用软件市场和公司官网,都内置了很多软件的下载链接或者网址,而在 Linux 系统中也是如此,在 Linux 系统中,yum(软件/指令/工具)相当于 Windows 系统中的应用软件市场,当使用 yum 进行下载软件/工具/指令时,则会访问 ls /etc/yum.repos.d 该目录下的 yum 源,yum 源就是当使用 yum 进行搜索时,就会去 yum 源中搜索,yum 源中都内置了许多网址,链接,所以当使用 yum进行安装软件/工具/指令时,能够自动查找到对应的软件/工具/指令所在的服务器去安装,这就是因为 Linux 系统中有一些配置文件,即,yum 能够通过这些配置文件从而实现软件/工具/指令的搜索和下载、
更新 yum 源的方法:
不同的机器上,Linux 系统中的 yum 源中的内容不一定都是国内的链接,如果不是国内的,或者安装软件/指令/工具特别慢,超时甚至不成功时,这可能是因为所用到的服务器在国外,国家不允许访问,从而导致访问失败,或者距离过远导致效率太低,而国外的这些所有的服务器在国内都有镜像,所以,如果不是国内的 yum 源,或者当安装软件/工具/指令特别慢,超时甚至失败时,则建议更新 yum 源,注意:我们默认在 Linux 系统中的 yum 源就是文件 CentOS-Base.repo,当更新 yum 源时,先对原来的文件 CentOS-Base.repo 进行备份(重命名),即执行指令:mv CentOS-Base.repo CentOS-Base.repo-bak 即可,最好也把文件:epel.repo 也备份一下,即:最好也要更新一下文件:epel.repo,这一步必须要在 root 用户下进行,在 Linux 系统中,做任何配置,包括更新 yum 源,一定不要直接删除原来的文件,一定要先进行备份,再进行配置,即重命名一下就可以了,然后,通过 sudo 指令(普通用户)或者切换到 root 用户进行安装软件/工具/指令:wget,其次,下载阿里云或腾讯云的 CentOS-Base.repo 和 epel.repo 文件,如下所示:
//腾讯云: //CentOS-Base.repo文件、 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo //一行内容、 //epel.repo文件、 wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
//阿里云: //CentOS-Base.repo文件、 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo //epel.repo文件、 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
分别复制腾讯云或阿里云中的两行指令,在 root 用户下的路径:/etc/yum.repos.d 下分别粘贴即可,此时该路径下会自动出现更新后 CentOS-Base.repo 文件和 epel.repo 文件,最后,再在该路径下执行指令:yum clean all 和 yum makecache 即可完成 yum 源的更新,具体过程请见下面的博客:
https://blog.csdn.net/First_____/article/details/118607837
注意:
更新 yum 源的所有操作,必须要在 root 用户下进行,其次,路径:/etc/yum.repos.d 下的所有文件的所有者都是 root 用户,所属组的名字都是 root ,即 root 用户自成一组,所以,当更新 CentOS-Base.repo 文件和 epel.repo 文件时,若当前用户为普通用户,在普通用户的路径:/etc/yum.repos.d 下分别粘贴两行指令是不可以的,如果可以的话,那么更新后的文件 CentOS-Base.repo 和 epel.repo 文件的所有者就是该当前普通用户,且所属组的名字就是该当前普通用户了,这是不可以的,会报 "Permission denied" 的错误、
总结:
Linux 系统下更新 yum 源,只需要使用 root 用户完成上述 一次 更新 yum 源的操作即可,此时 root 用户和所有的普通用户均可使用更新后的 yum 源,最后,重命名操作的权限和删除操作的权限是一样的、
[HJM@hjmlcc ~]$ whoami HJM [HJM@hjmlcc ~]$ pwd /home/HJM [HJM@hjmlcc ~]$ ls /etc/yum.repos.d CentOS-Base.repo CentOS-Epel.repo [HJM@hjmlcc ~]$ cd /etc/yum.repos.d [HJM@hjmlcc yum.repos.d]$ ll total 8 -rw-r--r-- 1 root root 614 Jul 28 10:13 CentOS-Base.repo -rw-r--r-- 1 root root 230 Jul 28 10:13 CentOS-Epel.repo [HJM@hjmlcc ~]$ vim CentOS-Base.repo [extras] gpgcheck=1 gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1 baseurl=http://mirrors.tencentyun.com/centos/$releasever/extras/$basearch/ name=Qcloud centos extras - $basearch [os] gpgcheck=1 gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1 baseurl=http://mirrors.tencentyun.com/centos/$releasever/os/$basearch/ name=Qcloud centos os - $basearch [updates] gpgcheck=1 gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1 baseurl=http://mirrors.tencentyun.com/centos/$releasever/updates/$basearch/ name=Qcloud centos updates - $basearch ~ ~ ~ ~ .. ~ "CentOS-Base.repo" [readonly][noeol] 18L, 614C //输入 :q 退出vim、
[HJM@hjmlcc ~]$ whoami
HJM
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ yum list | grep sl
//其中,yum list的意思代表要求服务器把其所知道的所有的软
//件/工具/指令的名字全部打印出来,其次,| grep sl代表着在打印出来的所有软件/工具/指令的名字中将
//包含sl的所有的软件/工具/指令的名字全部打印出来、
//如下所示:cyrus-sasl-lib是软件/工具/指令的名字, x86是适用的平台, _64代表64位, 2.1.26-24是
//发行版本, el7_9也是适用的平台, 其中, el7代表Centos 7, @updates是发布方(软件/工具/指令源)、
cyrus-sasl-lib.x86_64 2.1.26-24.el7_9 @updates
cyrus-sasl-plain.x86_64 2.1.26-24.el7_9 @updates
openssl.x86_64 1:1.0.2k-25.el7_9 @updates
openssl-devel.x86_64 1:1.0.2k-25.el7_9 @updates
openssl-libs.x86_64 1:1.0.2k-25.el7_9 @updates
python-backports-ssl_match_hostname.noarch
python-slip.noarch 0.4.0-4.el7 @anaconda
python-slip-dbus.noarch 0.4.0-4.el7 @anaconda
rsyslog.x86_64 8.24.0-57.el7_9.1 @updates
sl.x86_64 5.02-1.el7 @epel
slang.x86_64 2.2.4-11.el7 @anaconda
NetworkManager-adsl.x86_64 1:1.18.8-2.el7_9 updates
NetworkManager-fortisslvpn.x86_64 1.2.8-7.el7 epel
NetworkManager-fortisslvpn-gnome.x86_64 1.2.8-7.el7 epel
aisleriot.x86_64 1:3.22.2-1.el7 epel
anope-openssl.x86_64 2.0.11-1.el7 epel
apr-util-openssl.x86_64 1.5.2-6.el7 os
...
...
autocorr-sl.noarch 1:5.3.6.1-25.el7_9 updates
xmlsec1-openssl-devel.i686 1.2.20-7.el7_4 os
xmlsec1-openssl-devel.x86_64 1.2.20-7.el7_4 os
yelp-xsl.noarch 3.28.0-1.el7 os
yelp-xsl-devel.noarch 3.28.0-1.el7 os
[HJM@hjmlcc ~]$
1.3、关于 rzsz
注意事项:关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!! ,可以通过 ping 指令验证、ping www.baidu.com
![]()
除了上述方法外,还可以使用下面的方法:
输入:rz+空格+回车,然后选择文件进行上传即可:
1.4、查看软件包
yum list | grep lezsz
//search 搜索包含指定关键字的软件包/工具/指令、
lrzsz.x86_64 0.12.20-36.el7 @base
注意事项:
1.5、如何安装软件/工具/指令
sudo yum install lrzsz
//1、
sudo yum install sl
//2、
sudo yum install sl.x86_64
1.6、如何卸载软件/工具/指令
sudo yum remove lrzsz //或者切换到 root 用户进行操作、
//1、
sudo yum remove sl
//2、
sudo yum remove sl.x86_64
二、Linux 开发工具

三、Linux 编辑器 - vim的使用
3.1、vim 的基本概念
1、正常/普通/默认/命令模式(Normal mode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 、2、插入模式(Insert mode)只有在 Insert mode 下,才可以做文字输入,按「ESC」键可回到命令行模式,该模式是我们后面用的最频繁的编辑模式、3、底行/末行模式(last line mode)文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作, 在命令模式下, Shift + ; (英文状态下的,中文状态下是 ;,Shift + ;是不可以由 命令模式 切换到 底行模式的),即可进入该模式、要查看你的所有模式,打开 vim ,先切换到底行模式,再直接输入 help vim-modes 、
3.2、vim 的基本操作
[HJM@hjmlcc ~]$ whoami
HJM
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ touch mytest.c
[HJM@hjmlcc ~]$ ls
a.out hjm.c HJM.c install.sh lcc.c mytest.c
[HJM@hjmlcc ~]$ vim mytest.c

总结:
从 命令模式 进入 底行模式 ,则输入 Shift + ;(英文) ,从 命令模式 进入 插入模式 ,则只需要点击 i / I 即可,而从 插入模式 或者 底行模式 回到 命令模式,则都是点击 Esc 即可,注意,要从底行模式 切换到 插入模式,或者从 插入模式 切换到 底行模式 ,都必须要先切换到 命令模式,然后再进行对应的切换,不可直接从 底行模式 切换到 插入模式 ,也不可能从 插入模式直接切换到 底行模式,注意:输入 i / I ,则是直接从 命令模式 切换到 插入模式 ,而输入 a ,则也会由 命令模式 切换到 插入模式 ,但光标会往后移动一个字符,而输入 A ,则也会由 命令模式 切换到 插入模式 ,但光标会直接移动到该行的末尾字符上,而在某一行的任意位置输入 o ,则也会由 命令模式 切换到 插入模式 ,但是,会首先在该行的下面创建一个空白行,且光标移动到该空白行的开始,然后再进入 插入模式,而在某一行的任意位置输入 O ,则也会由 命令模式 切换到 插入模式 ,但是,会首先在该行的上面创建一个空白行,且光标移动到该空白行的开始,然后再进入 插入模式,任何模式想切换到 命令模式 ,都是点击 Esc 即可、
命令模式下的文本批量化操作:
vim 更适合处理大型项目或大型文件、
1、在命令模式下,将光标置于某一行的任意处,输入yy,便可复制该行,然后输入p,此时将在该行的下一行将复制到的内容打印出来一份,如果输入np,此时将在该行的下n行将复制到的内容打印出来n份,在命令模式下,将光标置于某一行的任意处,输入yy,便可复制该行,然后将光标移动到某一行的任意处,输入p,此时将在该行的下一行将复制到的内容打印出来一份,在命令模式下,将光标置于某一行的任意处,输入yy,便可复制该行,然后将光标移动到某一行的任意处,输入np,此时将在该行的下n行将复制到的内容打印出来n份,
注意,空白行也会被复制上,但,~所在的行不是空白行、
2、在命令模式下,将光标置于某一行的任意处,输入2yy,便可复制该行和该行的下一行,然后输入p,此时将在该行的下2行将复制到的内容打印出来一份,如果输入np,此时将在该行的下2*n行将复制到的内容打印出来n份,注意,空白行也会被复制上,还要知道,在命令模式下,将光标置于某一行的任意处,输入2yy,但是如果该行的下面不存在内容行(包括return 0; 和 } 等等),也不存在空白行,即该行下面就是~所在的行时,此次指令2yy就会失效,我们不考虑这种情况,注意,空白行也会被复制上,但,~所在的行不是空白行、
3、在命令模式下,将光标置于某一行的任意处,输入dd,便可剪切该行,然后将光标移动到某一行的任意处,输入p,此时将在该行的下一行将剪切到的内容打印出来一份,如果输入np,此时将在该行的下n行将复制到的内容打印出来n份,在命令模式下,将光标置于某一行的任意处,输入2dd,便可剪切该行和该行的下一行,然后,将光标移动到某一行的任意处
,输入p,此时将在该行的下2行将剪切到的内容打印出来一份,如果输入np,此时将在该行的下2*n行将剪切到的内容打印出来n份,注意,空白行也会被剪切上,但,~所在的行不是空白行,还要知道,在命令模式下,将光标置于某一行的任意处,输入2dd,但是如果该行的下面不存在内容行(包括return 0; 和 } 等等),也不存在空白行,即该行下面就是~所在的行时,此次指令2dd就会失效,我们不考虑这种情况,剪切功能也可以用于删除、
4、在命令模式下,u:代表撤销上一次的任何操作,相当于 vs 下的 ctrl+z ,ctrl+r:代表撤销上一次的撤销(u)操作,相当于 vs 下的 ctrl+y 、
5、在命令模式下,Shift+g 或 G:直接将光标定位到 vim 中的由内容行和空白行组成的区域中的最后一行的开头,也就是第一个 ~ 所在的行的上一行的开头、
6、在命令模式下,gg:直接将光标定位到 vim 中的由内容行和空白行组成的区域中的第一行的开头、
7、在命令模式下,n+Shift+g 或 n+G:直接将光标定位到 vim 中的由内容行和空白行组成的区域中的第n行的开头、
8、在命令模式下,Shift+4 或 $(英文状态下,中文状态下是¥):直接将光标定位到某一行的结尾,$称为锚点、
9、在命令模式下,Shift+6 或 ^(英文状态下,中文状态下是……):直接将光标定位到某一行的开头,^称为锚点、
10、在命令模式下,如果某一行过长,可以点击 w,在一行内,以单词为单位进行光标的向后移动,移动到下一个单词的开头,暂时不考虑 W,可以点击 e,在一行内,以单词为单位进行光标的向后移动,移动到下一个单词的末尾,暂时不考虑 E,可以点击 b,在一行内,以单词为单位进行光标的向前移动,移动到前一个单词的开头,暂时不考虑 B 、
11、在命令模式下,↑,↓,←,→,可以使用,k,j,h,l,来代替,最好使用后者,因为在后期还会学习组合命令,比如:批量化注释,此时,↑,↓,←,→,就不再支持了,其次就是老式键盘中不存在↑,↓,←,→键、
12、在命令模式下,Shift + ` ,( `为英文状态下) 或 Shift + · ,( ·为中文状态下) ,本质上就是:选中某一个字符,输入~,两者得到的都是~,可以实现大小写之间的切换、
13、在命令模式下,r+x:选中某一个字符,目的就是将某一个字符替换成字符x,即,r:替换光标所在的字符,n+r:替换光标所在的字符及其后面n-1个字符、
14、在命令模式下,Shift+r 或 R:左下角出现了REPLACE,其实这就是第四种模式,即,批量化替换,我们可以把他当做普通的命令使用即可,此时随便在键盘上输入,就可以把之前的内容覆盖掉,当之前的内容被全部覆盖,但输入并未停止时,将会输入新的内容进去,并且由第四种模式切换到命令模式,也是点击 Esc 即可、
15、在命令模式下,x:删除光标所在的字符,nx:删除光标所在的字符和该字符后面n-1个字符,即,批量化删除字符、
vim 的配置:
vim 配置的原理以及实际上 vim 读取了哪些配置文件,在后期会进行阐述,此处只讲解如何进行 vim 的配置:
登录 gitee ,搜索:vimforcpp ,打开第一个:HGtz2222/VimForCpp,往下拉,找到代码行,目前的 VimForCpp 只支持 Centos 7,不支持Centos 8、
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
复制并粘贴到所有的普通用户和 root 用户的工作路径下,敲回车等待安装,如果是普通用户,则需要输入一下 root 用户的密码,如果是 root 用户,则不需要再输入 root 用户的密码,等待安装结束,手动执行指令:source ~/.bashrc ,此时就已经完成了vim的配置、
注意:
root 用户和所有的普通用户如果想要进行 vim 的配置,必须一个一个的进行配置,root 用户也需要配置自己的 vim ,当 root 用户配置好自己的 vim 后,并没有为所有的普通用户进行vim 配置,所有的普通用户想要进行配置 vim ,必须一个个的进行 vim 配置,给哪个用户配置 vim ,就登陆哪个用户的账号进行配置,该用户包括 root 用户和所有的普通用户,这是因为,每一个用户( root 用户和所有的普通用户)都有一个 vim ,每一个 vim 都有自己的配置文件,所以不能像上面那样进行操作,vim 的指令是 root 用户和所有的普通用户都共享的,但是 vim 的配置是 root 用户和所有的普通用户各人有一份的,我们所谓的配置 vim ,不是在配置 vim 指令,而是在配置vim配置、
其次,当配置过程中,如果出现过慢或者配置失败的情况,是因为我们 Linux 系统中的 yum 源中的内容不是国内的链接,此时要先进行更新 yum 源,更新结束后,再进行 vim配置就很快了,更新 yum 源的方法见本文前面的记录、