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

发布时间:2026/7/7 5:03:29
Linux软件管理与编辑器命令速查手册 版本v1.0 适用系统CentOS/RHEL 系列 最后更新2026-07-01 前言在日常 Linux 运维与开发中软件包管理、编译器使用、文本编辑、权限控制是高频操作。无论你是编译源码、安装 RPM 包、配置 YUM 仓库还是用 VIM 快速修改配置、设置 ACL 权限一套完备的速查手册都能帮你节省大量时间。本手册完整收录了以下文档的所有原始内容未做任何删减GCC 编译器基础用法RPM 包管理包名解析、依赖、安装/升级/查询/卸载/校验/提取YUM 在线管理仓库配置、命令、软件组、光盘源搭建DNF 包管理器新一代 YUMRPM 包安装后的典型目录结构VIM 编辑器全面操作三种模式、所有指令、高级技巧权限管理扩展ACL、特殊权限 SUID/SGID/SBIT、chattr、sudo在保留全部原始知识的基础上我优化了格式、补充了参数说明、增加了实操示例并采用目录分层、表格速查的方式让你在工作中遇到问题能快速定位。 目录GCC 编译器RPM 包管理2.1 包名解析2.2 依赖性2.3 安装与升级2.4 查询操作2.5 卸载操作2.6 校验操作2.7 文件提取rpm2cpioYUM 在线管理3.1 YUM 仓库配置文件3.2 YUM 常用命令3.3 软件组管理3.4 光盘 YUM 源搭建DNF 包管理器RPM 包安装后的服务目录结构VIM 编辑器详解6.1 三种模式概览6.2 命令模式操作6.3 插入模式操作6.4 末行模式操作6.5 常用高级技巧权限管理扩展7.1 ACL 权限7.2 特殊权限SUID/SGID/SBIT7.3 文件系统属性chattr/lsattr7.4 sudo 权限一、GCC 编译器GCCGNU 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 包管理RPMRed Hat Package Manager是 Linux 下最经典的软件包管理工具适用于 CentOS/RHEL 系列。2.1 包名解析以httpd-2.2.15-15.el6.centos.i686.rpm为例字段含义示例软件包名软件名称httpd版本号软件版本2.2.15发行次数RPM 打包的发行号15适用平台操作系统版本el6.centosRHEL 6 / CentOS 6硬件平台架构i68632位x86_6464位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.rpm2.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.conf2.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配置文件configd普通文档documentationg鬼文件ghost该文件不应被该包包含l授权文件licenser描述文件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 在线管理YUMYellowdog Updater Modified是基于 RPM 的包管理工具可以自动解决依赖关系。3.1 YUM 仓库配置文件YUM 仓库配置文件位于/etc/yum.repos.d/以.repo结尾。以CentOS-Base.repo为例其字段含义如下[base] # 容器名称必须放在[]中 nameCentOS-$releasever - Base # 容器说明可自定义 mirrorlisthttp://mirrorlist.centos.org/... # 镜像站点列表可注释 baseurlhttp://mirror.centos.org/centos/$releasever/os/$basearch/ # YUM源服务器地址可自定义 enabled1 # 是否生效1生效0不生效默认不写也是1 gpgcheck1 # 是否启用GPG数字证书校验1启用0不启用 gpgkeyhttp://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 -qiyum 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 groupinstallDevelopment Toolsyum groupremoveDevelopment Tools3.4 光盘 YUM 源搭建当网络不好时可以使用系统安装光盘作为本地 YUM 源。步骤挂载光盘mount/dev/cdrom /mnt/cdrom若/mnt/cdrom不存在需先mkdir -p /mnt/cdrom使网络 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修改光盘 YUM 源配置文件CentOS-Media.repoviCentOS-Media.repo修改如下内容[c7-media] nameCentOS-$releasever - Media baseurlfile:///mnt/cdrom # 指向挂载点 gpgcheck0 # 0关闭校验或设置1并指定gpgkey enabled1 # 1启用验证yum clean all yum list四、DNF 包管理器DNFDandified YUM是 YUM 的下一代版本在 Fedora 22 及 RHEL/CentOS 8 中成为默认。在 CentOS 7 中可通过 EPEL 安装。安装 DNFCentOS 7yuminstallepel-release-yyuminstalldnf-yDNF 常用命令对照与 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 update或dnf 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 --enablerepoepel 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/httpdMySQL 数据在/var/lib/mysql日志在/var/log/mysqld.log六、VIM 编辑器详解VIM 是 Linux 下最强大的文本编辑器掌握它可大幅提高工作效率。6.1 三种模式概览命令模式默认按Esc进入可移动光标、删除、复制、搜索等。插入模式按i/a/o等进入编辑文本按Esc返回命令模式。末行模式在命令模式下按:进入可执行保存、退出、替换、设置等。6.2 命令模式操作光标移动操作功能gg跳转到文件第一行G跳转到文件最后一行nG或ngg跳转到第 n 行如10G到第10行$移动到当前行行尾0数字零移动到当前行行首删除操作操作功能x删除光标所在处的字符nx删除光标后 n 个字符如5xdd删除当前行ndd删除 n 行如5dddG删除从当前行到文件末尾D删除从光标到行尾的内容复制、剪切与粘贴操作功能yy复制当前行nyy复制 n 行如5yydd剪切当前行也可用ndd剪切多行p小写粘贴到光标所在行的下一行P大写粘贴到光标所在行的上一行替换与撤销操作功能r替换光标处的字符输入一个字符R进入替换模式持续替换直至按Escu撤销上一步操作.点重复上一次操作搜索操作功能/字符串向下搜索指定字符串?字符串向上搜索指定字符串n跳转到下一个匹配项按搜索方向N跳转到上一个匹配项其他常用命令模式操作操作功能Ctrl v进入可视块模式可多列操作ZZ保存并退出等同于:wq6.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快捷键触发命令例如按CtrlP快速在行首插入#:map ^P I#Esc # ^P 需用 CtrlV CtrlP 输入^P表示 CtrlP需按CtrlV再按CtrlP输入永久保存快捷键可写入~/.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 shiftwidth4 缩进宽度写入后永久生效。七、权限管理扩展7.1 ACL 权限ACLAccess Control List可为单独的特定用户或组设置文件权限而不仅限于所有者/组/其他人。检查分区是否支持 ACLdumpe2fs-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最大有效权限maskACL 权限与 mask 权限进行“与”运算后才是实际有效权限。查看getfacl输出中的mask行修改 masksetfacl-mm:rwx 文件名# 设置 mask 为 rwx注意mask 不影响文件所有者的权限。7.2 特殊权限SUID / SGID / SBIT权限数字代表设置方式作用SUIDSet User ID4如4755chmod us 文件仅对二进制可执行文件有效。执行时进程获得文件所有者的权限而非执行者。例如/usr/bin/passwd。SGIDSet Group ID2如2755chmod gs 文件或目录对文件执行时获得文件所属组的权限对目录在该目录下新建的文件其所属组将继承目录的属组而非创建者的主组。SBITSticky Bit粘着位1如1755chmod ot 目录仅对目录有效。在该目录下用户只能删除自己创建的文件即使有写权限典型如/tmp。示例chmod4755/usr/bin/myprog# 设置 SUIDchmodus /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/root7.4 sudo 权限sudo 允许普通用户以 root或其他用户身份执行特定命令。配置 sudovisudovisudo# 安全编辑 /etc/sudoers 文件格式用户名 主机名(可切换身份) 命令绝对路径 %组名 主机名(可切换身份) 命令绝对路径主机名通常写ALL。可切换身份可写ALL或指定用户。命令需使用绝对路径可用which 命令查找。示例# 允许用户 sc 执行重启命令scALL/sbin/shutdown-rnow# 允许 wheel 组所有用户执行任何命令需输入密码%wheelALL(ALL)ALL# 允许用户 dev 执行 yum 安装免密码devALL(ALL)NOPASSWD: /usr/bin/yuminstall使用 sudosudo-l# 查看当前用户可执行的 sudo 命令sudo命令# 执行授权命令如 sudo /sbin/shutdown -r now普通用户执行 sudo 时需输入自己的密码除非设置了NOPASSWD。 结语本手册完整收录了GCC、RPM、YUM、DNF、VIM、权限管理等核心工具的所有原始细节并补充了示例和参数说明。无论是编译程序、安装软件、编辑配置还是控制权限你都可以在这里快速找到答案。建议收藏或打印遇到相关任务时直接翻阅对应章节。如果你在实际使用中发现遗漏或需要补充欢迎随时完善。愿你的 Linux 之旅畅通无阻