目录
1.1什么是软件包
在Linux下安装软件,通常是下载到程序的源代码,并进行编译,得到可执行程序。
但是这个方式也太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包,放在一个服务器上,通过包管理器可以和方便的获取到这个编译行的软件包,直接进行安装软件包和软件包管理器相当于"APP"和"应用商店"的关系。
如:
yum(Yellow dog Updater, Modified)是Linux下⾮常常⽤的⼀种包管理器. 主要应⽤在Fedora,
RedHat, Centos等发⾏版上.
Ubuntu:主要使⽤apt(Advanced Package Tool)作为其包管理器。apt同样提供了⾃动解决依
赖关系、下载和安装软件包的功能。
Linux下如何进行软件安装,查找,卸载?
安装方式:
①源码安装(不推荐);
②rpm安装方式。
安装包本质:就是把源代码在Windows下编译好,然后打包(本质:拷贝到Windows下)。
在我们的Windows主界面右键一个应用查看其文件地址:

在我的电脑微信的地址是:"C:\Users\Public\Desktop\微信.lnk"
在文件资源管理器搜索粘贴地址回车有: 
此时双击就能打开微信:

这就相当于安装时打了一个包,安装时拷贝到该路径下就行。
在Linux下安装,往往喜欢把软件打包成rpm方式,这种做法可以解决一些问题,但这个方法还有不足。 软件时存在依赖关系的!如:我要装A就需要先安装B,而安装B之前还需要我安装C,即C->B->A(套壳软件)。
在Linux下也有这种情况,如:

也就是说虽然我们编译好了,但还是依赖库的:

而这个libc.so.6是C语言标准库,这个libc.so.6也是一个文件,可以通过ls /lib64/libc.so.6看到。若系统未安装这个库,a.out这个文件是无法运行的。
此时我们就可以通过第三种方式来安装了:
③yum/apt,工具级别安装( 软件给你自己解决依赖关系)
什么是yum/apt?
yum/apt等同于手机上的应用商店。
我们之前安装类似file指令还有tree指令都可以通过yum/apt来安装!
1.2Linux软件的生态问题
Linux上的软件,也一定是开发者或者公司开发的,Linux是开源的,这些Linux的开发者,凭什么给我们开发软件,给我们用?
我们每个人是Linux操作系统编写者,我们的目的是让更多人用,任何一个人评估操作系统的好坏不都是看生态,也就是说,你写的操作系统,想让更多人用,不仅仅要写操作系统,还要维护论坛社区,官方文档,你还要自发的开始给Linux系统开发大量的上层应用,即要关心对应的生态问题。根本原因: 这些软件属于Linux生态的一部分!
开发者开发的源代码支持跨平台(即一个软件可在Ubuntu,CentOS,苹果等多个操作系统上用)。

这个图能证明:我们下载的软件是在远端的。

软件包依赖的问题:


1.3apt具体操作
1.3.1查看软件包
我们可以通过用:
bash
apt list
来查看软件包,但是太多了,会刷屏:

此时需要我们用search来筛选我们需要的软件包,如我们需要lrzsz的就:
bash
apt search lrzsz

话可以:
bash
apt show lrzsz

注意:
①软件包名称: 主版本号.次版本号.源程序发⾏号-软件包的发⾏号.主机平台.cpu架构;
②x86_64" 后缀表⽰64位系统的安装包, "i686" 后缀表⽰32位系统安装包. 选择包时要和系统匹配.
③"el7" 表⽰操作系统发⾏版的版本. "el7" 表⽰的是 centos7/redhat7. "el6" 表⽰ centos6/redhat6.
1.3.2安装软件
通过apt我们可以通过一条很简单的命令来完成gcc的安装:
bash
sudo apt install -y gcc

需要注意的是:安装软件,要以超级用户的身份进行安装,在普通用户下安装需要用sudo来提高权限!

这句话代表gcc已安装且为最新版本!
如果想要看安装的东西在哪个目录下直接:

1.3.3卸载软件
我如果想要卸载lrzsz那么就:
bash
sudo apt remove -y lrzsz

1.4安装源
在Ubuntu下用该指令查看:
bash
cat /etc/apt/sources.list # 标准源
bash
ll /etc/apt/sources.list.d/ # 扩展源
在CentOS下用该指令查看:
bash
$ ll /etc/yum.repos.d/
total 16
-rw-r--r-- 1 root root 676 Oct 8 20:47 CentOS-Base.repo # 标准源
-rw-r--r-- 1 root root 230 Aug 27 10:31 epel.repo # 扩展源
安装扩展源:
bash
sudo yum install -y epel-release
更新安装源,在 虚拟机上可能需要,云服务器不⽤考虑,因为软件源都是国内的了。
好玩的命令:https://blog.csdn.net/xiaoxiaosutang/article/details/141053674
云服务器使用的镜像源不用更新,都是从你买的镜像自动更新的!如果想要自己更新,可以先问一下大模型要最新的镜像源,然后复制自己想要的文件链接,再sudo curl -o 你复制的链接即可。
2.编辑器vim
vi/vim键盘图

