ed

Поделись знанием:
Перейти к: навигация, поиск

ed
К:Википедия:Статьи без изображений (тип: не указан)

ed — первый стандартный текстовый редактор операционной системы UNIX.

Имеет командно-ориентированный интерфейс, поскольку создавался в те времена, когда мониторов не существовало и стандартным средством ввода-вывода был телетайп.





История и влияния

Редактор был написан Кеном Томпсоном на языке ассемблера PDP-11/20 в 1971 году. Многие функции ed пришли из QED, текстового редактора, созданного в alma mater Томпсона — Калифорнийском университете в Беркли[1]. Кен был хорошо знаком с QED, и ранее портировал его на CTSS[en] и Multics. В его версии QED впервые были реализованы регулярные выражения. Регулярные выражения появились также и в ed, хотя их реализация была произведена в меньшей степени, чем в QED.

Мощным продолжением идей ed является текстовый редактор sam, который был написан для Plan 9. Расширенная версия редактора, известная как ex, впоследствии послужила основой для vi.

Особенности

ed (или его аналог) доступен практически на всех UNIX-подобных операционных системах (и должен быть на системе, соответствующей Single UNIX Specification). Известен своей крайней лаконичностью, практически не даёт никакой обратной связи[2]. Для примера: и сообщение об ошибке, и запрос на подтверждение того, что пользователь желает выйти без сохранения, выглядит как «?». Он не показывает результат изменений текста без требования. Старые версии (около 1981 года) даже не запрашивают подтверждение на выход без сохранения[2]. Такая лаконичность была полезна на старых версиях UNIX, когда роль консоли выполнял телетайп, модемы были медленными, а память — драгоценной. По мере совершенствования компьютерных технологий эти ограничения ослабли и визуальные текстовые редакторы стали нормой.

После появления экранно-ориентированных редакторов ed стал использоваться в первую очередь для автоматической обработки с помощью командной оболочки UNIX, например, для применения патчей. В этом смысле он является родоначальником семейства потоковых редакторов, таких как sed.

Командному режиму ed часто подражали другие текстовые редакторы. Например, Edlin[en] в ранних версиях MS-DOS имел несколько похожий синтаксис. Текстовые редакторы во многих MUD-играх (к примеру, LPMud[en] и его потомках) также имеют синтаксис, похожий на синтаксис ed.

Пример

Пример сессии в ed. Для ясности текст, выводимый редактором, выделен.

a
ed is the standard Unix text editor.
This is line number two.
.
2i
 
.
%l
ed is the standard Unix text editor.$
$
This is line number two.$
3s/two/three/
,l
ed is the standard Unix text editor.$
$
This is line number three.$
w text
65
q

В результате файл будет содержать следующий текст:

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

Работа начинается с пустого файла, команда a добавляет текст (все команды ed состоят из одной буквы). Команда переводит редактор в режим добавления (англ. append mode) на текущей строке. Ввод завершается точкой на отдельной строке. Эти две введённые строки перед точкой сохраняются в буфере файла. Команда 2i переводит редактор в режим вставки (англ. insert mode) в строке номер 2 и вставляет введённый текст (просто пробел в данном случае) перед бывшей второй строкой, которая теперь становится третьей. Для всех команд можно использовать префикс с указанием изменяемой строки.

Общий синтаксис любых команд: [[адрес начальной строки,]адрес конечной строки]команда[параметры]. Пример переноса (англ. move) блока текста из последних четырёх строк файла и добавление его после строки номер 43: $-4,$m43. Символ $ обозначает последнюю строку.

В строке %l строчная буква l означает команду вывода. Префикс данной команды — диапазон вывода, в данном случае %, что является сокращением для 1,$. Это означает, что нужно вывести все строки с первой по последнюю.

После вставки пустой строки текст «This is line number two.» спускается на третью строку. Ошибку можно исправить командой замены 3s/two/three/. Вывод всего текста можно также произвести командой ,l (запятая здесь — синоним %).

w text сохраняет текст в файл, в ответ ed выводит количество записанных символов (65). q производит выход из редактора.

См. также

Напишите отзыв о статье "Ed"

Примечания

  1. D. M. Ritchie and K. L. Thompson, «QED Text Editor», [cm.bell-labs.com/cm/cs/who/dmr/qedman.pdf MM-70-1373-3] (June 1970), reprinted as «QED Text Editor Reference Manual», MHCC-004, Murray Hill Computing, Bell Laboratories (October 1972).
  2. 1 2 Donald A. Norman (1981). «[www.ceri.memphis.edu/people/smalley/ESCI7205_misc_files/The_truth_about_Unix_cleaned.pdf The truth about UNIX]». Datamation.

Ссылки

  • [www.gnu.org/software/ed/ GNU ed]
  • [www.opengroup.org/onlinepubs/9699919799/utilities/ed.html ed]: edit text — команды и утилиты, The Single UNIX® Specification, выпуск 7 от The Open Group  (англ.)
  • [man.cat-v.org/unix-1st/1/ed Руководство из первого издания UNIX, описывающее ed]
  • [plan9.bell-labs.com/magic/man2html?man=ed&sect=1 ed(1)]: text editor — страница справки man по пользовательским командам Plan 9  (англ.) — прямой потомок оригинального ed
  • [www.darwinsys.com/history/hist.html A History of UNIX before Berkeley] раздел 3.1 описывает историю ed

Отрывок, характеризующий Ed

