ed (文本编辑器)

✍ dations ◷ 2025-05-14 22:54:33 #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会话。

相关

  • 3D3D可以指:
  • 恋夏38℃胡宇威、吴映洁(鬼鬼)、苑新雨、是元介、王睿、吴芮甄《恋夏38℃》(英语:Summer Fever),2011年由台湾独角先传媒股份有限公司、柏合丽娱乐传媒与福建海峡世纪影视文化有限公司联合
  • 乌兹别克斯坦议会最高议会(乌兹别克语:Oliy Majlis)是乌兹别克斯坦的国家立法机关,实行两院制,由乌兹别克斯坦参议院和乌兹别克斯坦立法院组成。有关问题的审议规则是先由立法院进行,随后提交参议
  • 诺克斯县诺克斯县(英语:Knox County)是位于美国缅因州的一个县。面积2,958平方公里。根据美国2000年人口普查,共有人口39,618。县治罗克兰(Rockland)。成立于1860年3月9日。县名纪念首任战
  • 弗雷迪·琼斯弗雷德里克·查尔斯·“弗雷迪”·琼斯(英语:Frederick Charles "Freddie" Jones,1927年9月12日-2019年7月9日),英国话剧演员,他曾在《爱默戴尔》()中出演 Sandy Thomas。琼斯出生在
  • 八津站八津站(日语:八津駅/やつえき  */?)是位于秋田县仙北市西木町(日语:西木町)小山田字八津,秋田内陆纵贯铁道的秋田内陆线车站。此站是地面车站,设有2面2线的相对式站台。鹰巢方向站
  • 克雷斯韦尔山坐标:72°43′55″S 64°12′41″E / 72.73194°S 64.21139°E / -72.73194; 64.21139克雷斯韦尔山(英语:Mount Cresswell)是南极洲的山峰,位于麦克罗伯特森地,处于杜梅特山东北面
  • 扶余丰扶余丰(韩语:부여풍,?-?),日本称扶余丰璋,为义慈王之子,生卒年不详。是百济的末代国王。扶余丰幼年即被送往倭国(日本)为驻在。660年新罗及唐攻陷百济国都泗沘城,百济遗臣鬼室福信及僧侣道琛等人力守周留城,迎扶余丰归国为王,并与倭及高句丽联军,图谋复国。而后鬼室福信杀道琛,且扶余丰疑鬼室福信叛变,遂于663年6月将其斩首。同年8月,刘仁轨所率唐军于白江口大败倭国与百济之联军,扶余丰逃往高句丽,高句丽灭亡后又为唐所俘,流放至江南,不知所终。扶余丰之子孙流亡日本,天智天皇赐“百济王”为姓予其弟善光(或称禅广
  • 中国人民解放军陆军装甲兵学院中国人民解放军陆军装甲兵学院,简称陆军装甲兵学院,本部位于北京市丰台区,隶属中国人民解放军陆军,是培养装甲兵指挥、参谋、技术保障军官和指挥管理、维修保障士官的综合性高等教育院校。 …… 2017年组建时,中国人民解放军陆军装甲兵学院拥有以工学、军事学为主体、多学科交叉融合的综合性学科体系,在工学、管理学、军事学3个学科门类有6个博士后科研流动(工作)站,取得5个一级学科博士学位授权,有19个博士点;取得6个一级学科、3个二级学科、8个专业学位硕士授权,有50个硕士点;开设18个本科专业。2017年
  • 科学史 (1515年)科学史上的1515年发生了众多事件,本条目撷取其中部分罗列如下: