一、yum

CentOS/RHEL 系列使用 yum(RHEL 8+ 已逐步过渡到 dnf),Ubuntu/Debian 系列使用 apt。本文以 lrzsz(文件传输工具)为例。

1. 查看软件包

# CentOS / RHEL
yum list | grep lrzsz
# 输出示例:lrzsz.x86_64    0.12.20-36.el7    @base

# Ubuntu / Debian
apt search lrzsz
apt show lrzsz   # 查看详细信息

命名规范详解
以 lrzsz.x86_64 0.12.20-36.el7 @base 为例:

  • x86_64 → 64位系统包,i686 为32位

  • el7 → 适用于 CentOS 7 / RHEL 7(el6 则对应版本6)

  • @base → 软件源名称,类似“应用商店”标识

2. 安装软件

# CentOS
sudo yum install -y lrzsz

# Ubuntu
sudo apt install -y lrzsz

关键注意事项

  • 必须使用 sudo 或 root 权限(向系统目录写入内容)

  • 一次只能运行一个 yum/apt 任务,不能并发安装

  • 确保网络畅通:可以通过ping www.baidu.com验证

  • 出现 complete 或无报错即成功

3. 卸载软件

# CentOS
sudo yum remove [-y] lrzsz

# Ubuntu
sudo apt remove [-y] lrzsz   # 保留配置文件
sudo apt purge [-y] lrzsz    # 彻底删除(含配置)

4. 软件源(Repository)管理

软件源决定了你从哪个服务器下载包,类似手机的应用商店。

