Linux常用命令学习笔记:ex

1. 命令概述

  • 命令名称ex(英文全拼:extended editor)
  • 核心功能行编辑器,是 vi编辑器的底层实现
  • 主要用途:脚本编辑、批处理文本操作、系统维护
  • 与 vi 的关系exvi的命令行模式,vi= ex -v

2. 语法格式

ex [选项] [文件]

3. 常用选项

选项说明
-v启动 vi 编辑器(可视模式)
-c 命令执行命令后退出
-s静默模式,不显示提示信息
-R只读模式
-r恢复上次编辑的文件
--help显示帮助信息
--version显示版本信息

4. 基本操作模式

(1) 命令模式

启动 ex后进入命令模式,输入命令操作文本:

ex file.txt
# 进入命令模式,显示行数和字符数

(2) 输入模式

使用 aic命令进入输入模式,输入文本内容:

a
这是第一行
这是第二行
.
# 输入 . 结束输入模式

5. 常用命令详解

(1) 基本编辑命令

命令说明
a在当前行后追加文本
i在当前行前插入文本
c替换当前行
d删除当前行
p打印当前行
n显示行号和内容
w保存文件
q退出编辑器
Q强制退出,不保存
x保存并退出

(2) 行号操作

命令说明
.当前行
$最后一行
+n当前行后第 n 行
-n当前行前第 n 行
,所有行(1,$)
;当前行到最后一行(.,$)

(3) 查找和替换

命令说明
/正则表达式/向前查找
?正则表达式?向后查找
s/old/new/替换当前行
s/old/new/g全局替换当前行
g/正则表达式/命令对匹配行执行命令

(4) 文件操作

命令说明
e 文件名编辑新文件
r 文件名读取文件到当前行后
w 文件名写入文件
wq保存并退出
!命令执行 shell 命令

6. 常用实例详解

(1) 基本编辑

# 打开文件
ex file.txt

# 显示所有内容
1,$p

# 显示前5行
1,5p

# 显示最后5行
-5,$p

# 显示第10行
10p

(2) 插入和追加

# 在第1行前插入
1i
这是新插入的第一行
.

# 在最后一行后追加
$a
这是追加的最后一行
.

# 在第5行后追加
5a
这是第5行后追加的内容
.

(3) 删除和替换

# 删除第3行
3d

# 删除第5到第10行
5,10d

# 删除所有包含"test"的行
g/test/d

# 替换第2行
2c
这是替换后的第2行
.

# 替换所有包含"old"的行
g/old/c
这是替换后的内容
.

(4) 查找和替换

# 查找包含"hello"的行
/hello/

# 向后查找包含"world"的行
?world?

# 替换当前行的第一个"old"为"new"
s/old/new/

# 替换当前行的所有"old"为"new"
s/old/new/g

# 替换所有行的"old"为"new"
1,$s/old/new/g

# 替换第5到第10行的"old"为"new"
5,10s/old/new/g

(5) 文件操作

# 保存文件
w

# 保存并退出
wq

# 强制退出,不保存
Q

# 读取另一个文件到当前行后
r other.txt

# 执行 shell 命令
!ls -l

7. 实际应用场景

场景一:脚本编辑

# 编辑脚本文件
ex script.sh

# 在文件开头添加 shebang
1i
#!/bin/bash
.

# 在文件末尾添加内容
$a
echo "脚本执行完成"
.

# 保存并退出
wq

场景二:配置文件修改

# 修改配置文件
ex /etc/nginx/nginx.conf

# 查找并替换配置项
g/listen 80;/s/80/8080/

# 添加新的配置块
$a
server {
    listen 8080;
    server_name localhost;
}
.

# 保存并退出
wq

场景三:日志处理

# 处理日志文件
ex log.txt

# 删除空行
g/^$/d

# 删除时间戳列
1,$s/^[0-9:-]* //

# 只保留错误日志
g/ERROR/p

# 保存处理后的日志
w clean_log.txt

场景四:批量文本操作

# 批量替换多个文件
for file in *.txt; do
    ex -s "$file" <<EOF
1,\$s/old/new/g
w
EOF
done

# 批量删除空行
for file in *.log; do
    ex -s "$file" <<EOF
g/^$/d
w
EOF
done

8. 与其他命令的区别

命令特点适用场景
ex行编辑器,vi 的底层实现脚本编辑、批处理操作
vi屏幕编辑器,交互式交互式文本编辑
ed更古老的行编辑器历史学习、兼容性
sed流编辑器,非交互式流式文本处理
nano简单易用的编辑器快速编辑小文件

9. 注意事项

  1. 命令模式ex始终在命令模式下,需要输入命令才能操作
  2. 输入模式:使用 aic进入输入模式,输入 .结束
  3. 行号表示.表示当前行,$表示最后一行
  4. 正则表达式:支持基本正则表达式
  5. 错误处理:命令错误会显示 ?,输入 h查看帮助

10. 常见问题解决

(1) 文件不存在

# 打开不存在的文件会创建新文件
ex newfile.txt

(2) 命令错误

# 输入错误命令显示 ?
?command

# 查看帮助
h

# 退出
q

(3) 批量操作

# 使用 here document 批量操作
ex -s file.txt <<EOF
1,\$s/old/new/g
w
EOF

(4) 静默模式

# 静默模式下不显示提示信息
ex -s file.txt

核心要点总结

  • exvi编辑器的底层实现,是行编辑器
  • 操作模式:命令模式(输入命令)和输入模式(输入文本)
  • 常用命令a(追加)、i(插入)、d(删除)、s(替换)、w(保存)、q(退出)
  • 实际应用:脚本编辑、配置文件修改、日志处理、批量文本操作
  • 与 vi 的关系exvi的命令行模式,vi= ex -v

ex命令虽然现在使用较少,但作为 vi编辑器的底层实现,对于理解 vi的工作原理和进行批处理文本操作非常有价值。


作 者:南烛
链 接:https://www.itnotes.top/archives/351
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