ed (文本编辑器)

✍ dations ◷ 2025-11-11 09:06:22 #ed (文本编辑器)

ed是用于Unix和类Unix操作系统的行编辑器。它是Unix操作系统在1969年8月开发出来的最初部分。它仍旧是POSIX和Open Group的基于Unix的操作系统标准的一部分,与更加完备的全屏编辑器vi并列。

ed文本编辑器是Unix操作系统最初的三个要件之一:汇编器、编辑器和shell,它们是Ken Thompson在1969年8月于AT&T贝尔实验室在PDP-7上开发的。ed的很多特征来自qed(英语:QED_(text_editor))文本编辑器,它是Thompson的母校加州大学伯克利分校开发的 。Thompson非常熟悉qed,曾经在CTSS和Multics系统上重新实现过它。Thompson版本的qed曾因首先实现了正则表达式而著名。正则表达式也实现于ed中,尽管相比qed中的这里实现的要相当不具一般性。

Dennis M. Ritchie生产了后来Doug McIlroy所描述的“终极”ed,ed的各方面转而影响了ex,它依次又产生了vi。非交互式Unix命令grep受到qed和后来的ed常见特定用法的启发,它们的命令g/re/p含义是全局查找正则表达式re并打印包含它的行。Unix流式编辑器sed实现了未被Unix上的ed所支持的qed(英语:QED (text editor))的很多脚本特征。

ed的特征包括:

著称于它的简洁性,ed几乎不给予视觉反馈,故而曾被Peter H. Salus(英语:Peter H. Salus)称为“曾有过的最仇视用户的编辑器”,即使是比较于同时代的(因复杂而声名狼藉的)TECO(英语:TECO (text editor))。例如,在有错误的情况,或它想要确认用户希望不保存退出的时候,ed产生的消息就是“?”。它不报告当前文件名或行号,甚至不显示变更文本的结果,除非发出要求。更老版本(大约1981年)在发起退出命令而用户没有保存变更的时候甚至不提示确认。这种简洁性对Unix的早期版本是适当的,那时控制台是电传打字机,调制解调器很慢,而内存是珍贵的。计算机技术进步使得这些限制解除了,有更多视觉反馈的编辑器成为常规。

在当前实践中,ed极少交互式使用,但却在一些shell脚本中有所使用。对于交互式使用,ed于1980年代被sam(英语:Sam_(text_editor))、vi和Emacs编辑器取代。ed事实上可以在所有可获得的Unix和Linux版本上找到,因此对必须在多个版本Unix上工作的人有用。在基于Unix的操作系统上,一些实用工具如SQL Plus(英语:SQL Plus)运行ed作为编辑器,如果EDITOR和VISUAL环境变量没有定义的话。如果在故障的情况下,ed有时是唯一可获得的编辑器。这几乎是它交互式使用的唯一时刻。

ed命令在其他基于行的编辑器中经常被模仿。例如,在早期版本的MS-DOS和32-bit版本的Windows NT中,EDLIN(英语:edlin)有某种程度上类似的语法,在很多MUD(LPMud(英语:LPMud)和后代)中的文本编辑器使用类似ed的语法。但是这些编辑器典型的在功能上更加有限。

下面是一个ed会话的例子抄录。为了清晰,命令和用户键入的文本使用正常字体,而来自ed的输出被加粗。

aed is the standard Unix text editor.This is line number two..2i .,led is the standard Unix text editor.$$This is line number two.$3s/two/three/,led is the standard Unix text editor.$$This is line number three.$w text65q

最后结果是包含下列文本的一个简单文本文件:

ed is the standard Unix text editor. This is line number three.

开始于一个空文件,a命令附加文本,所有ed命令都是单一字母。这个命令安置ed进入“插入模式”,插入随后的字符,并由只有一个单一的点的行终止。在此点终止前键入的两行进入文件缓冲区。2i命令也进入插入模式,并在第2行之前插入键入的文本,这里是空行。所有命令都可以前缀一个行号来在此行上进行操作。

在行,l中,l表示列表命令。这个命令前缀着一个范围,这里是,,它是1,$的简写。范围是由逗号分隔的两个行号,$意味着最后一行。作为回应,ed列出所有行,从最先至最后。这些行用美元号终结,所以在行尾的空白明显可见。

