ред (программное обеспечение)

Построчно-ориентированный текстовый редактор для Unix
ред
Оригинальный автор(ы)Кен Томпсон
Разработчик(и)AT&T Bell Laboratories
Первоначальный выпуск1973, 51–52 года назад
Написано вС
Операционная системаUnix , Unix-подобный , Plan 9
ПлатформаКроссплатформенный
ТипТекстовый редактор
ЛицензияПлан 9: Лицензия MIT

ed (произносится как отдельные буквы, / ˌ ˈ d / ) [1] строчный редактор для Unix и Unix-подобных операционных систем. Это была одна из первых частей операционной системы Unix, которая была разработана в августе 1969 года. [2] Он остаётся частью стандартов POSIX и Open Group для операционных систем на базе Unix, [3] наряду с более сложным полноэкранным редактором vi .

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

Текстовый редактор ed был одним из первых трех ключевых элементов операционной системы Unix — ассемблера , редактора и оболочки — разработанных Кеном Томпсоном в августе 1969 года на PDP-7 в AT&T Bell Labs . [2] Многие функции ed пришли из текстового редактора qed, разработанного в alma mater Томпсона Калифорнийском университете в Беркли . [4] Томпсон был хорошо знаком с qed и перереализовал его в системах CTSS и Multics . Версии qed Томпсона были примечательны тем, что впервые реализовали регулярные выражения . Регулярные выражения также реализованы в ed, хотя их реализация значительно менее общая, чем в qed.

Деннис М. Ритчи создал то, что Дуг Макилрой позже назвал «окончательным» ed, [5] и аспекты ed продолжили влиять на ex , который в свою очередь породил vi . Неинтерактивная команда Unix grep была вдохновлена ​​общим специальным использованием qed и более позднего ed, где команда g/re/pвыполняет глобальный поиск по регулярному выражению и выводит строки , содержащие совпадения. Потоковый редактор Unix, sed, реализовал многие из функций скриптов qed , которые не поддерживались ed в Unix. [6] [ не удалось проверить ] [7]

Функции

Возможности ed включают в себя:

Известный своей краткостью, ed, совместимый с телетайпными терминалами, такими как Teletype Model 33 , почти не дает визуальной обратной связи [8] и был назван ( Питером Х. Салусом ) «самым враждебным к пользователю редактором из когда-либо созданных», даже по сравнению с современным (и печально известным) TECO [2] . Например, сообщение, которое ed ​​выдаст в случае ошибки и когда он захочет убедиться, что пользователь хочет выйти без сохранения, будет «?». Он не сообщает текущее имя файла или номер строки и даже не отображает результаты изменения текста, если это не запрошено. Более старые версии (около 1981 г.) даже не запрашивали подтверждения, когда команда выхода была выдана без сохранения изменений пользователем. [8] Такая краткость была уместна в ранних версиях Unix, когда консоли были телетайпами , модемы были медленными, а память была драгоценной. По мере совершенствования компьютерных технологий и ослабления этих ограничений редакторы с большей визуальной обратной связью стали нормой.

Страница руководства для ed

В современной практике ed редко используется в интерактивном режиме, но находит применение в некоторых сценариях оболочки . Для интерактивного использования ed был включен в редакторы sam , vi и Emacs в 1980-х годах. ed можно найти практически в каждой доступной версии Unix и Linux , и как таковой он полезен для людей, которым приходится работать с несколькими версиями Unix. В операционных системах на базе Unix некоторые утилиты, такие как SQL*Plus, запускают ed в качестве редактора, если переменные окружения EDITOR и VISUAL не определены. [9] Если что-то идет не так, ed иногда оказывается единственным доступным редактором. Часто это единственный случай, когда он используется в интерактивном режиме.

Версия ed, предоставляемая GNU, имеет несколько переключателей для улучшения обратной связи. Использование ed -v -p:обеспечивает простую подсказку и позволяет получать более полезные сообщения обратной связи. [10] Переключатель -pопределен в POSIX с XPG2 (1987). [3]

Команды ed часто имитируются в других редакторах, работающих на основе строк. Например, EDLIN в ранних версиях MS-DOS и 32-битных версиях Windows NT имеет несколько похожий синтаксис, а текстовые редакторы во многих MUD ( например, LPMud и его потомки) используют синтаксис, подобный ed. Однако эти редакторы, как правило, более ограничены в функциях.

Пример

Вот пример расшифровки сеанса ed. Для ясности команды и текст, набранный пользователем, напечатаны обычным шрифтом , а вывод из ed подчеркнут .

