首页>教程>Linux 命令手册>Linux ed 命令 - 功能强大的行编辑器

Linux ed 命令 - 功能强大的行编辑器

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 编辑器,需要使用的话,需要自行安装:

  1. 在 Debian / Ubuntu 系统上使用如下命令安装 ed 编辑器:

bash sudo apt update sudo apt install ed

  1. 在 RHEL / CentOS / AlmaLinux / Rocky Linux 系统上使用如下命令安装 ed 编辑器:

bash # 对于较新版本(RHEL/CentOS 8+, AlmaLinux, Rocky Linux),使用 dnf sudo dnf install ed

  1. 在 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 系统上同时使用它。