Linux ex命令(保姆级教程)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战(已更新的所有项目都能学习) / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新开坑项目:《Spring AI 项目实战》 正在持续爆肝中,基于 Spring AI + Spring Boot 3.x + JDK 21..., 点击查看 ;
- 《从零手撸:仿小红书(微服务架构)》 已完结,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
前言
在 Linux 系统中,命令行工具是开发者高效工作的核心。而 Linux ex命令 作为文本处理的“瑞士军刀”,常被低估却功能强大。它不仅是 vi/vim
编辑器的后台模式,更是批量操作文件、自动化任务的利器。无论是编程初学者还是中级开发者,掌握 ex 命令都能显著提升工作效率。本文将从基础到进阶,结合实例与比喻,帮助读者系统性地理解这一工具。
ex命令的起源与核心概念
什么是ex命令?
ex 是 Unix/Linux 系统 中最早的文本编辑器之一,诞生于 1976 年,其核心设计理念是“通过命令行高效操作文本”。尽管现代开发者更熟悉 vi/vim
,但它们本质上是 ex 的图形化前端。当用户在 vi
中按下 Esc
键后输入冒号(:
),便进入了 ex 的命令模式,此时输入的每一条命令都遵循 ex 的语法规范。
ex命令与vi/vim的关系
可以将 vi/vim 比作“驾驶舱”,而 ex 命令是“引擎”。例如,当我们在 vi
中输入 :wq
保存并退出时,实际上是在调用 ex 的 write
(保存)和 quit
(退出)命令。这种设计使得 ex 命令成为文本处理的底层逻辑,即使在非交互式脚本中也能直接调用。
ex命令的快速入门
如何进入ex模式?
- 直接启动ex编辑器:在终端输入
ex filename
,直接进入 ex 的交互模式。 - 通过vi/vim切换:在
vi
的命令模式(按Esc
键后)输入:
,即可进入 ex 的命令行模式。
示例:打开并编辑文件
$ ex example.txt # 直接启动ex编辑example.txt
基础操作命令详解
1. 移动光标
:n
:跳转到第 n 行。:$
:跳转到文件末尾。:+/-n
:向下/向上移动 n 行。
比喻:这如同在文档中“跳跃”,:10
就像按下电梯按钮直达10楼。
2. 查看与修改内容
:print
(缩写:p
):显示当前行内容。:s/old/new/
:替换当前行中的第一个匹配项。:s/old/new/g
:全局替换当前行中的所有匹配项。
3. 删除与插入
:d
:删除当前行。:i
:插入模式,输入新内容后按Esc
并输入.
退出。:a
:在当前行后追加内容。
代码示例:
:10 # 跳转到第10行
:p # 查看该行内容
:s/error/bug/ # 将"error"替换为"bug"
:d # 删除该行
ex命令的进阶功能
全局搜索与替换
ex
支持正则表达式,可高效处理复杂文本。例如:
:g/pattern/command
:对匹配pattern
的行执行command
。:v/pattern/command
:对不匹配pattern
的行执行command
。
案例:删除所有以 #
开头的注释行:
:g/^\s*#/d
文件操作与宏命令
1. 读取与写入文件
:r filename
:将文件内容插入当前行后。:w filename
:将当前行或选中范围保存到文件。
2. 宏命令(Macro)
通过 :map
或 :abbreviate
定义快捷指令,例如:
:map ,save :w! /path/to/file<CR>
输入 ,save
后会自动执行保存操作。
实战案例:ex命令的典型应用场景
案例1:批量替换字符串
需求:将 example.txt
中所有 TODO
标记替换为 FIXME
,并删除空行。
:%s/TODO/FIXME/g # 全局替换
:g/^\s*$/d # 删除空行
:wq # 保存并退出
案例2:处理日志文件
假设日志文件 log.txt
中需要提取 ERROR
级别的条目:
:g/ERROR/ .p # 显示所有包含"ERROR"的行
:.,+5w! grep ERROR > error.log # 将当前行及后5行保存到error.log
案例3:脚本化ex命令
通过非交互式执行 ex 命令:
echo -e '%s/old/new/g\nwq' | ex file.txt
此命令将直接替换 file.txt
中所有 old
为 new
并保存。
ex命令的注意事项
- 命令大小写敏感:大多数命令区分大小写,例如
:WQ
无效,需用:wq
。 - 确认操作:删除或覆盖文件前,建议先备份或使用
:set nohidden
禁用隐藏功能。 - 正则表达式陷阱:特殊字符(如
.
*
)需用反斜杠\
转义。
结论
Linux ex命令 是开发者工具箱中不可或缺的“多面手”。它不仅简化了文本编辑的繁琐步骤,更能在自动化脚本中发挥关键作用。从基础的行操作到复杂的正则表达式处理,ex 命令的学习曲线虽有一定挑战,但其带来的效率提升远超预期。对于编程初学者,建议从 vi
的简单命令入手,逐步深入 ex 的高级功能;中级开发者则可尝试将其与 Shell 脚本结合,构建更强大的工作流。掌握 ex,便是掌握了 Linux 系统文本处理的底层逻辑,这将为后续学习更复杂的工具(如 sed
、awk
)奠定坚实基础。
通过本文的讲解与案例,希望读者能真正理解 Linux ex命令 的价值,并在实际工作中灵活运用这一工具。