Князь Андрей верхом остановился на батарее, глядя на дым орудия, из которого вылетело ядро. Глаза его разбегались по обширному пространству. Он видел только, что прежде неподвижные массы французов заколыхались, и что налево действительно была батарея. На ней еще не разошелся дымок. Французские два конные, вероятно, адъютанта, проскакали по горе. Под гору, вероятно, для усиления цепи, двигалась явственно видневшаяся небольшая колонна неприятеля. Еще дым первого выстрела не рассеялся, как показался другой дымок и выстрел. Сраженье началось. Князь Андрей повернул лошадь и поскакал назад в Грунт отыскивать князя Багратиона. Сзади себя он слышал, как канонада становилась чаще и громче. Видно, наши начинали отвечать. Внизу, в том месте, где проезжали парламентеры, послышались ружейные выстрелы.
Лемарруа (Le Marierois) с грозным письмом Бонапарта только что прискакал к Мюрату, и пристыженный Мюрат, желая загладить свою ошибку, тотчас же двинул свои войска на центр и в обход обоих флангов, надеясь еще до вечера и до прибытия императора раздавить ничтожный, стоявший перед ним, отряд.
«Началось! Вот оно!» думал князь Андрей, чувствуя, как кровь чаще начинала приливать к его сердцу. «Но где же? Как же выразится мой Тулон?» думал он.
Проезжая между тех же рот, которые ели кашу и пили водку четверть часа тому назад, он везде видел одни и те же быстрые движения строившихся и разбиравших ружья солдат, и на всех лицах узнавал он то чувство оживления, которое было в его сердце. «Началось! Вот оно! Страшно и весело!» говорило лицо каждого солдата и офицера.
Не доехав еще до строившегося укрепления, он увидел в вечернем свете пасмурного осеннего дня подвигавшихся ему навстречу верховых. Передовой, в бурке и картузе со смушками, ехал на белой лошади. Это был князь Багратион. Князь Андрей остановился, ожидая его. Князь Багратион приостановил свою лошадь и, узнав князя Андрея, кивнул ему головой. Он продолжал смотреть вперед в то время, как князь Андрей говорил ему то, что он видел.
Выражение: «началось! вот оно!» было даже и на крепком карем лице князя Багратиона с полузакрытыми, мутными, как будто невыспавшимися глазами. Князь Андрей с беспокойным любопытством вглядывался в это неподвижное лицо, и ему хотелось знать, думает ли и чувствует, и что думает, что чувствует этот человек в эту минуту? «Есть ли вообще что нибудь там, за этим неподвижным лицом?» спрашивал себя князь Андрей, глядя на него. Князь Багратион наклонил голову, в знак согласия на слова князя Андрея, и сказал: «Хорошо», с таким выражением, как будто всё то, что происходило и что ему сообщали, было именно то, что он уже предвидел. Князь Андрей, запихавшись от быстроты езды, говорил быстро. Князь Багратион произносил слова с своим восточным акцентом особенно медленно, как бы внушая, что торопиться некуда. Он тронул, однако, рысью свою лошадь по направлению к батарее Тушина. Князь Андрей вместе с свитой поехал за ним. За князем Багратионом ехали: свитский офицер, личный адъютант князя, Жерков, ординарец, дежурный штаб офицер на энглизированной красивой лошади и статский чиновник, аудитор, который из любопытства попросился ехать в сражение. Аудитор, полный мужчина с полным лицом, с наивною улыбкой радости оглядывался вокруг, трясясь на своей лошади, представляя странный вид в своей камлотовой шинели на фурштатском седле среди гусар, казаков и адъютантов.
– Вот хочет сраженье посмотреть, – сказал Жерков Болконскому, указывая на аудитора, – да под ложечкой уж заболело.
– Ну, полно вам, – проговорил аудитор с сияющею, наивною и вместе хитрою улыбкой, как будто ему лестно было, что он составлял предмет шуток Жеркова, и как будто он нарочно старался казаться глупее, чем он был в самом деле.
– Tres drole, mon monsieur prince, [Очень забавно, мой господин князь,] – сказал дежурный штаб офицер. (Он помнил, что по французски как то особенно говорится титул князь, и никак не мог наладить.)
В это время они все уже подъезжали к батарее Тушина, и впереди их ударилось ядро.
– Что ж это упало? – наивно улыбаясь, спросил аудитор.
– Лепешки французские, – сказал Жерков.
– Этим то бьют, значит? – спросил аудитор. – Страсть то какая!
И он, казалось, распускался весь от удовольствия. Едва он договорил, как опять раздался неожиданно страшный свист, вдруг прекратившийся ударом во что то жидкое, и ш ш ш шлеп – казак, ехавший несколько правее и сзади аудитора, с лошадью рухнулся на землю. Жерков и дежурный штаб офицер пригнулись к седлам и прочь поворотили лошадей. Аудитор остановился против казака, со внимательным любопытством рассматривая его. Казак был мертв, лошадь еще билась.
Князь Багратион, прищурившись, оглянулся и, увидав причину происшедшего замешательства, равнодушно отвернулся, как будто говоря: стоит ли глупостями заниматься! Он остановил лошадь, с приемом хорошего ездока, несколько перегнулся и выправил зацепившуюся за бурку шпагу. Шпага была старинная, не такая, какие носились теперь. Князь Андрей вспомнил рассказ о том, как Суворов в Италии подарил свою шпагу Багратиону, и ему в эту минуту особенно приятно было это воспоминание. Они подъехали к той самой батарее, у которой стоял Болконский, когда рассматривал поле сражения.
– Чья рота? – спросил князь Багратион у фейерверкера, стоявшего у ящиков.
Он спрашивал: чья рота? а в сущности он спрашивал: уж не робеете ли вы тут? И фейерверкер понял это.