Ed

Тип |  утилита UNIX[вд] и строковый редактор[вд]
Автор |  Bell Laboratories by
Разработчик |  Ken Thompson
Интерфейс |  TTY
Операционная система  |  UNIX
Первый выпуск |  1971
Аппаратная платформа  |  Unix

ed (произносится /iːdiː/)[1] — первый стандартный текстовый редактор операционной системы UNIX.

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

## Содержание

* 1 История и влияния
* 2 Особенности
* 3 Пример
* 4 См. также
* 5 Примечания
* 6 Ссылки

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

[править | править код]

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

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

## Особенности

[править | править код]

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

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

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

## Пример

[править | править код]

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

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

ed is the standard Unix text editor.$

This is line number two.$
3s/two/three/

ed is the standard Unix text editor.$

This is line number three.$
w text

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

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` производит выход из редактора.

## См. также

[править | править код]

* sed

## Примечания

[править | править код]

1. ↑ Computerphile (6 июля 2018), Where GREP Came From - Computerphile, Архивировано 11 ноября 2018, Дата обращения: 7 июля 2018 Источник (неопр.). Дата обращения: 25 декабря 2018. Архивировано 11 ноября 2018 года.
2. ↑ D. M. Ritchie and K. L. Thompson, «QED Text Editor», MM-70-1373-3 Архивировано 3 февраля 2015 года. (June 1970), reprinted as «QED Text Editor Reference Manual», MHCC-004, Murray Hill Computing, Bell Laboratories (October 1972).
3. ↑ 1 2 Donald A. Norman. The truth about UNIX (неопр.) // Datamation. — 1981. Архивировано 16 апреля 2014 года.

## Ссылки

[править | править код]

* GNU ed
* `ed`: edit text — команды и утилиты, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)
* Руководство из первого издания UNIX, описывающее ed
* `ed(1)`: text editor — страница справки man по пользовательским командам Plan 9 (англ.) — прямой потомок оригинального ed
* A History of UNIX before Berkeley раздел 3.1 описывает историю ed

Текстовые редакторы

Unix / Linux|

* Ed
* Elvis
* gedit
* Kate
* KWrite
* Leafpad
* Nano
* NEdit
* Sed
* Mousepad
* Vi

DOS|

* ChiWriter
* Multi-Edit
* WordPerfect
* Лексикон
* Микромир
* Слово и Дело
* Фотон

Windows|

* AkelPad
* BirEdit
* Bred
* Crimson Editor
* EditPlus
* EmEditor
* Notepad2
* Notepad++
* Notepad GNU
* PolyEdit
* Programmer’s Notepad
* PSPad
* RJ TextEd
* SoloPad
* SynWrite
* Write
* WinEdt
* WordPad
* Блокнот

Кроссплатформенные|

* Acme
* Atom
* CKeditor
* Emacs
* J
* JEdit
* JOE
* Komodo Edit
* Medit
* SciTE
* Sublime Text
* UltraEdit
* Vim
* Geany
* CudaText
* TEA
* Textadept

SDK|

* Colorer
* Scintilla
* SynEdit

Функции|

* Автодополнение
* Автоформатирование
* Подсветка синтаксиса
* Предиктивный ввод
* Сворачивание
* Отступы

Команды Unix

Утилиты POSIX.1-2008

* admin
* alias
* ar
* asa
* at
* awk
* basename
* batch
* bc
* bg
* c99
* cal
* cat
* cd
* cflow
* chgrp
* chmod
* chown
* cksum
* cmp
* comm
* command
* compress
* cp
* crontab
* csplit
* ctags
* cut
* cxref
* date
* dd
* delta
* df
* diff
* dirname
* du
* echo
* ed
* env
* ex
* expand
* expr
* false
* fc
* fg
* file
* find
* fold
* fort77
* fuser
* gencat
* get
* getconf
* getopts
* grep
* hash
* head
* iconv
* id
* ipcrm
* ipcs
* jobs
* join
* kill
* lex
* link
* ln
* locale
* localedef
* logger
* logname
* lp
* ls
* m4
* mailx
* make
* man
* mesg
* mkdir
* mkfifo
* more
* mv
* newgrp
* nice
* nl
* nm
* nohup
* od
* paste
* patch
* pathchk
* pax
* pr
* printf
* prs
* ps
* pwd
* qalter
* qdel
* qhold
* qmove
* qmsg
* qrerun
* qrls
* qselect
* qsig
* qstat
* qsub
* read
* renice
* rm
* rmdel
* rmdir
* sact
* sccs
* sed
* sh
* sleep
* sort
* split
* strings
* strip
* stty
* tabs
* tail
* talk
* tee
* test
* time
* touch
* tput
* tr
* true
* tsort
* tty
* type
* ulimit
* umask
* unalias
* uname
* uncompress
* unexpand
* unget
* uniq
* unlink
* uucp
* uudecode
* uuencode
* uustat
* uux
* val
* vi
* wait
* wc
* what
* who
* write
* xargs
* yacc
* zcat

GNU Coreutils

Файловые утилиты|

* chgrp
* chown
* chmod
* cp
* dd
* df
* dir
* dircolors
* install
* ln
* ls
* mkdir
* mkfifo
* mknod[англ.]
* mv
* rm
* rmdir
* shred
* sync
* touch
* vdir

Текстовые утилиты|

* cat
* cksum
* comm
* csplit
* cut
* expand
* fmt
* fold
* head
* join
* md5sum
* nl
* od
* paste
* ptx[англ.]
* pr
* sha1sum
* sort
* split
* sum
* tac
* tail
* tr
* tsort[англ.]
* unexpand
* uniq
* wc

Shell-утилиты|

* basename
* chroot
* date
* dirname
* du
* echo
* env
* expr
* factor[англ.]
* false
* groups[англ.]
* hostid
* id
* link
* logname
* nice
* nohup
* pathchk
* pinky
* printenv[англ.]
* printf
* pwd
* readlink
* seq
* sleep
* stat
* stty
* tee
* test
* true
* tty
* uname
* unlink
* users
* who
* whoami
* yes

другие утилиты|

* size
* Start-stop-daemon
* Surfraw

Кен Томпсон

Операционные системы|

* UNIX
* Plan 9

Языки программирования|

* B
* Bon
* Go

Программное обеспечение|

* Belle
* ed
* grep
* Sam
* Space Travel
* Thompson shell

Другое|

* UTF-8