Linux软件管理与编辑器命令速查手册

📅 2026/7/7 5:23:35 👁️ 阅读次数 📝 编程学习
Linux软件管理与编辑器命令速查手册

版本:v1.0 |适用系统:CentOS/RHEL 系列 |最后更新:2026-07-01


📖 前言

在日常 Linux 运维与开发中,软件包管理、编译器使用、文本编辑、权限控制是高频操作。无论你是编译源码、安装 RPM 包、配置 YUM 仓库,还是用 VIM 快速修改配置、设置 ACL 权限,一套完备的速查手册都能帮你节省大量时间。

本手册完整收录了以下文档的所有原始内容(未做任何删减):

  • GCC 编译器基础用法
  • RPM 包管理(包名解析、依赖、安装/升级/查询/卸载/校验/提取)
  • YUM 在线管理(仓库配置、命令、软件组、光盘源搭建)
  • DNF 包管理器(新一代 YUM)
  • RPM 包安装后的典型目录结构
  • VIM 编辑器全面操作(三种模式、所有指令、高级技巧)
  • 权限管理扩展(ACL、特殊权限 SUID/SGID/SBIT、chattr、sudo)

在保留全部原始知识的基础上,我优化了格式、补充了参数说明、增加了实操示例,并采用目录分层、表格速查的方式,让你在工作中遇到问题能快速定位


📑 目录

  1. GCC 编译器
  2. RPM 包管理
    • 2.1 包名解析
    • 2.2 依赖性
    • 2.3 安装与升级
    • 2.4 查询操作
    • 2.5 卸载操作
    • 2.6 校验操作
    • 2.7 文件提取(rpm2cpio)
  3. YUM 在线管理
    • 3.1 YUM 仓库配置文件
    • 3.2 YUM 常用命令
    • 3.3 软件组管理
    • 3.4 光盘 YUM 源搭建
  4. DNF 包管理器
  5. RPM 包安装后的服务目录结构
  6. VIM 编辑器详解
    • 6.1 三种模式概览
    • 6.2 命令模式操作
    • 6.3 插入模式操作
    • 6.4 末行模式操作
    • 6.5 常用高级技巧
  7. 权限管理扩展
    • 7.1 ACL 权限
    • 7.2 特殊权限(SUID/SGID/SBIT)
    • 7.3 文件系统属性(chattr/lsattr)
    • 7.4 sudo 权限

一、GCC 编译器

GCC(GNU Compiler Collection)是一个强大的编译器套件,支持 C/C++、FORTRAN、Java、OBJC、ADA 等多种语言。

基本语法

gcc[参数1]源代码文件[参数2]

常用参数

参数作用
-c编译:只生成目标文件(.o文件),不进行链接
-o设置输出文件名或路径,如-o output生成可执行文件output

示例

# 编译源文件,生成目标文件gcc-chello.c# 生成 hello.o# 链接目标文件生成可执行文件gcc-ohello hello.o# 生成 hello# 一步完成编译+链接,指定输出gcc-ohello hello.c# 编译多个源文件gcc-oprogram main.c utils.c

💡补充:生产环境常用-Wall开启警告,-g包含调试信息,-O2优化级别等,但这些并非原文档内容,仅供参考。


二、RPM 包管理

RPM(Red Hat Package Manager)是 Linux 下最经典的软件包管理工具,适用于 CentOS/RHEL 系列。

2.1 包名解析

httpd-2.2.15-15.el6.centos.i686.rpm为例:

字段含义示例
软件包名软件名称httpd
版本号软件版本2.2.15
发行次数RPM 打包的发行号15
适用平台操作系统版本el6.centos(RHEL 6 / CentOS 6)
硬件平台架构i686(32位);x86_64(64位);noarch(通用)
扩展名固定为.rpm.rpm

操作规则

  • 操作未安装的包(安装、升级)使用包全名(带版本号及扩展名),注意路径,可利用Tab补全。
  • 操作已安装的包(查询、卸载)使用包名(仅软件名),信息来自/var/lib/rpm数据库。

2.2 依赖性

RPM 包之间存在依赖关系,常见类型有:

  • 树形依赖A → B → C(需按顺序安装 C → B → A)
  • 环形依赖A → B → C → A(可同时安装)
  • 模块依赖:缺少某些动态库(.so文件),需查询提供这些库的包。

🔍依赖查询网站:www.rpmfind.net

安装时若忽略依赖,可使用--nodeps参数(慎用)。

2.3 安装与升级

安装

rpm-ivh包全名
选项含义
-i安装(install)
-v显示详细信息(verbose)
-h显示安装进度(hash)
--nodeps不检测依赖性(强制安装)