аed — стандартный текстовый редактор Unix.Это строка номер два..
.ed — стандартный текстовый редактор Unix.$ $ Это строка номер два.$w текст.txt633s/two/three/ed — стандартный текстовый редактор Unix.$ $ Это строка номер три.$w текст.txt65д

Конечным результатом является простой текстовый файл, text.txtсодержащий следующий текст:

ed — стандартный текстовый редактор Unix.
Это строка номер три.

Начиная с пустого файла, aкоманда добавляет текст (все команды ed являются отдельными буквами). Команда переводит ed в режим вставки , вставляя символы, которые следуют за ней, и завершается одной точкой на строке. Две строки, введенные до точки, попадают в буфер файла. 2iКоманда также переходит в режим вставки и вставляет введенный текст (в нашем случае — одну пустую строку) перед второй строкой. Все команды могут иметь префикс в виде номера строки для работы с этой строкой.

В строке ,lстрочная буква L обозначает команду list. Перед командой стоит диапазон, в данном случае ,это сокращение для 1,$. Диапазон — это два номера строк, разделенных запятой ( $означает последнюю строку). В ответ ed перечисляет все строки, от первой до последней. Эти строки заканчиваются знаками доллара, поэтому пробелы в конце строк хорошо видны.

После того, как пустая строка вставлена ​​в строку 2, строка, которая читается как "Это строка номер два." теперь на самом деле является третьей строкой. Эта ошибка исправляется с помощью , команды подстановки. Она применит ее к правильной строке; после команды следует текст для замены, а затем замена. Перечисление всех строк со строкой теперь показано как правильное.3s/two/three/3,l

w text.txtзаписывает буфер в файл, text.txtзаставляя ed ответить 65 — числом символов, записанных в файл. qзавершит сеанс ed.

Культурные ссылки

Проект GNU имеет множество шуток вокруг ed, размещенных на его веб-сайте. Кроме того, в документации glibc упоминается код ошибки, вызываемый EDего описанием (errorstr) просто одним вопросительным знаком, отмечая, что «опытный пользователь поймет, что не так». [11]

Смотрите также

Ссылки

  1. Computerphile (2018-07-06), Откуда взялся GREP – Computerphile, заархивировано из оригинала 2021-12-11 , извлечено 2020-10-21
  2. ^ abc Salus, Peter H. (2005). Демон, Гну и Пингвин. Groklaw . Архивировано из оригинала 2010-05-05.
  3. ^ ab ed – Справочник по оболочке и утилитам, Единая спецификация UNIX , версия 4 от The Open Group
  4. DM Ritchie и KL Thompson, «QED Text Editor», MM-70-1373-3 (июнь 1970 г.), переиздано как «QED Text Editor Reference Manual», MHCC-004, Murray Hill Computing, Bell Laboratories (октябрь 1972 г.).
  5. ^ Макилрой, МД (1987). Исследовательский ридер Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Bell Labs. 139.
  6. ^ Рэймонд, Эрик (2003). «Искусство программирования в Unix» (PDF) . Архивировано (PDF) из оригинала 15 июня 2023 г. . Получено 14 июня 2023 г. .
  7. ^ "О ранней истории и влиянии Unix". Некоторое время спустя возникла потребность в другой специализированной программе, gres, для замены: g/re/s. Ли Макмахон взялся написать ее и вскоре предвидел, что не будет конца семейству: g/re/d, g/re/a и т. д. По мере развития его концепции она превратилась в sed…
  8. ^ ab Дональд А. Норман (1981). "Правда о UNIX" (PDF) . Datamation . Архивировано из оригинала (PDF) 2014-04-16.
  9. ^ Администрирование SQL*Plus. Доступ 23.07.2016.
  10. ^ ed(1)  –  Руководство по основным командам Linux
  11. ^ "Библиотека GNU C - Коды ошибок". www.gnu.org .
  • ed: редактировать текст – Справочник по оболочкам и утилитам, Единая спецификация UNIX , версия 4 от The Open Group
  • Страница руководства из первого издания Unix с описанием редакции.
  • ed(1): текстовый редактор –  Руководство программиста Unix версии 7
  • ed(1): текстовый редактор –  Plan 9 Programmer's Manual, Volume 1, прямой потомок оригинального издания.
  • Домашняя страница GNU ed
  • В разделе 3.1 «История UNIX до Беркли» описывается история создания системы.
Взято с "https://en.wikipedia.org/w/index.php?title=Ed_(software)&oldid=1272174909"