一、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.repo epel.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 等多样性计算架构

更多推荐