Linux的软件生态
在 手机 ipad 笔记本等等我们使用的产品当中,会有应用商店等等可以下载软件的 软件包管理器,当我们想要下载某一款软件的时候,就去这个应用商店当中搜索,或者是去寻找,找到之后,进行下载,安装;但是我们下载是在通过我们使用的这个应用商店的官方,维护的一个服务器当中进行下载的。
这个服务器当中会提前准备很多的软件,比如:抖音,bilibili等等软件。那么我们通过在手机当中的 “应用商店” 这样的 APP 来进行下载 和 安装软件,这个 其实也是一个客户端。比如我们现在下载 bilibili 这个软件,其实这个 bilibili 并不在本地,而是在远端的,只是在手机 APP 上给你 拉取一个 软件列表,给你搜索,在真正需要装的时候,是需要通过网络,从服务器当中 下载 这个软件到你 的本地,然后你在进行安装。
那么在 应用商店 当中 软件肯定不都是 维护这个 应用商店的人写的,其他人(公司,个人组织,处于某种目的,或者活动给我们提供软件服务)写的软件要通过 提交到服务器上,然后通过 应用商店进行 上线这个APP。上线之后 客户才能搜到,在手机的 应用商店当中,内置了服务器,所以我们能在其中找到软件下载。
如果实在windows 当中,我们是要自己寻找下载位置的,比如我想下载 vscode ,那么一般是在网上找到 其官网,然后在官网当中下载安装包,然后进行安装。
当然,现在 笔记本提供商已经内置了和手机一样的应用商店,也可以像手机一样进行下载安装。
那么在Linux当中也就相当于是 应用商店。
那么在 LInux 当中的 yum 是谁来维护,谁来提供软件呢?
因为 LInux 是一个开源的操作系统,而且 LInux 的使用群体也不同!!! 在 Windows 当中我们所下载 游戏 等等这些娱乐项目,是提供给 小白用户的 ,这些在 LInux 当中都用不了,比如 lol,csgo 等等;但是在 LInux 当中的很多软件在 Windows 当中也是用不了的,因为 LInux 的用户一般是职业程序员。所以一般是客户需要什么,那么软甲的生产者,就生产什么。
LInux生态
开源不是圣母,开源是一种商业战略,这就导致不同的版本都有不同的生态。而生态好就是:
- 这个操作系统当中,获取的来源多,获取的来源官方;
- 这个操作系统的版本是否是一个足够稳定的版本,在行业内共识,他是一个比较好的软件;
- 这个操作系统是否有非常成熟,活跃的社区,这些社区当中有 很多问题,这些问题都被暴露出来,并且得到了解决;
- 其中的软件的开放文档,是否丰富;
- 这个操作系统的背后是否有非常多的软件生态,各种各样的软件的解决方案;
而站在 OS 的开发者 ,推动者,设计者,的角度,他们要解决的是 更好的和用户互动,积极地推动使得生态更加完整,就花钱搞服务区,推广,让更多的自己OS 写的程序员来写软件。
那么一直使用免费的操作系统的人,就会对这个操作系统产生依赖,因为他已经在这个操作系统的基础之上做出了一些成就,或者是成果,那么此时,不仅仅是 这个操作系统的 提供者 不愿意像看到这个操作系统 ,或者这个操作系统的社区夸掉,其中的用户也不希望这个操作系统或者是操作系统的社区垮掉。
有句话说的就是 : 免费的才是最贵的。
Linux 软件包管理器(yum)
在Linux 当中安装软件,一般情况是 有人写好了一段源代码,然后再 Linux 当中进行编译,编译之后得到了 可执行文件,这个可执行文件就是我们可以使用的软件了。
上述方法会出现一些问题,比如,某人写的源代码,用到了别人写的代码,或者是其他的 工具等等,那么其他人如果像使用它的 源代码 编译出 可执行文件的话,就必须把对应的 代码 或者是其他 东西 下载下来,然后经过一些操作,才能编译出 可以用的可执行文件。
而且像上述一样实现太麻烦了,所以有人就直接把 一些 编译好的可执行文件(软件)做成了 软件包(这里的软件包可以理解为 Windows 当中的 安装程序)放在一个服务器上,这就是在线的软件包。然后我们通过 软件包管理器 就可以很方便的获取到这个已经编译好的软件包,就直接可以进行安装。
这里的软件包和 软件包管理器 就好比手机当中的 " APP " 和 " 应用商店 "这样的关系。
而 yum 就是一种 软件包管理器,是在 Linux 当中常用的一种软件包管理器,主要是在 Fedora, RedHat,Centos等发行版本上应用。
yum,可以帮我们解决,安装源的问题,安装版本,安装依赖。这些问题。
需要注意的是,yum只有 root 用户才能使用,普通用户是不能使用的,除非是 Linux 信任的白名单用户可以使用 sudo + 命令 来强制执行 这个命令。
在 Linux 当中安装rzsz 软件
在windows 当中,如果我们使用 云服务器来使用 Linux 系统的话,那么我们就会使用 Xshell 这个软件,而 rzsz 这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。
安装完毕之后可以通过拖拽的方式将文件上传过去。
使用 如下 命令可以查看当前 Linux 操作系统下 安装了多少 软件,他可以把所有的都列举出来:
yum list
但是一般软件都比较多,所有都列举出来我们不好找,所以我们使用 如下 命令来结合 " | " 管道来查看某一个 软件是否安装:
yum list | grep 软件名
yum就是 一个应用商店,那么他是如何找到 对应软件的 在哪儿呢?
我们一般在手机当中的应用市场下载软件的时候,他是应用商场当中内置了这个软件的下载链接。
在Linux当中这个下载链接就存储在一下路径当中:
/etc/yum.repos.d/
目录当中有 CentOS-Base.repo 的这个文件,而且我们之前在安装 lrzsz 的时候,后面就有 @base 这个文件属性,这就表示这个软件的下载是来自哪里的,如上,就是来自 Base的,当我们进入这个 CentOS-Base.repo 文件之后,就可以看到下载链接了:
这些都是下载链接。
而使用 yum ,他就可以自动的在这些链接当中去寻找这个软件,然后下载安装。这些链接我们也是可以手动打开的。
那么在上述 CentOS-Base.repo 这个文件当中可以下载的软件都是 认可的 yum源,那么肯定也有不被官方认可的 yum源,也就是应用市场当中没有的。也就是说,有准官方,和非官方的 yum源(扩展源)。
比如现在我们安装 epel 这个扩展源:
yum install -yepel -release
其中有些一些比较好玩的 软件: cowsay sl 。
可以使用 yum remove 来卸载一个软件。
而一般的Linux操作系统,默认安装的都是国外的 yum 源,可能访问的时候比较慢,可能需要更新yum源-- 替换 yun 源文件。而云服务器,一般是已经替换为国内的yum源了。
Linux 编译器 - vim
vim 他是一个 编辑器,用于文本的编写,我们一般用于写代码。
vim 是一个 多模式的 编辑器:命令模式,插入模式,底行模式等等
也就是说,当我们用vim 打开一个 文件进行编辑的时候,它有多种模式对这个文件进行 编辑:
如上图,我们vim 这个 text.c 文件,然后就会进入如下界面:
这时候,我们敲键盘,像写代码的话是没有什么反应的,因为 vim 进入 文件的话默认是 命令模式。
在命令模式当中,用户所有的输入都被当做是 命令,一般不会作为文本输入。
所以,如果我们想要在 vim 当中对文件 ,写代码,那么就要进入插入模式,我们按下 i ,就可以进入插入模式:
此时左下角变成 如上图所示,表示是 插入模式。这时候我们就可以 以文本方式输入了:
那么如果我们想要退出这个插入模式,只需要无脑按下 esc 就行了,就会退回到 命令模式:
此时左下角不做显示了。
如果我们想退出这个vim 编辑器,那么需要从 命令模式 进入 底行模式。
在命令模式下,按下 shift + : 就可以进入底行模式,此时在底部显示如下图所示:
我们输入 wq 就可以退出这个 vim 编辑器。这里的 w 表示的意思是 保存的意思,q 代表的是 退出vim的意思。
此时查看 text.c 文件;
那么由底行模式退回到 命令模式,还是无脑 esc。
注意:我们一般在操作 vim 退出的时候,还是使用 上述 底行模式 输入 wq 的方式退出,如果使用 一些快捷方式来退出的话可能会出现一些问题,比如 一些快捷方式退出的话,不会结束掉 vim编辑器,时间久之后,可能会开 上百个 vim 从而导致 服务器挂掉。所以我们,一般建议用 底行模式 输入 wq 的方式来退出 vim。
插入模式 和 底行模式之间 只能通过 命名模式来转换。
在退出文件时候,如果出现下述错误:
错误原因:
- 当前用户没有对这个文件进行修改的权限。
- 该文件没有正常的保存退出,如果这个文件处于正在打开的状态,那么我们再次用vim进入这个文件,就报错。
- 如果这个文件都正常关闭,提示有人没有正常关闭,则删除这个文件的临时文件就可以,继续打开进行操作。
此处参考引用博客;(2条消息) Linux修改文件出现错误E45:“readonly” option is set(add ! to override)退出不了vim_e45 readonly_jgm20475的博客-CSDN博客
vim 当中底行一些模式命令
如果我们在用 vim 创建一个文件并写入的时候,没有对这个文件进行保存,那么这个文件不会创建在 路径下。因为 vim 它默认不会创建文件,只有当你 在底行模式下,输入 w 保存之后,才会创建。
在底行模式当中输入 ,
vs 文件名
可以进行多个文件同时用vim 来编辑,进行分屏操作;那么光标所在哪一个屏当中,就是对哪一个文件进行操作,我们可以使用 ctrl + ww 来进行换屏操作!!
在 vim 编辑的 text.c,文件同时,用vim编辑 text1.c 文件 :
此时就可以分屏:
使用 ctrl + ww 来切屏;
!:表示强制的意思,w!就是强制保存;q!就是强制退出;wq!就是强制保存并退出。
!+ 命令:可以在命令行当中直接执行这些命令。如:! ls,在不退出vim的情况下,浏览当前目录下文件。同样,gcc xxxxx ./a.out 就可以直接编译这个源文件,并执行对应的可执行文件,同时不会退出vim。
如下例子,直接用 gcc 编译器 编译这个 text.c 源文件。(需要注意的是,执行之前,需要保存执行源文件)
执行可执行文件:
输出:
set nu:调出 文本行的行号;输入之后 效果如下:
set nonu:删除 文本行的行号;输入之后 效果如下:
vim 命令模式当中的命令
在 vim 当中有如下的命令:
gg:把光标定位到 整个文本行的第一行;
G(shift + g 或者是 使用 Caps 大写锁定):把光标定位到 整个文本行的最后一行;
nG: 先输入一个数字,然后 输入 G,就可以移动到这个文本当中的 第n行。如下我们移动到第5行。
yy:复制光标所在行;
p: 把复制的内容粘贴到光标的下一行:
(n)p :在光标所在行的下一行粘贴n个复制的内容;如下复制了1000行 printf("hello world");
(n)yy:复制光标所在行开始的 n 行内容。如下述输入 2 yy p :
u:表示撤销,同 windows 当中 ctrl + z。
ctrl + r : 反撤销,相当于 撤销撤销,同 windows 当中的 ctrl + z。
(n)dd:剪切光标所在的行开始的n行。或者说是删除,也为剪切也就同时把这一n行所删除了。
$:定位到光标所在行 的最右侧(结尾);
^:定位到光标所在行 的最左侧(开头),需要注意的是由字符的最左侧:
w:按照单词为单位向后移动;
b:按照单词为单位向前移动;
我们可以使用 上下左右 方向键来进行一个字符一个字符的移动,同时为了方便,还有 对应 h j k l的方式来移动,分别对应的是 做 下 上 右。
shift(按住不动)+ ~ :可以从光标开始,按一次 “ ~ ” 就往后 修改一个字符大小写,如果这个字符是大写的,就改成小写的;如果这个字符是大写的,就把这个字符改成小写的;
(n)r + 字符:把光标所在字符开始之后的n个字符,修改为 r 之后跟这个的那个字符;如下我们输入 4 r x :
R:从光标开始的字符,往后我们输入的字符都会替代原本的字符;当我们按下 R 之后,在屏幕的左下角就会出现 一下字样:
如果需要退出 R 的界面可以 按下 esc。下面例子是修改当中的输入:
如上述当中 R 也属于 vim 当中一种模式,如果需要退出可以无脑 esc。
(n) x:向右删除一(n)个字符;相当于 windows 当中的 delete。
按「e」:光标跳到下个字的字尾;
按「#l」:光标移到该行的第#个位置,如:5l,56l;
按「ctrl」+「f」:屏幕往“前”移动一页;
按「ctrl」+「u」:屏幕往“后”移动半页;
按「ctrl」+「d」:屏幕往“前”移动半页;
vim的 插入模式的命令
按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字;
vim的配置
默认的 vim 都是裸的vim,没有经过配置,不太好用。我们可以配置我们的 vim 从而 让 vim 更加好用。
配置 vim 需要在 家目录(/home)下 ,创建一个 隐藏文件 (vimrc):
我们想要配置的配置项,就是在 .vimrc 当中写的。
如上,使用 vim 在其中写入 底行模式 当中的命令,输入如下内容:
此后我们再使用 vim 编辑其他文件的时候,就有行号显示了。上述的 " : " 可以不写。
具体的其他配置功能可以看如下资源:
Vim 配置入门 - 阮一峰的网络日志 (ruanyifeng.com)
那么上述每一个在自己 home 下配置的 vim 只会影响自己的 vim。不会互相影响。
不建议给root 用户做 vim 的配置,他的配置目录在 如下 路径:
/etc/vimrc
傻瓜式一键安装:
他不是 隐藏文件。
VimForCpp: 快速将vim打造成c++ IDEhttps://gitee.com/HGtz2222/VimForCpp
或者 复制下面链接,在LInux 当中直接执行:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
最后注意:
Xshell 当中可以这样修改主题: