ed (文本编辑器)

✍ dations ◷ 2025-09-13 18:41:11 #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会话。

相关

  • 孔继涵孔继涵(1739年-1783年)字体生,一字埔孟,号荭谷,别号南州,自号昌平山人,山东曲阜人。清朝官员,藏书家、金石学家、刻书家。六十七代衍圣公孔毓圻之孙,孔传钲之子。生于清高宗乾隆四年,精
  • 埃克曼数埃克曼数(Ekman number,简称Ek)是用来描述海洋及大气的地球物理学现象的无量纲数。埃克曼数是流体的黏滞力和行星自转产生的科里奥利力的比值,埃克曼数得名自瑞典海洋学家沃恩·
  • 利斯本利斯本(Lisburn,意思是“赌博者们的堡垒”),是一个位于北爱尔兰利斯本区、贝尔法斯特西南的城市。它本是一个区,其城市地位在2002年作为伊莉莎伯二世登基五十周年(Golden Jubilee)
  • 崔荆南崔荆南,字晴江,四川华阳县(今属成都市)人。清朝翰林,又善昆曲演奏。崔荆南于道光二十七年(1847年)考中二甲第二十一名进士,改翰林院庶吉士。年少即得入词林,顾影自喜。可惜未及散馆而
  • 玛蒂娜·希尔玛蒂娜·希尔(德语:Martina Hill,1974年7月14日-)是一位德国女演员,主要表演喜剧。在柏林剧院工作室(Theaterstudio)学习后,主要在那里表演舞台剧。1998年起活跃于广播电台。2003年出
  • 黄荻钧黄荻钧(1982年12月1日-),台湾女演员,音乐制作人及歌手。黄荻钧年幼时曾拍摄小一数学课本封面。 因饰演台湾民视偶像剧《新兵日记》陆军新训中尉营政战官一角,以及《新兵日记之特战
  • 亚维拉的德兰亚维拉的德兰(拉丁语:Teresia Abulensis,西班牙语:Teresa de Ávila;1515年3月28日-1582年10月4日),又称耶稣的德兰(拉丁语:Teresia a Iesu),旧译德肋撒或圣女德肋撒,洗名德肋撒·桑切斯·德·塞佩达-阿乌马达(西班牙语:Teresa Sánchez de Cepeda y Ahumada),是16世纪的西班牙天主教神秘主义者、加尔默罗会修女、反宗教改革作家,同时为天主教会圣人,通过默祷过沉思生活的神学家。她是加尔默罗会的改革者,并被认为与十字若望一
  • 约书亚·切普特盖|}约书亚·基普鲁伊·切普特盖(Joshua Kiprui Cheptegei,1996年9月12日-)是一名乌干达长距离赛跑运动员。在2017年,他成为2017年世界田径锦标赛10000米赛跑银牌得主。在2018年,他创造了15公里赛跑的新的世界纪录。在2019年,他成为了世界越野锦标赛的冠军。那一年他也在2019年世界田径锦标赛10000米赛跑男子决赛中赢得金牌。2020年8月14日,切普特盖在国际田联钻石联赛摩纳哥站打破男子5000米世界纪录。2020年10月7日,切普特盖以26分11秒00打破男子
  • 马蒂亚斯·鲁斯特马蒂亚斯·鲁斯特(德语:Mathias Rust,1968年6月1日-)德国飞行员。鲁斯特是红场事件的事件人物,在1987年,当他19岁时,他从于特森起飞,经过法罗群岛、冰岛、挪威、瑞典和芬兰飞往莫斯科。他躲开了苏联的空中防线后,降落到了莫斯科红场旁的Vasilevski Spusk。他降落在了前苏联首都的心脏——克里姆林宫附近。前苏联法院对鲁斯特判处监禁2年。一年以后,经过外交交涉,鲁斯特被保释,由其父母领回前联邦德国家中。
  • 哈尔沃·比克兰哈尔沃·比克兰(挪威语:Halvor Birkeland,1894年10月30日-1971年6月26日),挪威男子帆船运动员。他曾代表挪威参加1920年夏季奥林匹克运动会帆船比赛,获得一枚金牌。他的哥哥拉斯穆斯同样是帆船选手。