系统标准源路径扩展源路径
CentOS/etc/yum.repos.d/(如 CentOS-Base.repoepel.repo(需安装 epel-release
Ubuntu/etc/apt/sources.list/etc/apt/sources.list.d/

安装扩展源示例(CentOS):

sudo yum install -y epel-release

云服务器通常已配置国内镜像源,无需手动调整。虚拟机用户建议更换为阿里云、清华源以提升速度。

二、vim

1. 三种核心模式

模式说明进入方式
正常模式(Normal)控制光标、删除、复制、粘贴启动 Vim 后默认
插入模式(Insert)编辑文本,输入内容按 i / a / o
末行模式(Last Line)保存、退出、查找、设置行号在正常模式按 :

💡 Vim 共有 12 种模式(:help vim-modes),但掌握以上三种即可覆盖日常操作。


2. 常用操作速查表(基于正常模式)

光标移动(推荐使用字母键)
按键功能
h/j/k/l左/下/上/右
gg文件首行
G文件末行
^ / $行首 / 行尾
w / b下一个单词开头 / 上一个单词开头
e下一个单词尾部
翻页与滚动
按键功能
Ctrl+f向前翻一页
Ctrl+b向后翻一页
Ctrl+u向上滚动半页
Ctrl+d向下滚动半页

💡 Ctrl+u 和 Ctrl+d 比 Ctrl+f / Ctrl+b 更精细,适合在不离开当前视线范围的情况下快速浏览上下文。

删除、复制、粘贴
按键功能
x删除光标后一个字符
X删除光标前一个字符
dd删除整行,或剪切当行
yy复制整行
p粘贴
u撤销
Ctrl+r恢复撤销
按键功能
#(上方)搜索光标所在的单词,并将光标移动到上一个匹配处

💡 对应的正向搜索是 *(向 / 下方搜索)。# 和 * 都不会改变文件内容,只用于快速定位。

n 在 Vim 中用于重复上一次搜索动作,方向与上次搜索相同。# 和 n 配合可以实现高效的单词浏览:

操作序列功能
#从光标位置向前(上方)搜索当前单词,跳转到上一个匹配处
n继续向前搜索,跳转到更前一个匹配处(重复 # 的方向)
N反向重复上一次搜索,即向后搜索(与 # 方向相反)

🎯 实战技巧:先用 # 跳到上一个匹配,然后连续按 n 可以一路向上浏览所有匹配。如果想向下浏览,可以先按 * 再按 n

替换操作
按键功能
r替换光标所在的单个字符
R进入替换模式,连续替换字符,直到按 Esc 退出

💡 R 相当于一种“覆盖式输入”,适合局部内容精确修改,比先删除再插入更高效。

进入插入模式的不同方式
按键说明
i光标前插入
a光标后插入
o下一行插入
O上一行插入

3. n + 标识符 组合操作(高效重复执行)

Vim 中很多命令前可以加数字 n,表示重复执行 n 次。

组合功能
5j光标向下移动 5 行
3w向右跳 3 个单词
7x删除光标后 7 个字符
4X删除光标前 4 个字符
2dd删除 2 行
3yy复制 3 行
5r-将光标后 5 个字符依次替换为 -
2Rabc进入替换模式,替换 2 个字符为 abc 会继续替换后续)
4Ctrl+d向下滚动 4 次半页(注意:该组合部分终端需按 4 次 Ctrl+d 或依靠 Vim 映射)

⚠️ n + 操作符 是 Vim 高效操作的核心之一,体现了“动词 + 数字 + 名词”的编辑语言思想。


4. 末行模式实用命令

4.1 基本操作
命令作用
:w保存文件
:q退出
:wq / :x保存并退出
:q!强制退出(不保存)
:set nu显示行号
:15跳转到第15行
4.2 查找与替换
命令作用
/keyword向下搜索关键词
?keyword向上搜索关键词
:noh取消高亮
:%s/old/new/g全文替换所有 old 为 new
:%s/old/new/gc全文替换,每次确认

🔍 / 和 ? 的区别:前者向下搜索,后者向上搜索,配合 n / N 可继续查找。

% 符号详解

% 在末行模式中表示 整个文件范围,常用于全局替换或全局操作。

命令说明
:%s/foo/bar/g将全文中所有 foo 替换为 bar
:%y复制整个文件内容
:%d删除整个文件内容
:%!sort将整个文件内容传递给外部命令 sort 排序

💡 % 相当于 1,$ 的简写,表示从第一行到最后一行。例如 :1,$s/foo/bar/g 等价于 :%s/foo/bar/g

4.3 多文件与分屏操作
命令作用
:e filename在当前窗口打开另一个文件
:sp filename水平分屏并打开文件(可省略文件名)
:vs filename垂直分屏并打开文件(可省略文件名)
Ctrl+w w在分屏之间切换光标
Ctrl+w h/j/k/l向左/下/上/右切换分屏
Ctrl+w q关闭当前分屏
:q关闭当前分屏(同上)

💡 :vs 是 :vsplit 的简写,:sp 是 :split 的简写。分屏后可以同时查看或编辑多个文件,极大提升效率。

分屏示例流程

vim file1.c
:vs file2.c      " 垂直分屏打开 file2.c
:sp file3.c      " 水平分屏打开 file3.c(在左侧或当前分屏中)
Ctrl+w w         " 切换到下一个分屏
Ctrl+w h         " 切换到左侧分屏
:q               " 关闭当前分屏

三、gcc/g++

1. GCC 编译四步骤

GCC 编译过程分为四个阶段,每一步都可以通过选项显式控制:

阶段命令示例说明
预处理gcc -E hello.c -o hello.i宏展开、头文件包含、条件编译、去注释
编译gcc -S hello.i -o hello.s生成汇编代码,检查语法错误
汇编gcc -c hello.s -o hello.o生成机器可识别的目标文件
链接gcc hello.o -o hello链接库与目标文件,生成可执行程序

💡 小提示:-o 指定输出文件;.i.s.o 分别是预处理、汇编、目标文件的常见后缀。

2. 静态链接 vs 动态链接

类型特点优点缺点
静态链接将所有依赖代码复制到最终程序独立运行,启动快文件大,更新需重新编译
动态链接运行时加载共享库(如 .so节省磁盘和内存,更新方便依赖系统存在对应库

📦 示例:多个程序调用 printf(),静态链接会各自包含一份 printf.o,动态链接则共享同一份库。

3. 静态库与动态库

  • 静态库.a):编译时嵌入程序,文件大,独立运行。

  • 动态库.so):运行时加载,文件小,需确保环境有对应库。

🪟 Windows 下为 .dll(动态)和 .lib(静态)。

4. 常用 GCC 选项一览

选项作用
-E仅预处理
-S生成汇编代码
-c生成目标文件(不链接)
-o指定输出文件
-static强制静态链接
-shared生成动态库
-g加入调试信息(GDB 用)
-O0 ~ -O3优化级别(-Os 优化大小)
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