2.1Linux编辑器-vim的使用
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以运⾏于x window、 mac os、 windows。
2.2vim的基本概念
vim只有一个功能:编写代码,即编辑器(相当于Windows下的记事本),但是它是一个多模式的编辑器,平时我们只要知道下面三种模式就可以了!
①正常/普通/命令模式(Normal mode)。

在vim code.c后回车就会进入到这个模式:
下面为:
在命令模式下,我们可以控制屏幕光标的移动,字符、字或⾏的删除,移动复制某区段及进⼊Insert mode下,或者到 last line mode(后面两种模式)。
此时我们在这里可以进行任意的光标移动等:

②插⼊模式(Insert mode)
只有在Insert mode下,才可以做⽂字输⼊,按「ESC」键可回到命令⾏模式。该模式是我们后⾯⽤ 的最频繁的编辑模式。
一般情况下我们需要输入i才能进入INSERT模式,但是虚拟机只要你输入的是字母都可以进,界面最后一行如下:

此时我们就可以随便的进行插入数据。
③ 末⾏模式(last line mode)(也叫:底行模式)
⽂件保存或退出,也可以进⾏⽂件替换,找字符串,列出⾏号等操作。
在命令模式下,*shift+:* 即可进⼊该模式。要查看你的所有模式:打开 vim,底⾏模式直接输⼊
:help vim-modes
末行模式能进行的操作最多,之后我们探讨的最多的就是末行模式!
2.3vim的基本操作
进⼊vim,在系统提⽰符号输⼊vim及⽂件名称后,就进⼊vim全屏幕编辑画⾯:

此时我们就进入了vim的编辑界面,这个时候是处于正常模式下的,如果想进入插入模式,需要切换到插入模式才能进行编辑。
【正常模式】切换到【插入模式】:
输入a/i/o都能进入插入模式,此时界面为:

最好的判断方法是看到最后一行有INSERT就行。
此时我们就可以通过键盘随便输入到文件里面了!
此时有些人编写完代码可能直接把Xshell关闭了,你这样做之后重新vim code.c会出现:

这个提示是 Vim 编辑器的一个 安全保护机制 ,它发现了一个"幽灵交换文件"( .code.c.swp), 不是报错 ,而是向你确认下一步该怎么处理。先别慌,我帮你读懂它在说什么,以及 为什么会出现这个提示:
当你用 vim 编辑 code.c 时,Vim 会自动在同目录下创建一个隐藏的交换文件 .code.c.swp,用来临时保存你的修改,防止意外断电导致数据丢失。
出现这个提示,通常是因为:
-
上次编辑时 Vim 异常崩溃(比如 Xshell 突然断线,或你强行关闭了终端)。
-
或者你打开了两个终端窗口,同时用 Vim 编辑同一个文件。
提示信息的一行:
NEWER than swap file!
这句话的意思是:你现在磁盘上的 code.c 文件,比那个交换文件(.code.c.swp)还要新。
这说明,在你上次 Vi正文m 崩溃之后,你可能用其他方式修改过这个文件 (比如用 echo 重写,或者用 nano 编辑过)。现在的 code.c 已经是更新的版本了。
🏆 推荐做法:按 D (Delete it)
直接按键盘上的 D(大写)。
-
含义 :删除那个过时的交换文件
.code.c.swp。 -
结果 :Vim 会删除交换文件,然后直接打开你磁盘上最新的
code.c文件。这样既不会丢失新数据,以后也不会再弹出这个提示。
其他选项说明(供你参考)
| 按键 | 含义 | 后果 |
|---|---|---|
[0] |
以只读方式打开 | 只能看不能改,适合先检查内容。 |
E (Edit anyway) |
忽略警告,强行编辑 | 有风险。如果你强行编辑保存,可能会覆盖掉较新的文件内容。 |
R (Recover) |
恢复交换文件的内容 | 危险! 因为磁盘文件更新,选这个会用旧的交换文件覆盖你最新的 code.c,导致你最近的新修改丢失。千万别按! |
Q (Quit) |
退出 Vim | 什么都不做,退出后你可以手动 rm .code.c.swp 删除。 |
A (Abort) |
中止 | 类似退出。 |
想要退出INSERT模式,直接按键盘左上角的ESC即可退出到正常模式!
此时会提示:

如果编辑成这样:

此时就可以保存退出了,需要先Shift+;即按':'然后用wq保存退出。
此外,我们也可以用Shift+ZZ保存退出!
但是不要按成Ctrl+Z了,这样虽然可以退出,但是再vim code.c此时会有:

这次我们没有d选项可以按,要么就只能删除这个文件重新再写一遍代码,要么就读懂了这个选项E (Edit anyway)强行编辑, 如果两个 Vim 同时修改同一个文件,最终保存时会造成数据混乱,甚至导致文件内容损坏。 也不建议按 R(Recover) ,因为 modified: no 说明交换文件里没有未保存的数据,恢复没有意义。
因为这和上次不一样,上次是提示 modified: YES 且 NEWER than swap file!,说明是 Vim 异常崩溃留下的残留文件,交换文件比磁盘文件旧,可以安全删除。
这次是:提示 modified: no(交换文件没有修改)且 (STILL RUNNING)(进程还在运行)------这意味着 你很可能在另一个 Xshell 窗口(或终端标签页)中,正在用 Vim 编辑同一个 code.c 文件,那个 Vim 还没有关闭。
此时我们需要注意:
我们刚刚Ctrl+Z会提示: 
因为你用 Ctrl+Z 只是 挂起(暂停) 了 Vim,并没有关闭它。它现在正安静地待在后台,所以系统才会提示 process ID: 2307 (STILL RUNNING)。
所以正确的解决办法是在报错界面输入q退出,然后在命令行输入:
bash
fg
回车,就行:


Ctrl+Z(挂起):Vim 进程暂停,但还在内存里。用fg可以秒回,极其方便。
所以遇到问题就不要慌,找到自己出错的原因才能解决问题!
2.3.1在命令行对vim进行操作
如果我们想要光标在第一行,则可以:
bash
vim code.c +1
此时回车有:

在vim命令行时常用的操作就这一个。
2.3.2命令模式下对vim进行操作
命令模式下(从插入模式按ESC能进入)键盘的输入,默认被当做命令来看待,如果命令不存在,则这个命令被丢弃。
命令模式下我们可以完成快速的文本编辑!
命令模式下我们可以完成以下操作:
①进行光标的移动。
我们可以使用↑↓←→这四个方向键来移动光标,但是正规的vim应该用⼩写英⽂字⺟「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移⼀格。
如何理解hjkl分别时往左下上右呢?
h在26个字母的键盘分布hjkl的最左边,所以应该往左,同理,l在hjkl的最右边,应该往右,j可以理解为jump,向下跳,k可以理解为king,代表国王,应该向上。
②按Shift+g让光标跳到文章的最后。(即输入大写G)
③按Shift+4让光标到当前行结尾。(即输入$)
④按Shift+6让光标到当前行开头。(即输入^)
⑤按w光标跳到下个字的开头。(一个字与另外一个字用空格隔开或跳到(或跳到"后面这个解释太勉强了)(可跨行移动)
⑥按e光标跳到下个字的字尾。
⑦按b光标回到上个字的开头。
⑧按#l,光标跳到该行的第#个位置,如5l。
⑨按gg,回到文本开始的地方。
⑩按「ctrl」+「b」:屏幕往"后"移动⼀⻚ ,按「ctrl」+「f」:屏幕往"前"移动⼀⻚ ,按「ctrl」+「u」:屏幕往"后"移动半⻚ ,按「ctrl」+「d」:屏幕往"前"移动半⻚。
以下时删除文字:
①按x:每按一次,删除光标所在位置的一个字符。
②#x:删除光标所在位置包括自己以内的#个字符。
③X:每按一次,删除光标所在位置的"前面"一个字符。
④#X:删除光标所在位置不包括自己的#个字符。
⑤dd:删除光标所在行。
⑥#dd:从光标所在行开始删除#行。
⑦dd+p:剪切功能。
以下为复制:
①「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
② 「#yw」:复制#个字到缓冲区
③ 「yy」:复制光标所在⾏到缓冲区。
④ 「#yy」:例如,「6yy」表⽰拷⻉从光标所在的该⾏"往下数"6⾏⽂字。
⑤ 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须
与"p"配合才能完成复制与粘贴功能。
以下 为替换:
①「r」:替换光标所在处的字符。(若5r+a则会把光标及光标之后的四个字符替换成5个a)
②「R」:替换光标所到之处的字符,直到按下「ESC」键为⽌。(进入REPLACE模式(只有在命令模式下才能进入))
撤销上一次操作:
①「u」:如果您误执⾏⼀个命令,可以⻢上按下「u」,回到上⼀个操作。按多次"u"可以执⾏
多次回复。
②「ctrl + r」: 撤销的恢复(撤销上一步撤销的操作,相当于Windows下的Ctrl+Y)
更改 :
①「cw」:更改光标所在处的字到字尾处
②「c#w」:例如,「c3w」表⽰更改3个字
跳⾄指定的⾏ :
① 「ctrl」+「g」列出光标所在⾏的⾏号。
②「#G」:例如,「15G」,表⽰移动光标⾄⽂章的第15⾏ ⾸。
Shift+`(即~):大写变小写,小写变大写,迅速进行大小写切换(只针对英文字母)。
Shift+#:选中一个单词,再用n可以查找下一个(实现查的功能)
批量化注释:在命令模式下Ctrl+V,会进入VISUAL BLOCK模式(块视图模式),此时就可以用hjkl的方式移动光标进行区域选择。(此时可以先Shift+i到第一行,然后输入//再按ESC即可注释):

批量化去注释:在命令模式下Ctrl+V,进入VISUAL BLOCK模式,用hjkl选中区域,再输入d,则会删除所选区域的所有字符,如:

此时我选择了第1-6行,第1-2列,此时再输入d即可删除:

我们还能通过#h,#j,#k,#l来完成向左向下向上向下#个字符的操作!
从命令模式进入插入模式,如果我们输入a,此时光标相对命令模式往后了一格,输入o,会再光标下面新起一行。
如果想要强制退出,在底行模式下使用q!命令即可!
我们没必要全记住,这些命令用多了就知道如何使用了!
2.3.3底行模式下对vim进行操作
底行模式下能完成的操作还是比较多的,除了之前说的:wq是保存退出外,还可以在root下如果没有权限的情况下我们仍然可以进行保存退出操作。
步骤如下:
先在tan下把权限改为000:
bash
chmod 000 code.c

此时我们在root下进入/home/tan目录:

此时我们执行:
bash
vim code.c

虽然它最后一行提示我们:readonly,但是我们是root啊,有最高权限,可以无视规则修改:

此时我们用:wq退出试一下:

它说我们要带个!才能保存退出,我们输入wq!就能退出了。

底行模式下:wq!:强制保存退出。w! :强制保存。
此外,底行模式下还能进行很多操作,如:set nu/set number标行号:

set nonu:底行模式下去行号。

把vim内容替换,如把printf替换成std::cout,可以:
bash
s/printf/std::cout
它会把光标所在行第一个printf替换成std::cout

如果想要把光标所在的这一行的所有的l替换成i,用:
bash
s/l/i/g

如果想要替换该文件的所有o变为e,可以:
bash
%s/o/e/g

在底行执行/int会在文件中查找所有单词为int的地方(找到的第一个的行首):

若!ls -l有:

此时我们按任意按键就能回到vim界面!
此外还可以执行很多指令操作,也就是说底行模式可以在不退出vim的情况下执行命令操作。
2.3.4vim的其他操作

此时我们:
bash
vim hello.c
它会进入vim界面:

此时,我们用:wq退出vim模式,再ls -l有:

也就是说,vim一个不存在的文件会创建一个文件。
但是我们vim helle.c,然后用:q退出有:

也就是说我们只要不保存就不会生成文件(可以试着写一些代码,如果也用:q退出还是不存在,但是此时我们需要使用q!退出,否则不能退出)。
我们还可以先在底行模式下w!再q也能创建新文件:
此外,我们还可以在底行模式下vs一个不存在的文件hellr.c(也可以vs一个已存在的文件)有:
bash
:vs hellr.c

此时我们就可以分屏操作,如果想要移动光标按Ctrl+ww即可切换到另外一个界面。
此时我们用:q(不会创建文件)和:wq(会创建文件)就能退出。
2.4vim的简单配置
vim的配置最好在普通用户下进行,不要给root账号做配置。每次在启用vim之前会在当前用户的隐藏目录的.vimrc文件(用ls -la)就可以看到隐藏文件,vim时就会载入.vimrc的内容,然后呈现某种配置效果:

因为此时没有这个文件,我们需要touch一个:

vim的配置是在做什么?
vim的基本配置,就是在修改家目录下.vimrc的内容。(我配置好的vim不会影响其他人)
这个建议各位问AI大模型,以下是一个示例:
bash
" 基础设置
set number " 显示行号
syntax on " 开启语法高亮
set tabstop=4 " 制表符宽度为 4
set shiftwidth=4 " 自动缩进宽度为 4
set expandtab " 将 Tab 键转换为空格
set autoindent " 开启自动缩进
set mouse=a " 启用鼠标支持
" 搜索优化
set hlsearch " 高亮搜索结果
set incsearch " 边输入边搜索
set ignorecase " 搜索时忽略大小写
set smartcase " 如果搜索含大写则智能识别
" 界面优化
set cursorline " 高亮当前行
set laststatus=2 " 总是显示状态栏
set ruler " 显示光标位置
配置好后vim code.c就能看到:

如果各位想要配置更多,可以去网上搜索资料进行配置。