Редактор ed – интерактивный редактор, который был написан Биллом Джоем (Bill Joy) из университета Беркли. Это один из первых программных продуктов данного класса. Он был создан еще в то время, когда для работы с UNIX использовались простые терминалы телетайпного типа – единственные из доступных в то время типов терминалов.
Возможности ed следует знать по четырем причинам.
1. В какой бы системе UNIX вы ни работали, в ней всегда можно найти старый надежный редактор ed, который в командном процессоре Борна, Си и Корна работает одинаково, без каких–либо местных различий.
2. Базовые команды ed легко освоить и применять их для простых операций при создании файлов и быстрого их исправления (что особенно удобно для работы с короткими сценариями командного процессора и профилями регистрации).
3. Редактор ed позволяет использовать регулярные выражения – конструкции, которые применяются в других областях UNIX (grep и sed).
4. Редактор ed является основой для многих других текстовых редакторов, поэтому знание его команд будет полезным и в других редакторах.
Работа с редактором начинается с ввода его имени, за которым следует имя редактируемого файла.
Например,
$ ed first
Если файла не существует, то он будет создан редактором. Непосредственно после ввода команды содержимое файла становиться доступным для редактирования. В командной строке допускается указывать только одно имя файла. Редактор ed сообщает размер файла в символах (он не совпадает с размером файла, поскольку редактор ed не учитывает невидимые символы конца строки), а под ним находится курсор. Когда вы пользуетесь редактирующей программой, вы работаете не с самим файлом, а с его копией, расположенной в буфере редактора, поэтому при ошибке редактирования с исходным файлом еще можно иметь дело, если не сохранять данные буфера.
Редактор имеет два режима работы: командный режим и режим ввода текста.
В первом из них редактор ожидает ввода команд. Все, что вводится, интерпретируется как команды, позволяющие изменять или печатать строки, читать или записывать файлы на диск, переходить в режим ввода. По умолчанию редактор всегда запускается в командном режиме.
В режиме ввода текста любой напечатанный вами текст будет добавлен в специальный буферный файл. Фактически вы редактируете временную копию своего исходного файла – файла buffer. На ваш исходный файл это пока никакого влияния не оказывает. Существует только один буферный файл, поэтому редактор ed может редактировать в каждый момент лишь один файл. Буферизованный подход позволяет вам отменить последние внесенные изменения.
Переключение режимов производится очень просто, гораздо труднее помнить о необходимости такого переключения. В командном режиме редактор ed в случае ошибочного действия сразу же сообщит об этом, выводя вопросительный знак.
Для перехода в командный режим достаточно ввести строку текста, состоящую из единственной точки. Такая строка не становится частью файла, а вы переходите в командный режим. Теперь можно воспользоваться любой командой, вводя ее и нажимая клавишу Enter.
Команды ed имеют простую и регулярную структуру: ноль, один или два адреса предшествуют односимвольной команде, после которой могут располагаться ее аргументы. Адреса задают одну или несколько строк из буфера. Команда может не иметь адреса, тогда редактирование происходит с текущей строкой. Если вы вводите незнакомую команду, редактор ответит вам знаком «?». Этот же результат вы получите, если ввели некорректный поиск.
Все команды редактора односимсвольные и делятся на три категории: