写在前面
商业生态
我们在安装一个软件之前都需要安装对应的软件包,可以肯定的是那些需要我们下载的软件包一定是不存在我们电脑的磁盘里,那么这些软件包在哪里呢?答案是存在于远端服务器上的。那么远端服务器又有那么多,我们的计算机怎么知道具体应该去哪一台服务器上找呢?
当我们使用电脑下载应用软件包时,通常是去该软件对应的官网中下载对应的软件包;当我们使用手机时,通常是直接去手机中的应用商店里下载。但实际上手机里的应用商店并不存在软件包,它只是将各大应用所对应的官网下载链接给我们展现出来,我们最后下载还是在官网中下载的。那么是谁提供的这些软件包呢?
答案很明显,是由企业,组织甚至是个人提供的。这些开发者为了获得利益编写出软件包并把它放在相应的服务器上。软件的开发者可以通过在软件内置广告等手段获得利益,同时他们必须向搜索引擎或者手机厂商支付一定的费用以保证他们的软件能被我们看到。就这样一条简单的商业链就出来了。
开源生态
有人编写软件是为了钱,但也有人视金钱如粪土,他们将他们写出来的软件源代码向所有人公开,让别人能自由免费的使用他的软件,这就是开源。在Linux之父的林纳斯托瓦兹开源了Linux之后,世界上有很多人都参与到了完善Linux的浪潮中。在完善Linux的过程中自然不缺为Linux编写软件的人,这些人加入到相应的Linux社区后就将其编写好的软件包的下载链接放到了对应的社区服务器上。一个社区的软件肯定不止一个,也就是说下载链接有很多,那么就需要一个存放下载链接的软件,这个软件就是“ yum ”。
yum (Yellow dog Updater, Modified) 是Linux下非常常用的一种包管理器;主要应用在 Fedora, RedHat,Centos 等发行版上;软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系。
或许有人好奇,开源软件有没有收入难道他们购买服务器的费用都是自掏腰包的吗?要知道现在Linux在世界上的影响可以说是相当大的,因为其稳定,安全的特性被许多大企业所采用,如果Linux因为资金问题而停服了那么首先着急的就是哪些使用了Linux的大型企业,所以为了不然这种情况发生,Linux有一个专用的公共账户,这个账户是专门用来接收从世界各地来的捐款的。社区用这些钱来购买服务器或组织活动。
生态本土化
我国计算机的起步相较于西方来说是落后的,开源生态最初也是从西方开始的。也就是说大多数Linux社区及其对应的服务器都是部署在国外的。因为距离原因,所以如果我们直接去访问国外的服务器速度会很慢甚至有时候根本无法访问。为了解决这个问题,一些大型的企业或者是大学会将国外的软件服务镜像下来,所谓的镜像其实就是将国外服务器上的软件拷贝到了自己的服务器上。 但是这样并没有解决所有问题,因为yum中下载软件时默认访问的链接还是国外的链接,那么为了解决这个问题这些企业或者高校还提供了一套yum源配置文件 ,这套yum源配置文件会将原本的外国链接改成这些企业或者高校自己的链接。那么如何查看yum的源配置文件呢?
在Linux中,yum的源配置文件是在“ /etc/yum.repos.d/ ”目录下的CentOS-Base.repo文件中
肯定有人好奇,yum的源配置文件里面到底放的是什么,真的是前面所说的链接吗?因为还没学vim,所以我这里使用nano这个工具来查看一下CentOS-Base.repo文件中的内容:
发现这个文件里确实是放的各种链接。这种就是已经配置好的yum源,因为我使用的是云服务器,一般云服务器的yum源都是配置好的。如果你使用的是虚拟机,那么就需要你自己手动更改配置文件,在网上可以看到很多这样的文章,这里放一个我觉得写的不错的文章链接:(1条消息) 修改yum源为国内镜像_扎罗的盒子的博客-CSDN博客_yum 镜像
配置好yum源以后就可以开始正常使用yum了
yum的基本使用
查看软件包
我们可以通过yum list的命令列出当前一共哪些软件包,但是我们一般不这么用,通常是将yum list和grep命令用管道联合起来用从而筛选出我们关注的包:
注意事项
软件包名称构成:主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构
“x86_64” 后缀表示64位系统的安装包,“i686” 后缀表示32位系统安装包,选择包时要和系统匹配
“el7” 表示操作系统发行版的版本: “el7” 表示的是 centos7/redhat7,“el6” 表示 centos6/redhat6
最后一列中 base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念
但是可以看到当我查询与sl相关的命令时出现的很多软件它们的最后一列并不是base,而是epel等。这是因为有一些软件并没有被收纳到官方的软件集合中,而是放在非官方软件集合中 。这就好像虽然巅峰时期的葫芦娃强的离谱,但是永远也不能在官方的应用商店里找到葫芦侠。如果我们要使用这种非官方软件集合中的软件,就要安装非官方软件集合列表-epel-realse:
拓展
rzsz工具是一个用于在Windows机器和远端Linu 服务器通过xshell传输文件的,安装完毕后甚至可以在Windows下通过拖拽到xshell上的方式将文件传输到Linux远端服务器上。下载方式:“yum install -y lrzsz ”
下面将演示一下rzsz的功能:
当我输入rz时,可以将Windows机器上的文件选择性传入服务器中
输入sz+文件名后,可以选择将该文件传输到Windows机器的哪一个位置:
安装和删除软件
其实使用yum安装软件在前面我们就已经使用过了,那么安装了的软件如何删除呢?指令格式如下:” yum remove +软件名“(root用户),普通用户需要使用sudo提权:” sudo yum remove +软件名“
注意:
安装的本质就是将软件的文件放到指定的位置,使其能够在新的硬件环境中运行。也就是说安装软件需要向系统目录中写入内容,一般需要root权限,如果时普通用户的身份则需要使用sudo提权。yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错。
vim的基本使用
vim的基本概念
我相信各位应该都听说过集成开发环境,那么什么是集成开发环境,这里解释一下:
有一天你的舍友问你说:”张三我听说你学的不错,那么你一般在哪里写代码?“你想都没想说”vs2019“。然后你的舍友又问你:”你的代码在哪编译?“你说:”vs2019“。他又问:“你的代码在哪调试?”你说:”vs2019“。他还问:”你的代码在哪执行?“你说:”vs2019“。然后你发你的代码的编写,编译,链接,调试,执行等所有的功能你就一个vs2019就全搞定了。甚至他问你说:“C/C++在哪写?”你说:“vs2019”,他又问:“Java,python,php在哪写?”你说:“vs2019”。你心想:“不愧是宇宙第一IDE”。这种跨语言,跨功能,集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套就叫集成开发环境。
但是vim并不是集成开发环境,而是一个编辑器,所谓编辑器其实和记事本没有本质的区别,但vim是一个功能强大,多模式的编辑器。vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如不仅可以在终端运行,也可以运行于x window、 mac os、windows 。
vim的模式切换
vim 一般来说是12种模式,我们只需要掌握其中三种就行,分别是命令模式(commandmode)、插入模式(Insert mode)和底行模式(last line mode) 。各模式区别如下:
正常/普通/命令模式(Normal mode) :
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。
底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模 式。要查看你的所有模式:打开vim,底行模式直接输入help vim-modes
当我们使用vim打开一个文件时默认是处于命令模式下,我们可以通过如下指令切换到其他模式下:
[正常模式]切换至[插入模式]:输入a/i/o,其中使用 i 进入时光标处于第一个字符之前,使用 a 进入时光标处于第一个字符之后,使用 o 进入时光标处于第一行之后空白行的行首。
[插入模式]切换至[正常模式]:目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
[正常模式]切换至[末行模式]:「shift + ;」, 其实就是输入「:」
退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:
: w (保存当前文件)
: wq (输入「wq」,存盘并退出vim)
: q! (输入q!,不存盘强制退出vim)
从其他模式切换到命令模式只需要按[Esc]键即可,只是有的只需要按一次,有的需要按多次,总之无脑[Esc]总是可以回到命令模式的。
在命令模式下,我们所输入任何内容都将被视为指令,这也就是为什么当我们刚进入到vim时按很多按键都没有作用。但当我们按下 “ i ”进入到插入模式时就可以任意输入了。如何分辨命令模式和插入模式呢?
这里演示一遍如何使用vim(进入,编写并退出):
可以再使用cat对文件内容进行显示:
前面已经提到vim并不是集成开发环境,它只是一个编辑器,所以代码的编译要借助其他工具,这个后面会讲。
vim正常模式的命令集
插入模式
按「i」切换进入插入模式「insert mode」,
按“i”进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
从插入模式切换为命令模式
无脑按「ESC」键。
移动光标
vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、 「l」,分别控制光标左、下、上、右移一格
按「G」:移动到文章的最后
按「 $ 」:移动到光标所在行的“行尾”
按「^」:移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l
按[gg]:进入到文本开始
按[shift+g]:进入文本末端 按「ctrl」+「b」:屏幕往“后”移动一页
按「ctrl」+「f」:屏幕往“前”移动一页
按「ctrl」+「u」:屏幕往“后”移动半页
按「ctrl」+「d」:屏幕往“前”移动半页
拓展
可能有人会好奇,vim为什么要抽风的使用“hjkl”来表示左下上右。因为在早期的键盘里,是没有上下左右键的,“hjkl”是离手指最近的键,按起来比较方便,虽然现代的键盘早已加入了上下左右键,但vim仍让保留了这一操作。
删除文字
「x」:每按一次,删除光标所在位置的一个字符
「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
「dd」:删除光标所在行
「#dd」:从光标所在行开始删除#行
文本复制
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
替换
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
撤销上一次操作
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
「ctrl + r」: 撤销的恢复
更改
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字
跳至指定的行
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
vim底行模式的操作
上述操作全部都是在命令模式下进行的,除了命令模式,我们常用的还有插入模式和底行模式,而插入模式基本没有什么快捷操作,所以下面我们最后来学习一些底行模式的基本操作:
set nu – 设置行号 (set nonu:取消行号);
vs – 分屏 (注意:无论我们分几个屏,光标只有一个,它代表我们正在对哪个屏幕进行操作);
ctrl + ww – 切换光标到不同屏幕 (注:此指令在命令模式下执行);
wq – 报存退出,w 代表保存,q 代表退出,二者可以分开单独执行;
wq! – 强制保存并强制退出,w! 代表强制保存,q! 代表强制退出,二者可以分开单独执行;
%s/mark1/mark2/g – 将文本中所有的 mark1 替换为 mark2 (s 代表替换,g 代表全局);
!指令 – 在不退出 vim 的情况下执行Linux中的各种指令;
注:上面的这些指令除了 ctrl + ww 之外,其余指令执行的前提都是当前处于底行模式下,即它们前面都需要先输入一个" : "号;
vim配置
文章前面有提到vim十一款多功能的强大的编辑器,具有语法加亮,可视化操作等功能,但是在前面的使用中,vim似乎只是一个单纯的记事本,这是因为我还没有配置vim。
当我还是root用户时,在目录/etc/下可以找到一个“.vimrc”的文件,这是公共的vim配置文件,对所有用户都有效:
使用vim进入到这个配置文件可以看到系统默认给我们配置了一部分功能,但并不全面:
注意:
每个用户都可以在自己的家目录下创建自己的vim配置文件,命名为:“ .vimrc ”这个配置文件只会影响之际的vim,这就是为什么在一个Linux服务器上虽然大家用的是同一个vim,但是却可以有不同的配置。
简单的vim配置
Linux是多用户系统,为了不影响其他用户的使用,所以我在自己的普通账户上配置vim:
关于vim配置的命令,我们可以直接去网上查询:
这样配置太耗费时间了,这里给大家提供一个一键配置vim的方案。
一键配置vim
进入到gitee搜索开源:vimforcpp
进入到这个项目后在安装方法中找到链接,然后把链接复制到xshell中即可,它会自动配置:
下载链接curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
注意:要在当前用户的家目录下才可以配置,并且为了向特定的目录中写入文件,在执行该命令前需要输入root的密码。在自动配置成功后需要手动执行 “source ~/.bashrc” 或者重启终端, 使 vim 配置生效。
配置好vim后再进入就可以看到明显的区别,比如会自动补齐符号等:
当然这个配置文件也是可以更改的,如果以后你觉得这个配置文件不合你心意你要更改或者你需要加入新的配置,可以再次更改。这里我发现默认缩进是两个空格,但是我习惯了四个空格,于是我决定更改:
1.用vim打开“ .vimrc ”文件
2.shift + “ :”进入底行模式输入“ \2 "
3.找到tab并修改(要进入到插入模式才能修改)
配置sudo权限
前面有提到过普通用户在需要使用sudo提权时可能会报错,报错的原因就是因为该用户并不是系统所信任的用户,那么现在就来解决这个历史遗留问题:
1.首先切换到root用户
2.使用vim打开目录”/etc/sudoers“(各位一定存在这个文件,如果不存在就是各位打错了)
最开始的时候这里只有一个root,这也正是能证明你的其他普通用户并不再系统的信任列表中
3.将光标放在root那一行并按下”yyp“就可以对当前行进行复制,再进入到插入模式更改用户名
注意:这个文件即使我们是root用户在更改时也会给我们报警告,我们只需要先在底行模式下输入”w!“(强制写入)再接着在底行模式下输入”q!“(强制退出)。
配置好sudo以后,即使切换到普通用户也可以当root使用: