Linux ed 命令 - 功能强大的行编辑器
• 最后修改:2025-09-09 • 阅读量:15
ed (英文全称为:editor)命令是一个行文本编辑器,它有命令模式和输入模式两种工作方式,命令模式用于输入一些命令后,根据命令对文本执行相应的操作,而输入模式是向文本中输入内容,ed 命令所有的操作都是在缓冲区内完成,当执行保存命令时,把内容写如文件。
ed 是按行编辑内容,这点一定要注意。如下将为你详细介绍 ed 命令的使用方法。
命令语法
ed 命令的基本语法结构如下所示:
ed [选项] [文件]
解释说明:
- 选项:用于控制 ed 编辑器行为的参数
- 文件:需要编辑的文件
ed 命令使用示例
使用 ed 命令编辑文件,执行命令后,首先提示的信息是从文件读入缓冲区的字节数。
编辑文件
不适用任何选项,指定文件名编辑文件:
ed myfile.txt
自定义命令提示符
使用 -p 字符串
选项可以自定义命令提示符,默认没有设置命令提示符:
ed -p '> ' myfile.txt
如上命令把命令提示符设置为 >
注意:命令提示符是字符串,要用引号包裹
ed 命令交互指令详解
ed 命令怎么使用,关键还是要了解这些交互指令,了解了交互指令,你才算是真正的学会了使用 ed 命令。
行选择与当前行计算
当前行的计算与行的选择有关,如下给出他们之间的关系:
字符表示形式 | 描述 | 当前行 |
---|---|---|
. | 表示当前行 | 不改变当前行 |
$ | 表示最后一行 | 当前行设置为最后一行 |
n | 表示第 n 行 | 当前行设置为第 n 行 |
m,n | 从 m 行到第 n 行 | 当前行设置为第 n 行 |
m;n | 从 m 行到第 n 行 | 当前行设置为第 n 行 |
, | 省略了前后的 m n,表示从 1 行到最后一行 | 当前行设置为最后一行 |
; | 省略了前后的 m n,表示从当前行到最后一行 | 当前行设置为最后一行 |
命令模式下的显示命令
命令 | 描述 | 示例 |
---|---|---|
<行选择符>p (print) |
用于显示指定的行,单独使用时显示当前的行 | 2,5p 显示第 2 到第 5 行 |
<行选择符>n (number) |
用于显示指定的行,同时还会显示行号 | 2,5n 显示第 2 到第 5 行及其行号 |
. |
显示当前行的内容 | . |
$ |
显示最后一行的内容 | . |
= |
显示总行数 | = |
进入输入模式
进入输入模式需要使用特定命令,需要使用提供的编辑命令当中的一部分:
命令 | 描述 | 示例 |
---|---|---|
<行号>a (append) |
进入输入模式,在指定行号的后面添加内容,单独使用时在当前行的后面添加内容 | 5a 在第 5 行的后面添加内容 a 在当前行的后面添加内容 |
<行号>i (insert) |
进入输入模式,在指定行号的前面添加内容,单独使用时在当前行的前面添加内容 | 5i 在第 5 行的前面添加内容 i 在当前行的前面添加内容 |
<行号>c (change) |
进入输入模式,更改指定行号的内容,单独使用时更改当前行的内容 | 5c 更改第 5 行的内容 c 更改当前行的内容 |
退出输入模式
在输入模式下,另起一行,输入 .
,按 Enter
键,退出输入模式,进入命令模式
文件操作命令
命令 | 描述 | 示例 |
---|---|---|
e <file> (edit) |
重新编辑一个新文件,在读入新文件前会清空缓冲区,如果未保存会警告,后附附加 ! 强制执行 |
e file1.txt e! file2.txt |
<行号>r <file> (read) |
读入另一个文件的内容,添加在指定行号的后面,单独使用时添加在当前行的后面 | 5r file1.txt 在第 5 行的后面添加读入的文件内容 $r file2.txt 在最后一行的后面添加读入的文件内容 |
w <file> (write) |
保存内容到指定的文件(即:把缓冲区中的内容写入文件),单独使用时,保存到源文件 | w file1.txt w |
W <file> (write 大写形式) |
把内容添加到指定的文件的后面(即:把缓冲区中的内容写入文件) | W file1.txt |
<行选择符>d (delete) |
用于删除指定的行 | 2,5d 删除第 2 到第 5 行 |
<行选择符>s (substitute) |
使用正则表达式查找替换指定行中的内容 | 2,5s/^/#/ # 在第1到第5行的行首添加 '#'(注释掉) |
<行选择符>m<行号> (move) |
把选择的行内容移动到指定行的后面 | 2,5m10 # 把第 2到第 5 行移动到第 10 行的后面 |
<行选择符>t<行号> (transfer) |
把选择的行内容复制到指定行的后面 | 2,5m10 # 把第 2到第 5 行复制到第 10 行的后面 |
搜索命令
命令 | 描述 | 示例 |
---|---|---|
/pattern/ |
从头向尾,搜索匹配正则表达式 pattern 的内容 | /hello/ |
?pattern? |
从尾向头,搜索匹配正则表达式 pattern 的内容 | ?hello? |
退出与其他命令
命令 | 描述 |
---|---|
q (quit) |
退出编辑器,需要先保存内容 |
Q (quit) |
不保存内容,强制退出编辑器 |
H (Help) |
切换信息的显示模式 |
! |
执行一个外部命令,如:!ls -l |
ed 命令选项详解
在 ed 命令中支持以下这些选项:
选项 | 描述 |
---|---|
-G , --traditional |
运行兼容模式,兼容旧版本的功能 |
-s , --quiet , --silent |
不显示命令启动时的对文本执行的诊断信息,该选项在脚本中经常使用 |
-p 字符串 |
用于指定自定义的命令提示符,命令提示符就是命令模式下,输入命令时一直显示的内容,用于提示输入命令,默认没有命令提示符,例如可以设置: -p '> ' 。 |
-h , --help |
显示帮助信息并退出。 |
-V , --version |
显示版本信息并退出。 |
-l , --loose-exit-status |
忽略推出状态,即使命令失败,也以状态零(正常终止)退出 |
-r , --restricted |
在受限模式下运行 |
-v , --verbose |
显示详细操作信息 |
ed 命令安装说明
虽然绝大多数 Linux 和 Unix 发行版(包括 FreeBSD)都默认安装了 ed,但某些极简环境或容器中可能没有。如果系统中默认没有安装该命令,以下是在不同系统下的安装方法:
在很多系统上可能默认没有安装 ed 编辑器,需要使用的话,需要自行安装:
- 在 Debian / Ubuntu 系统上使用如下命令安装 ed 编辑器:
bash
sudo apt update
sudo apt install ed
- 在 RHEL / CentOS / AlmaLinux / Rocky Linux 系统上使用如下命令安装 ed 编辑器:
bash
# 对于较新版本(RHEL/CentOS 8+, AlmaLinux, Rocky Linux),使用 dnf
sudo dnf install ed
- 在 FreeBSD系统上使用如下命令安装 ed 编辑器:
bash
# 使用 pkg 安装
sudo pkg install ed
# 或者使用 ports 编译安装(需先进入 ports 目录)
# cd /usr/ports/editors/ed/ && sudo make install clean
结语
ed 是一个行编辑器,它的功能没有 vim
编辑器功能强大,但是很多编辑器受它启发而开发。在本文中,我们讲解了 ed 编辑器的基本语法,最重要的是给出了其交互命令的详细解释说明,并给出一些使用示例。本文已经非常详细,足够你学习使用。
ed 命令可以跨平台使用,你能够在 Linux 各发行版和 FreeBSD 系统上同时使用它。