首页 > 系统相关 >Linux ed命令教程:轻松学会使用ed行编辑器(附语法参数安装及实例)

Linux ed命令教程:轻松学会使用ed行编辑器(附语法参数安装及实例)

时间:2024-12-14 12:28:51浏览次数:10  
标签:文件 ed 使用 命令 编辑器 Linux 缓冲区 hello

Linux ed命令

linux ed 命令是一个行编辑器。它被认为是标准的 Unix 文本编辑器,因为它是首个出现在 Unix 的文本编辑器,并且它曾经无处不在,你在任何一个 POSIX 系统中都能找到它(通常来说,你现在也可以)。

在某种程度上,你可以很容易看出来它是第一个文本编辑器,因为它在许多方面的功能都十分基础。和其他大多数的文本编辑器不同,它不会打开一个属于自己的窗口或显示区域,事实上,在默认情况下,它甚至不会提示用户输入文字。

从另一个方面来说,它在交互功能上的缺失也可以成为一个优点。它是一个多功能的编辑器,你可以用简短的命令控制它,无论是在交互式的命令行中,还是在编写的 shell 脚本里。

安装 ed

如果你正在使用 Linux 或者 BSD 的话,你很可能已经默认安装了 ed(在 Linux 上是 GNU 版 ed,而在 BSD 上是 BSD 版 ed)。但是,一些极简的环境可能没有包括 ed,这也没关系,你的发行版的软件仓库中很可能有 ed 可供下载。macOS 默认安装了 BSD 版 ed

语法

ed [-][-Gs][-p<字符串>][--help][--version][文件]

参数

  • -G或--traditional 提供回兼容的功能。
  • -p<字符串> 指定ed在command mode的提示字符。
  • -s,-,--quiet或--silent 不执行开启文件时的检查功能。
  • --help 显示帮助。
  • --version 显示版本信息。

启动 ed

当你启动 ed 的时候,你的终端提示符不见了,看起来好像是 ed 停止运行了。其实它没有,它只是在等待你输入指令而已。

$ ed

为使 ed 显示更详细的信息,你可以输入命令 p 让它返回一个提示符:

$ ed
p
?

这个问号(?)是默认的 ed 提示符。

缓冲区

当 ed 激活时,你其实是在和一个叫 缓冲区buffer 的东西打交道。缓冲区是内存中的一块区域。你并不会直接编辑文件,而是在编辑它对应的缓冲区。当你退出 ed 却没有把修改保存到磁盘的文件上时,所有的修改都会丢失,因为它们只在缓冲区里存在。(这对于一个已经习惯了初始的 草图缓冲区scratch buffer 的资深 Emacs 用户可能很耳熟。)

使用 ed 输入文本

启动 ed 后,你处于命令模式。这意味着你可以向编辑器发送指令,比如让它显示一个提示符,而不是空白区域。你可以使用 a 命令开始附加文本到当前的缓冲区,使用一个实心的点 . 来终止输入。比如,下面的这个例子往缓冲区里附加了两行文字(“hello world” 和 “hello ed”):

?
a
hello world
hello ed
.

使用点 . 终止输入后,你将回到命令模式。

查看缓冲区

怎样查看当前缓冲区里都有什么呢?你可以输入想要查看的行号,也可以使用 ,p 命令来显示所有的行:

?
1
hello world
2
hello ed
,p
hello world
hello ed

写入文件

如果你现在对文本很满意,你可以使用 w 命令把缓冲区写入到文件中,后面跟上目标文件名:

?
w example.txt
19

写操作后显示的那个数字代表着写入到文件中的字符数。

读取文件

除了使用 ed 来读取文本,你也可以使用 r 命令把一个已经存在的文件加载到到缓冲区里:

?
r myfile.txt

另外,你也可以在启动 ed 时,在它后面加上你想要加载到缓冲区里的文件名:

$ ed myfile.txt

编辑缓冲区

鉴于 ed 是一个文本编辑器,你当然可以使用一种特殊的语法来编辑缓冲区里的文本。使用 sed 或 vim 的用户或许会觉得这个语法很熟悉。假设现在缓冲区里已经加载了一个文件:

$ ed myfile.txt
,p
This is an example document.
There is some text, but not much.
There is some errors, but not much.

如果你要把第一句话中的 document 修改为 file,你可以先选择目标行(1),然后使用 s 命令调用搜索函数,后面跟着搜索文本和替换文本:

?
1
This is an example document.
s/document/file/
1
This is an example file.

如果你要编辑其他行,步骤也是一样的,只需提供一个不同的行号即可:

?
3
There is some errors, but not much.
s/is/are/
s/much/many/

你可以使用 ,p 命令来看到你对缓冲区的历史编辑记录:

This is an example file.
There is some text, but not much.
There are some errors, but not many.

当然,这些修改只存在于缓冲区里。你如果在 ed 编辑器外查看这个文件,你只会看到原始的文本:

$ cat myfile.txt
This is an example document.
There is some text, but not much.
There is some errors, but not much.