示例

rpm-ivhhttpd-2.2.15-15.el6.centos.i686.rpmrpm-ivh--nodeps包全名# 忽略依赖

升级

rpm-Uvh包全名
选项含义
-U升级(upgrade),若未安装则安装

示例

rpm-Uvhhttpd-2.4.6-80.el6.x86_64.rpm

2.4 查询操作

命令含义
rpm -q 包名查询指定包是否安装
rpm -qa | grep 包名查询所有已安装的包并过滤
rpm -qi 包名查询已安装包的详细信息
rpm -qip 包全名查询未安装包的详细信息(-p指定包文件)
rpm -ql 包名查询已安装包安装的文件列表
rpm -qlp 包全名查询未安装包将安装的文件列表
rpm -qf 系统文件路径查询某个系统文件属于哪个 RPM 包
rpm -qR 包名查询已安装包的依赖关系
rpm -qRp 包全名查询未安装包的依赖关系

示例

rpm-qa|grephttpdrpm-qihttpdrpm-qlhttpdrpm-qf/etc/httpd/conf/httpd.conf

2.5 卸载操作

rpm-e包名
选项含义
-e卸载(erase)
--nodeps忽略依赖强制卸载

示例

rpm-ehttpdrpm-e--nodepshttpd# 强制卸载

2.6 校验操作

rpm-V包名

-V校验已安装包的文件是否被修改,输出结果每行格式为标志位和文件路径。

校验标志含义

标志含义
S文件大小(Size)改变
M文件权限或类型(Mode)改变
5MD5 校验和改变(内容被修改)
D设备号(Device)改变
L路径(Link)改变
U属主(User)改变
G属组(Group)改变
T修改时间(Time)改变

文件类型标记(出现在输出行第一列)

标记含义
c配置文件(config)
d普通文档(documentation)
g鬼文件(ghost,该文件不应被该包包含)
l授权文件(license)
r描述文件(README)

示例

rpm-Vhttpd

若无输出,表示文件未被修改;若有输出,则显示哪些属性变更。

2.7 文件提取(rpm2cpio)

当某个配置文件误删除或损坏,可以从 RPM 包中提取单个文件,而无需重装。

rpm2cpio 包全名|cpio-idv./文件绝对路径
  • rpm2cpio:将 RPM 包转换为 cpio 格式归档。
  • cpio -idv:提取(-i)、创建目录(-d)、显示过程(-v)。
  • 后面的路径为要提取的文件的绝对路径(相对于包内根目录)。

示例(提取 httpd 的配置文件):

rpm2cpio httpd-2.2.15-15.el6.centos.i686.rpm|cpio-idv./etc/httpd/conf/httpd.conf

执行后会在当前目录下生成./etc/httpd/conf/httpd.conf文件。


三、YUM 在线管理

YUM(Yellowdog Updater Modified)是基于 RPM 的包管理工具,可以自动解决依赖关系。

3.1 YUM 仓库配置文件

YUM 仓库配置文件位于/etc/yum.repos.d/,以.repo结尾。以CentOS-Base.repo为例,其字段含义如下:

[base] # 容器名称,必须放在[]中 name=CentOS-$releasever - Base # 容器说明,可自定义 mirrorlist=http://mirrorlist.centos.org/... # 镜像站点列表(可注释) baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ # YUM源服务器地址(可自定义) enabled=1 # 是否生效,1生效,0不生效(默认不写也是1) gpgcheck=1 # 是否启用GPG数字证书校验,1启用,0不启用 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 # 公钥文件位置

常用字段说明

