Linux 新手到进阶的必经之路:Shell 通配符 + man 帮助 + Vim 编辑器

发布时间:2026/9/12 18:58:13
Linux 新手到进阶的必经之路:Shell 通配符 + man 帮助 + Vim 编辑器 学 Linux 最容易卡壳的三个地方Shell 通配符看不懂、man 手册查不到点上、vim 进得去出不来。这篇文章就是为解决这三件事而来——三大板块、60 个可复制命令、每个都带参数解释和实战示例照着敲就会用。一、Shell 通配符批量匹配文件通配符glob用于在命令行中按模式匹配文件名是ls、cp、mv、rm等命令批量操作文件的基础。通配符速查表模式匹配项*由零个或更多字符组成的任何字符串单独的*不匹配隐藏文件?任何一个字符[abc…]位于两个方括号之间的任何一个字符[^abc…]或[!abc…]不在括起集合中的任何一个字符~当前用户的主目录~username指定用户username的主目录[[:alpha:]]任何字母字符相当于[a-Z][[:lower:]]任何小写字符[[:upper:]]任何大写字符[[:alnum:]]任何字母或数字相当于[a-Z0-9][[:punct:]]除空格和字母数字以外的任何可打印字符[[:digit:]]或[0-9]0 到 9 的任何单个数字[[:space:]]任何一个空白字符制表符、换行符、回车符、换页符或空格{...}匹配列表花括号展开*—— 零个或多个字符# 匹配 /etc 目录下所有以 ho 开头的文件[zhbzhb-m1 ~]$ls/etc/ho* /etc/host.conf /etc/hostname /etc/hosts /etc/hosts.allow /etc/hosts.deny# 将 /etc 目录下所有 ho 开头的文件复制到 /tmp[zhbzhb-m1 ~]$cp/etc/ho* /tmp[zhbzhb-m1 ~]$ls/tmp/ho* /tmp/host.conf /tmp/hostname /tmp/hosts /tmp/hosts.allow /tmp/hosts.deny# 删除 /tmp 目录下所有 ho 开头的文件[zhbzhb-m1 ~]$rm/tmp/ho*[zhbzhb-m1 ~]$ls/tmp/ho* ls: 无法访问/tmp/ho*: 没有那个文件或目录?—— 单个字符# 准备文件[zhbzhb-m1 lab]$touchfile-1 file-2 file-a file-a1 file-a2 file-ab file-b[zhbzhb-m1 lab]$lsfile-* file-1 file-2 file-a file-a1 file-a2 file-ab file-b# 查看名称是 file- 后跟 1 个字符的文件[zhbzhb-m1 lab]$lsfile-? file-1 file-2 file-a file-b# 查看名称是 file- 后跟 2 个字符的文件[zhbzhb-m1 lab]$lsfile-?? file-a1 file-a2 file-ab# 查看名称是 file- 后跟 3 个字符的文件[zhbzhb-m1 lab]$lsfile-??? ls: 无法访问file-???: 没有那个文件或目录[]—— 字符类[zhbzhb-m1 lab]$lsfile-? file-1 file-2 file-a file-b[zhbzhb-m1 lab]$lsfile-[abc]file-a file-b[zhbzhb-m1 lab]$lsfile-[12]file-1 file-2[zhbzhb-m1 lab]$lsfile-[^12]file-a file-b字符集合[[:...:]]# 准备文件[zhbzhb-m1 lab]$touchfile-9 file-A file-Z file-z# 匹配所有数字[zhbzhb-m1 lab]$lsfile-[0-9]file-1 file-2 file-9[zhbzhb-m1 lab]$lsfile-[[:digit:]]file-1 file-2 file-9# 匹配所有大写字母[zhbzhb-m1 lab]$lsfile-[[:upper:]]file-A file-Z# 匹配所有小写字母[zhbzhb-m1 lab]$lsfile-[[:lower:]]file-a file-b file-z# 匹配所有字母[zhbzhb-m1 lab]$lsfile-[a-Z]file-a file-A file-b file-z file-Z[zhbzhb-m1 lab]$lsfile-[[:alpha:]]file-a file-A file-b file-z file-Z# 匹配所有字母和数字[zhbzhb-m1 lab]$lsfile-[[:alnum:]]file-1 file-2 file-9 file-a file-A file-b file-z file-Z~—— 主目录[zhbzhb-m1 lab]$echo~ /home/zhb[zhbzhb-m1 lab]$cd~[zhbzhb-m1 ~]$pwd/home/zhb[zhbzhb-m1 ~]$echo~root /root[zhbzhb-m1 ~]$cd~root -bash: cd: /root: 权限不够{}—— 花括号展开[zhbzhb-m1 lab]$lsfile-[abc]file-a file-b[zhbzhb-m1 lab]$lsfile-{a,b,c}# 相当于下面命令[zhbzhb-m1 lab]$lsfile-a file-b file-c ls: 无法访问file-c: 没有那个文件或目录 file-a file-b# {1..5} 表达一个范围[zhbzhb-m1 lab]$lsfile-{1..5}ls: 无法访问file-3: 没有那个文件或目录 ls: 无法访问file-4: 没有那个文件或目录 ls: 无法访问file-5: 没有那个文件或目录 file-1 file-2二、Linux 获取帮助man 手册man是 manual 的简称使用不同的 section章节区分手册类别SECTION内容类型1用户命令可执行命令和 shell 程序2系统调用从用户空间调用的内核例程3库函数由程序库提供4特殊文件如设备文件5文件格式用于许多配置文件和结构6游戏过去的有趣程序章节7惯例、标准和其他协议、文件系统8系统管理和特权命令维护任务9Linux 内核 API内核调用man 命令[zhbzhb-m1 ~]$man--helpUsage:man[OPTION...][SECTION]PAGE...# man 命令会调用 less 打开 /usr/share/man/ 下的相关文件# passwd(1) 描述 passwd 命令如何更改密码[zhbzhb-m1 ~]$man1passwd# passwd(5) 解释 /etc/passwd 文件格式[zhbzhb-m1 ~]$man5passwd# 查看英文的帮助手册指定 LANG 变量[zhbzhb-m1 ~]$LANGen_US.utf8mangedit# 或者[zhbzhb-m1 ~]$LANGen_US.utf8[zhbzhb-m1 ~]$mangeditman 页面交互操作less 程序命令结果PageDown或空格向前向下滚动一个屏幕PageUp向后向上滚动一个屏幕向下箭头向前向下滚动一行向上箭头向后向上滚动一行d向前向下滚动半个屏幕u向后向上滚动半个屏幕/string向前向下搜索 stringn重复之前的向前向下搜索N重复之前的向后向上搜索g转到第一行G转到最后一行q退出 man返回 shell 命令提示符man 数据库# 使用 root 用户更新 man page 库[rootzhb-m1 ~]# mandb正在删除 /usr/share/man 里的旧数据库条目... mandb: 警告/usr/share/man/man8/fsck.fat.8.manpage-fix.gz忽略错误的文件名...... 正在处理 /usr/share/man/en 下的手册页... 正在删除 /usr/local/share/man 里的旧数据库条目... 正在处理 /usr/local/share/man 下的手册页...0mansubdirectories contained newer manual pages.0manual pages were added.0stray cats were added.17old database entries were purged.# 使用 -k 选项搜索关键字[zhbzhb-m1 ~]$man-kpasswdchgpasswd(8)- 批量更新组密码 chpasswd(8)- 批量更新密码 gpasswd(1)- administer /etc/group and /etc/gshadow mkpasswd(1)- 为用户产生新口令passwd(5)-(未知的主题)......[zhbzhb-m1 ~]$man-kext4..... resize2fs(8)- ext2/ext3/ext4filesystem resizer......# 看到含 ext4 关键字的 resize2fs 后直接打开它的手册页[zhbzhb-m1 ~]$manresize2fsshell 内置命令help# 不建议使用 man 查询 shell 内置命令[zhbzhb-m1 ~]$manhistory# 改用 help command[zhbzhb-m1 ~]$helphistoryhistory:history[-c][-d 偏移量][n]或history-anrw[文件名]或history-ps参数[参数...]显示或操纵历史列表。 带行号显示历史列表将每个被修改的条目加上前缀 *。 参数 N 会仅列出最后的 N 个条目。......重要通用选项--help也可用于查看命令帮助。/usr/share/doc可以通过file:///usr/share/doc浏览。一些包还包含拓展示例、配置文件模板、脚本、使用说明或用户指导手册例如/usr/share/doc/dhclient-*。[zhbzhb-m1 ~]$cat/usr/share/doc/dhclient-4.2.5/dhclient.conf.examplewhich 与 whereis# 查看 vi 命令代表什么[zhbzhb-m1 ~]$whichvialiasvivim/usr/bin/vim# whereis 查看关键字对应的程序位置、帮助文档、源码[zhbzhb-m1 ~]$whereismanman: /usr/bin/man /usr/share/man /usr/share/man/man1/man.1.gz /usr/share/man/man1p/man.1p.gz /usr/share/man/man7/man.7.gz[zhbzhb-m1 ~]$whereispasswdpasswd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz三、Vim 编辑器Vim 简介Linux 系统中有多个编辑器例如 gedit、nano、emacs、vi。学习 vi 的原因一是 Linux 默认安装二是学习成本低。Linux 系统中的 vi 有三个版本vim-minimal只提供 vi 和相关命令。vim-enhanced提供 vim 命令具备语法高亮、拼写检查等特性。vim-X11提供 gvim图形界面下的 vim含菜单栏忘记命令时可通过菜单操作。# 安装 vim 工具[rootzhb-m1 ~]# yum install vimVim 四种模式模式进入方式用途command默认按键有特殊含义如gg首行、G末行edit按i输入内容Esc返回extended command按:保存:w、退出:q、强退:q!、保存退出:wqvisual edit按v/V/Ctrlv选中文本后复制或删除[zhbzhb-m1 ~]$cp/etc/profile ./profile.sh[zhbzhb-m1 ~]$vim./profile.sh命令行模式快捷键分类命令定位·字符h左j下k上l右定位·词w后一词(词首)e后一词(词尾)b前一词定位·行0行首^首个非空$行尾 ·下一行-上一行(加数字如5/5-) ·gg首行G末行nG第n行定位·句段(上一句)下一句{上一段}下一段定位·屏幕H顶部M中部L底部 ·Ctrlf下屏Ctrlb上屏Ctrld下半屏Ctrlu上半屏定位·查找fc后找Fc前找tc后到前Tc前到后;/,重复 ·%匹配括号插入i光标前I行首a光标后A行尾o下开空行O上开空行复制/粘贴yy复制1行y2y/y2w/y2b多行多词p后粘P前粘删除x删字符5x删5字符X删前dw删词d5w/d3b/d2d/d$D删到行尾撤销u撤销U撤整行Ctrlr重做修改s删字符插入S删行插入cw删词插入c5wC删到行尾插入替换r换单字符R连续替换至Escless 使用g跳第一行、G跳最后一行。常见组合命令Vim 的核心是操作符 移动/对象operator motiond删除、c修改删后插入、y复制配合移动命令或文本对象即可组合出各种操作。组合含义dw/cw/yw删 / 改 / 复制到词尾dd/cc/yy删 / 改 / 复制整行2dd删 2 行d$/c$/y$删 / 改 / 复制到行尾同D/Cd0/c0删 / 改到行首dG/dgg删到文件尾 / 删到文件头dfx/dtx删到字符 x含 / 不含 xdi(/da(删括号内 / 删含括号ci/di改 / 删双引号内/右 / 左缩进3缩进 3 行gUw/guw单词转大写 / 转小写常用文本对象iw词内部 ·aw整个词含空格·i(/i)括号内 ·a(/a)含括号 ·i{花括号内 ·i/i引号内 ·ip段落 ·is句子。组合公式[数字] 操作符 [数字] 移动/对象例如3dw删 3 个词、2dd删 2 行、ciw修改整个词。Vim 实践示例 1文本输入与删除使用vim ./profile.sh打开文件。根据任务要求多次重复此文本输入循环使用方向键定位光标。按i键进入插入模式。输入文本hello world。按Esc键返回命令模式。若有需要使用u撤销当前行中出错的编辑操作。若有需要按Ctrlr反向撤销重做。根据任务要求多次重复此文本删除循环使用方向键定位光标。按x键删除选定的文本。若有需要使用u撤销当前行中出错的编辑操作。保存或退出选择下列操作之一:w写入保存文件并留在命令模式中继续编辑。:wq写入文件并退出 Vim。:q!退出 Vim放弃上次写入以来的所有更改。示例 2文本选择、复制与粘贴使用vim ./profile.sh打开文件。根据任务要求多次重复此文本选择循环使用方向键将光标定位到第一个字符。按v键进入可视模式选择对象。使用方向键将光标定位到最后一个字符。按y键复制所选内容。使用方向键将光标定位到插入位置。按p键粘贴所选内容。保存或退出选择下列操作之一:w保存、:wq保存并退出、:q!放弃更改退出。示例 3DHCP 服务配置文件定制# 安装 dhcp 软件[rootzhb-m1 ~]# yum install -y dhcp# 准备配置文件[zhbzhb-m1 ~]$cp/usr/share/doc/dhcp*/dhcpd.conf.example ~/dhcpd.conf编辑~/dhcpd.conf文件:set number showcmd—— 显示行号和操作命令gg—— 光标定位到第一行d46d—— 删除当前行以及后面的 45 行:11,29d—— 删除第 11 到 29 行/You can—— 搜索字符串You can并定位dG—— 删除当前位置行到最后:%s/10.5.5/10.1.8/g—— 将所有行中的10.5.5替换为10.1.8%针对所有内容s查找并替换g替换查找到的所有内容。/224—— 定位这个数字cw—— 替换为0然后按Esc将30换成130光标定位到ns1修改 DNS 为223.5.5.5按C然后输入223.5.5.5;修改路由器为10.1.8.2使用r替换末尾1为2修改广播地址10.1.8.31为10.1.8.255ZZ—— 保存退出Vim 配置两个配置文件位置全局/etc/vimrc为所有用户设置默认值。用户~/.vimrc特定用户的个性化设置。[zhbzhb-m1 ~]$vim~/.vimrcsetnumber# 显示行号setshowcmd# 底部显示操作命令setaits2# 自动缩进tab 用 2 空格setcursorcolumn# 当前列高亮setcursorline# 当前行高亮

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询