一旦空行被插入到第2行前,读作“This is line number two”的行,现在实际上是第3行。这个错误使用3s/two/three/命令来更正,这是替换命令。3指定应用这个命令的那个行;随后是要被替换的文本,接着是要替代成的文本。现在用,l命令行出的行是正确的了。

w text命令写缓冲区到文件“text”,使得ed用“65”来响应,这是写到文件中的字符数目。q命令结束ed会话。

相关

  • yellow fever黄热病(法语:la fièvre jaune ; 英语:Yellow Fever, Yellow Jack, Yellow Plague,俗称黄杰克、黑呕,有时又称美洲瘟疫)是一种急性病毒病。症状通常包括发烧、冷颤、食欲下降、恶
  • 井上苑子井上苑子(日语:いのうえ そのこ  */?,1997年12月11日-),日本女性创作歌手、演员。兵库县神户市出身。昵称そんちゃん、sonko。
  • 温璜温璜(1585年-1645年),初名以介,字于石,后改宝忠,浙江乌程县(今属湖州市)人。明末官员,崇祯末科进士。官至徽州府推官。清军攻破南京后,温璜率民兵自守,徽州城陷落,自刎殉国。温璜为大学士
  • 人浪'墨西哥人浪'(英语:Mexican wave),也称为“波浪舞”,是体育比赛里(尤其球类比赛)常见的看台观众席的欢乐游戏,表达助威、欢庆等,有点像啦啦队。而且这种人浪之所以称为“墨西哥人浪
  • 泰达控股天津泰达投资控股有限公司,简称泰达控股,成立于1984年12月,是中国天津滨海新区的一个主营区域开发与房地产、公用事业、制造业、金融和现代服务业的大型国有公司。泰达控股的唯
  • 阿布哈兹空军阿布哈兹空军是一个由阿布哈兹控制的小型空军。阿布哈兹空军的大部分装备是继承自苏联时期。俄罗斯也可能援助了一些二手的飞机,但没有确凿的阿布哈兹购买飞机的报道。Single
  • 晏河晏河又称晏家河,位于中国河南省东南部,是潢河左岸支流,发源于新县西部陡山河乡白沙关,向东北流经新县陡山河乡、吴陈河镇和光山县晏河乡,最后于文殊乡张畈汇入潢河。全长45公里,流
  • 凯斯·杰瑞凯斯·杰瑞(英语:Keith Jarrett,1945年5月8日-),美国爵士乐与古典钢琴家,作曲家。早期与鼓手Art Blakey合作。后来和萨克斯风手Charles Lloyd、小号手Miles Davis合作。1983年,和低音提琴手Gary Peacock还有鼓手Jack DeJohnette组成了他个人的钢琴三重奏。
  • 博尔顿2013年至2014年赛季博尔顿2013年至2014年赛季(英语:2013–14 Bolton Wanderers F.C. season)是博尔顿在英格兰足球联赛第115个赛季,亦是自2012年降级第二级的英格兰足球冠军联赛后的第二个赛季,去季以第7位结束赛季。本季球衣继续由阿迪达斯制造及供称。由于球迷、本地社区和政客的压力,俱乐部被迫放弃与放贷公司“”的球衣赞助广告,改为博尔顿大学有关连的可持续发展能源公司“”。2013年6月11日俱乐部公布新会徽设计,按1970年代末期的会徽现代化,重新加上兰开夏郡红玫瑰及创会年份“1877
  • 言语知觉的运动理论言语知觉的运动理论(Motor theory of speech perception),是一种认为人们通过辨认发音的声道姿势而非语言的发音习惯来理解话语的假说。它最初声称言语知觉是通过一个人类天生特有的特殊模块完成的。虽然这个模块在近几年的理论中得到认证,但人们还是认为言语运动系统的角色不仅是产生发音,还有检测它们。相比于言语知觉这个领域,该假设在领域外获得的关注更多。而镜像神经元的发现使得其关注度更加高。镜像神经元将运动的产生与认知联系起来,其中包括了由声道产生的运动。该理论最初由阿尔文·利伯曼和富兰