字段说明
[仓库ID]唯一标识,如[base][epel]
name仓库描述信息
baseurlYUM 源的实际 URL(可以是file://http://ftp://
mirrorlist镜像列表 URL,与baseurl二选一
enabled是否启用本仓库
gpgcheck是否校验 GPG 签名
gpgkeyGPG 公钥文件地址

3.2 YUM 常用命令

以下命令均在yum后跟子命令(需确保/etc/yum.repos.d/下有有效仓库文件)。

查询操作

命令作用
yum list查询所有可用软件包(含已安装和未安装)
yum list installed查询已安装的包
yum list available查询未安装但可用的包
yum search 关键字搜索服务器上所有与关键字相关的包
yum info 包名查看软件包详细信息(相当于rpm -qi
yum provides 文件路径查找提供某文件的包(如yum provides /bin/bash

示例

yum list|grepnginx yum searchftpyum info httpd

安装操作

yum-yinstall包名
  • -y:自动回答 yes,适合脚本。
  • install:安装指定包。
  • 可同时安装多个包,空格分隔。
yum-yinstallhttpd mysql

升级操作

yum-yupdate 包名# 升级指定包yum-yupdate# 升级所有已安装包(谨慎)yum-yupgrade# 同 update,但更严格处理过时包

卸载操作

yum-yremove 包名# 卸载指定包(会移除其依赖,谨慎)

重新安装

yum reinstall 包名# 重新安装(可用于修复文件)

缓存管理

yum makecache# 生成元数据缓存(加速查询)yum clean all# 清除所有缓存

3.3 软件组管理

软件组是一组相关包的集合,适合安装某个大套件(如开发工具、图形桌面)。

命令作用
yum grouplist列出所有可用软件组列表
yum groupinstall "软件组名"安装指定软件组(组名含空格需加引号)
yum groupupdate "软件组名"升级软件组
yum groupremove "软件组名"卸载软件组

示例

yum grouplist yum groupinstall"Development Tools"yum groupremove"Development Tools"

3.4 光盘 YUM 源搭建

当网络不好时,可以使用系统安装光盘作为本地 YUM 源。

步骤

  1. 挂载光盘

    mount/dev/cdrom /mnt/cdrom

    (若/mnt/cdrom不存在,需先mkdir -p /mnt/cdrom

  2. 使网络 YUM 源失效(备份后移走)

    cd/etc/yum.repos.d/mvCentOS-Base.repo CentOS-Base.repo.bakmvCentOS-Debuginfo.repo CentOS-Debuginfo.repo.bakmvCentOS-Vault.repo CentOS-Vault.repo.bak
  3. 修改光盘 YUM 源配置文件CentOS-Media.repo

    viCentOS-Media.repo

    修改如下内容:

    [c7-media] name=CentOS-$releasever - Media baseurl=file:///mnt/cdrom # 指向挂载点 gpgcheck=0 # 0关闭校验(或设置1并指定gpgkey) enabled=1 # 1启用
  4. 验证

    yum clean all yum list

四、DNF 包管理器

DNF(Dandified YUM)是 YUM 的下一代版本,在 Fedora 22+ 及 RHEL/CentOS 8+ 中成为默认。在 CentOS 7 中可通过 EPEL 安装。

安装 DNF(CentOS 7)

yuminstallepel-release-yyuminstalldnf-y

DNF 常用命令对照(与 YUM 高度相似)

操作DNF 命令说明
查看版本dnf --version
列出软件库dnf repolist可用库
列出所有库(含禁用)dnf repolist all
列出所有 RPM 包dnf list
列出已安装包dnf list installed
列出可安装包dnf list available
搜索包dnf search nano
查找文件提供者dnf provides /bin/bash
查看包信息dnf info 包名
安装包dnf install 包名可加-y
升级包dnf update 包名也可用upgrade
检查更新dnf check-update
升级所有包dnf updatednf upgrade
删除包dnf remove 包名dnf erase 包名
自动删除孤立包dnf autoremove
清除缓存dnf clean all
查看命令帮助dnf help clean
查看所有命令dnf help
查看历史dnf history
软件包组列表dnf grouplist
安装软件包组dnf groupinstall '组名'
升级软件包组dnf groupupdate '组名'
删除软件包组dnf groupremove '组名'
从特定库安装dnf --enablerepo=epel install phpmyadmin
同步发行版dnf distro-sync更新到最新稳定版
回滚特定软件dnf downgrade acpid降级

📌 DNF 语法更规范,性能更好,推荐在新系统上使用。


五、RPM 包安装后的服务目录结构

RPM 安装的软件(特别是系统服务)通常遵循标准的目录布局,了解这些位置便于管理。

目录用途
/etc/init.d/启动脚本(SysV 风格)存放位置
/etc/sysconfig/服务初始化环境配置文件(如网络、SELinux 等)
/etc/服务主配置文件目录(如/etc/httpd/conf/
/etc/xinetd.confxinetd 的主配置文件
/etc/xinetd.d/基于 xinetd 服务的独立启动脚本
/var/lib/服务运行时产生的数据(如数据库文件)
/var/log/服务日志文件

示例

  • Apache HTTPD 配置在/etc/httpd/conf/httpd.conf,启动脚本/etc/init.d/httpd
  • MySQL 数据在/var/lib/mysql,日志在/var/log/mysqld.log

六、VIM 编辑器详解

VIM 是 Linux 下最强大的文本编辑器,掌握它可大幅提高工作效率。

6.1 三种模式概览

  • 命令模式(默认):按Esc进入,可移动光标、删除、复制、搜索等。
  • 插入模式:按i/a/o等进入,编辑文本,按Esc返回命令模式。
  • 末行模式:在命令模式下按:进入,可执行保存、退出、替换、设置等。

6.2 命令模式操作

光标移动

操作功能
gg跳转到文件第一行
G跳转到文件最后一行
nGngg跳转到第 n 行(如10G到第10行)
$移动到当前行行尾
0(数字零)移动到当前行行首

删除操作

操作功能
x删除光标所在处的字符
nx删除光标后 n 个字符(如5x
dd删除当前行
ndd删除 n 行(如5dd
dG删除从当前行到文件末尾
D删除从光标到行尾的内容

复制、剪切与粘贴

操作功能
yy复制当前行
nyy复制 n 行(如5yy
dd剪切当前行(也可用ndd剪切多行)
p(小写)粘贴到光标所在行的下一行
P(大写)粘贴到光标所在行的上一行

替换与撤销

操作功能
r替换光标处的字符(输入一个字符)
R进入替换模式,持续替换直至按Esc
u撤销上一步操作
.(点)重复上一次操作

搜索

操作功能
/字符串向下搜索指定字符串
?字符串向上搜索指定字符串
n跳转到下一个匹配项(按搜索方向)
N跳转到上一个匹配项

其他常用命令模式操作

操作功能
Ctrl + v进入可视块模式(可多列操作)
ZZ保存并退出(等同于:wq

6.3 插入模式(进入方式)

操作功能
a在光标所在字符插入
A在光标所在行行尾插入
i在光标所在字符插入
I在光标所在行行首插入
o在光标所在行下方新建一行并插入
O在光标所在行上方新建一行并插入

6.4 末行模式操作

在命令模式下按:进入,以下命令输入后按Enter执行。

行号与设置

命令功能
:set nu显示行号
:set nonu取消行号
:set ic搜索时忽略大小写(:set noic取消)
:n跳转到第 n 行(如:10

删除范围

命令功能
:n1,n2d删除从 n1 到 n2 的行

写入文件

命令功能
:w保存当前文件
:w 新文件名另存为新文件
:n1,n2 w 文件名将 n1 到 n2 行写入新文件

复制/移动行

命令功能
:n1,n2 co n3将 n1~n2 行复制到 n3 行下方(co 也可用 copy)
:n1,n2 m n3将 n1~n2 行移动到 n3 行下方(m 也可用 move)

替换

:[范围]s/旧字符串/新字符串/[选项]
范围说明
%全文
n1,n2从 n1 到 n2 行
选项说明
g全局替换(不询问)
c逐个确认(confirm)
只替换每行第一个匹配

示例

  • :%s/old/new/g—— 全文替换所有 old 为 new
  • :1,10s/^/#/g—— 在1~10行行首添加#(注释)
  • :s/foo/bar/—— 替换当前行第一个 foo

保存与退出

命令功能
:w保存
:wq:x保存并退出
:q!不保存强制退出
:wq!强制保存并退出(仅文件所有者或 root)

分屏显示

命令功能
:vs 文件名垂直分屏(vertical split)
:sp 文件名水平分屏(split)

执行外部命令

命令功能
:! 命令临时执行系统命令(如:! ls
:r ! 命令将命令的输出插入到当前行下方

6.5 常用高级技巧

查找命令路径并插入

:!which 命令# 查看命令路径:r!which 命令# 将路径插入到文件中

定义快捷键(映射)

在末行模式下定义临时快捷键:

:map<快捷键><触发命令>

例如,按Ctrl+P快速在行首插入#

:map ^P I#<Esc> # ^P 需用 Ctrl+V Ctrl+P 输入

^P表示 Ctrl+P,需按Ctrl+V再按Ctrl+P输入)

永久保存快捷键可写入~/.vimrc配置文件(不加冒号)。

连续行注释

使用替换命令在行首添加#

:起始行,终止行s/^/#/g

例如,注释第 5 到 20 行:

:5,20s/^/#/g

替换缩写(自动展开)

:ab a b# 输入 a 时自动替换为 b(可用于长单词缩写)

例如:ab mailroot /var/spool/mail/root

VIM 配置文件(~/.vimrc

常用设置(不加冒号):

set nu " 显示行号 set ic " 搜索忽略大小写 set expandtab " 用空格替代制表符 set shiftwidth=4 " 缩进宽度

写入后永久生效。


七、权限管理扩展

7.1 ACL 权限

ACL(Access Control List)可为单独的特定用户或组设置文件权限,而不仅限于所有者/组/其他人。

检查分区是否支持 ACL

dumpe2fs-h/dev/sda3# 查看超级块,检查 "Default mount options:" 是否包含 acl

若不支持,可临时挂载开启:

mount-oremount,acl /

永久开启:编辑/etc/fstab,在挂载选项中加入acl(如defaults,acl),然后mount -o remount /

查看 ACL 权限

getfacl 文件名

设定 ACL 权限

setfacl[选项]u:用户名:权限 文件名 setfacl[选项]g:组名:权限 文件名
选项作用
-m设定(添加或修改)ACL 条目
-x删除指定的 ACL 条目
-b删除所有 ACL 条目
-R递归设定(对目录内现有文件生效)
-d设定默认 ACL(对目录内新建文件生效)
-k删除默认 ACL

示例

# 给用户 tom 赋予 /project 的读写执行权限setfacl-mu:tom:rwx /project# 递归给目录下所有文件添加用户 jerry 的读权限setfacl-R-mu:jerry:rx /data# 设定默认 ACL(新建文件继承)setfacl-md:u:tom:rwx /project# 删除用户 tom 的 ACLsetfacl-xu:tom /project# 删除所有 ACLsetfacl-b/project

最大有效权限(mask)

ACL 权限与 mask 权限进行“与”运算后才是实际有效权限。查看getfacl输出中的mask行,修改 mask:

setfacl-mm:rwx 文件名# 设置 mask 为 rwx

注意:mask 不影响文件所有者的权限。

7.2 特殊权限(SUID / SGID / SBIT)

权限数字代表设置方式作用
SUID(Set User ID)4(如4755chmod u+s 文件仅对二进制可执行文件有效。执行时,进程获得文件所有者的权限(而非执行者)。例如/usr/bin/passwd
SGID(Set Group ID)2(如2755chmod g+s 文件或目录对文件:执行时获得文件所属组的权限;对目录:在该目录下新建的文件,其所属组将继承目录的属组(而非创建者的主组)。
SBIT(Sticky Bit,粘着位)1(如1755chmod o+t 目录仅对目录有效。在该目录下,用户只能删除自己创建的文件(即使有写权限),典型如/tmp

示例

chmod4755/usr/bin/myprog# 设置 SUIDchmodu+s /usr/bin/myprog# 同上chmod1755/tmp/mydir# 设置粘着位

若设置后显示S(大写)或T,表示该文件缺少相应的执行权限,应先赋予执行权限(chmod +x)。

7.3 文件系统属性(chattr / lsattr)

这些属性仅对root用户有效,用于锁定文件或目录,防止误操作。

chattr 设置属性

chattr[+|-|=]选项 文件或目录
选项对文件的作用对目录的作用
i无法删除、改名、修改内容(锁死)只能修改目录下文件的数据,但不能新建或删除文件(锁死目录)
a只能追加内容(echo >>),不能删除或修改原有内容可以建立和修改文件,但不能删除文件(锁数据)

示例

chattr +i /etc/passwd# 锁定 passwd 文件chattr-i/etc/passwd# 解锁chattr +a /var/log/secure# 仅允许追加

lsattr 查看属性

lsattr[选项]文件或目录
选项作用
-a显示所有文件(含隐藏)
-d若目标是目录,仅显示目录本身属性,不显示其子内容

示例

lsattr-d/root

7.4 sudo 权限

sudo 允许普通用户以 root(或其他用户)身份执行特定命令。

配置 sudo(visudo)

visudo# 安全编辑 /etc/sudoers 文件

格式

用户名 主机名=(可切换身份) 命令绝对路径 %组名 主机名=(可切换身份) 命令绝对路径
  • 主机名通常写ALL
  • 可切换身份可写ALL或指定用户。
  • 命令需使用绝对路径(可用which 命令查找)。

示例

# 允许用户 sc 执行重启命令scALL=/sbin/shutdown-rnow# 允许 wheel 组所有用户执行任何命令(需输入密码)%wheelALL=(ALL)ALL# 允许用户 dev 执行 yum 安装(免密码)devALL=(ALL)NOPASSWD: /usr/bin/yuminstall

使用 sudo

sudo-l# 查看当前用户可执行的 sudo 命令sudo命令# 执行授权命令(如 sudo /sbin/shutdown -r now)

普通用户执行 sudo 时需输入自己的密码(除非设置了NOPASSWD)。


🏁 结语

本手册完整收录了GCC、RPM、YUM、DNF、VIM、权限管理等核心工具的所有原始细节,并补充了示例和参数说明。无论是编译程序、安装软件、编辑配置还是控制权限,你都可以在这里快速找到答案。

建议收藏或打印,遇到相关任务时直接翻阅对应章节。如果你在实际使用中发现遗漏或需要补充,欢迎随时完善。

愿你的 Linux 之旅畅通无阻!🚀