如果你要把这些修改保存回文件中,使用 w 命令即可:

w myfile.txt
258

清空缓冲区

如果想要得到一个新的缓冲区,以此来打开一个新的文件,或者把一个新的文件加载到不同的环境中,你可以使用 c 命令。使用这个清空缓冲区后,什么也不会输出,因为缓冲已经是空的了:

c
,p

退出

如果要退出当前的 ed 会话,你可以使用 q 命令。它并不会给你一个保存缓冲区的机会,所以你要确保自己在这之前执行了保存操作。

尝试一下 ed 吧

ed 还可以做到很多事情,学习 ed 可以让你知道它和部分的 vim 是如何工作的。我并没有尝试使用 ed 来写这篇文章,老实说,我也不认为它是通常意义上的最佳文本编辑器。但是,ed 仍然是一个出色的编辑器。通过阅读它的文档,你可以很轻松地学会它。在 GNU 系统上,你可以使用 info ed 来查看它的操作手册。

这里是封面:

标签:文件,ed,使用,命令,编辑器,Linux,缓冲区,hello
From: https://blog.csdn.net/yangchuang111213/article/details/144469146

相关文章

  • Linux csplit命令图文教程:将一个大文件拆分为多个较小的文件/部分(附详细参数讲解及附
    Linuxcsplit命令csplit是一个Linux命令,可用于根据用户的要求将一个大文件拆分为多个较小的文件/部分。这些部分由上下文线确定。默认情况下,csplit将文件拆分为每个文件1000行,并为用户提供根据需要更改拆分行数的选项。输出分割文件的名称如“xx00”和“xx01”。csplit......
  • 【Pandas】pandas timedelta_range
    Pandas2.2GeneralTop-leveldealingwithdatetimelikedata方法描述to_datetime(arg[,errors,dayfirst,…])用于将对象数据(如字符串)转换为日期时间类型to_timedelta(arg[,unit,errors])用于将对象数据(如字符串)转换为时间差类型date_range([start,end,periods,fr......
  • Linux修改IP、主机名、DNS
    在Linux系统中,更改IP地址、主机名和DNS设置通常涉及到几个关键的配置文件和命令。具体步骤会根据你的Linux发行版有所不同,但这里我将以常见的CentOS/RHEL系统为例,说明这些操作的一般流程。1.更改IP地址检查当前的网络接口:ipaddrshow找到你要修改的网络接口配置文件。在......
  • Linux报错出现 Error: Access denied for user ‘root‘@‘localhost‘ (using passwo
    ERROR1045(28000):Accessdeniedforuser‘root’@‘localhost’(usingpassword:YES)翻译:错误1045(28000):对用户“root”@本地主机拒绝访问(使用密码:是)解决操作如下:一般这个错误是由密码错误引起,解决的办法自然就是重置密码。1.重置密码的第一步就是跳过MySQL的密码......
  • Linux进程与资源管理
    在Linux学习,进行各种操作过程中需要用到很多种命令,本篇主要讲Linux进程与资源管理命令仅供大家参考。绝对是干货满满的一篇文章!!!Linux进程与资源管理命令:提示:以下是本篇文章正文内容,仅供参考1.nohup命令:        语法:nohup需要执行的命令&        作用:1......
  • UltraEdit 下载及安装教程
    一、软件简介UltraEdit(前身为IDM)由IanD.Mead创立,UltraEdit是文本编辑软件的先驱,UltraEdit提供一整套产品,包括UltraEdit、UEStudio、UltraCompare、UltraFinder和UltraFTP。UltraEdit强调可在Windows、Mac和Linux上无缝运行的可配置性和易于使用的产品。UltraEdit......
  • Linux安装MySQL8.0
    在linux系统的下切换到/usr/local目录下创建mysql文件夹,也可以自定义文件夹。#切换目录cd/usr/local#创建文件夹mkdirmysql切换到刚创建的目录下,并使用wget下载mysql压缩包。我们选择MySQL8.0.20cdmysqlwgethttps://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8......
  • 重读《人月神话》(18)-再论《没有银弹》(“No Silver Bullet“ Refired)
    重读《人月神话》(17)-没有银弹-软件工程中的根本和次要问题《没有银弹》("NoSilverBullet")在这篇文章中,Brooks探讨了为什么在当时看来并没有一个单一的方法或技术(即所谓的“银弹”)可以解决所有软件开发中的问题,并且他预测在未来十年内也不会出现这样的方法。再论《没有银弹......
  • Win11系统提示找不到WaaSMedicSvc.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个WaaSMedicSvc.dll文件(挑选合适的版本文件)......
  • 【linux下mysql主从复制操作流程】
    linux下mysql主从复制操作流程在Linux下实现MySQL主从复制(Master-SlaveReplication)是一个常见的需求,用于读写分离、数据备份等场景。以下是一个详细的操作流程,包括每个步骤、注意事项以及总结。一、准备环境安装MySQL确保主服务器(Master)和从服务器(Slave)都已经安装了My......