Компьютерные сети и технологии
Привет
Пользователь:

Пароль:



[ ]
[ ]

В сети
Гостей: 7
Участников: 0
На странице: 1
Участников: 3870, Новичок: ritasovurova

Разное

(Занятие 6) Редактор текстов ed
Операционная система UNIX (руководство пользователя)
на Thursday 27 July 2006
от список авторов отправить по email статья печатать статья
в Сетевые Операционные Системы ОС > Linux - Unix



6.17. Дополнительные возможности
6.17.1. Временный выход из редактора


Иногда бывает удобно на некоторое время выйти из редактора, для выполнения какой-либо другой команды, не покидая редактор. Это можно сделать с помощью команды временного выхода "!".

Если ввести:

    !команда_системы 

процесс редактирования приостанавливается и выполняется указанная команда. Редактор сообщает о завершении этой команды, печатая еще один восклицательный знак "!", после этого можно снова возобновлять редактирование.

6.17.2. Восстановление после останова

Если произойдет неожиданный останов, система UNIX пытается сохранить содержимое буфера редактора в специальном файле ed.hup. Позднее вы можете попытаться восстановить текст из этого файла одним из двух способов. Первый: вы можете воспользоваться командой shell, чтобы переписать файл ed.hup в файл с другим именем. Второй: вы можете войти в редактор ed и воспользоваться командой f для переименования в буфере:

        ed ed.hup<CR>

        928
        f myfile<CR>

        myfile 


6.17.3. Командные файлы редактора

Если достаточно сложный набор операций редактирования должен быть выполнен над многими файлами, это проще всего сделать путем создания командного файла редактора, содержащего нужные операции, и последующего применения этого командного файла поочередно ко всем файлам.

Предположим, например, что нужно заменить каждое слово "версия1" на "версия2" и каждое слово "1985" на "1986" в большом количестве файлов. Поместим в файл "list" следующий строки:

        g/версия1/s//версия2/g
        g/1985/s//1986/g
        w
        q

после этого можно воспользоваться командами:

        ed file1 < list
        ed file2 < list
        ...

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

С помощью интерпретатора команд системы можно более или менее легко просмотреть набор файлов циклически.

6.17.4. Режим шифрования

При обработке зашифрованных файлов, редактор вызывается с параметром "-x":

    ed -x имя_файла<CR>

В этом случае перед началом копирования файла запрашивается ключ, по которому производится шифрование и расшифровка информации при всех обменах с файлом.

Переход в режим шифрования возможен и в процессе сеанса. С этой целью пользователь может установить текущий ключ с помощью команды:

    x 

После чего будет выдана подсказка:

        Entering encrypting mode!
        Key:

и пользователь набирает ключ (при этом символы не отображаются на экране терминала). Признаком окончания ввода ключа является ввод CR. Ввод ключа нулевой длины отменят режим шифрования.

6.17.5. Программа grep

Иногда требуется найти случаи употребления некоторого слова или образца в ряде файлов для того, чтобы отредактировать их или просто проверить наличие или отсутствие. Можно отредактировать каждый файл в отдельности и отыскать там представляющий интерес образец, однако, если файлов много, это может оказаться достаточно утомительным, а если файлы очень велики, то просто невозможным из-за ограничения редактора ed.

Программа grep языка управления заданиями предназначена для печати всех строк, соответствующих указанному образцу. Так, команда:

    grep "нечто" файл1 файл2 файл3 ...<CR>

находит "нечто" везде, где оно встречается в файлах. Команда "grep" указывает также файл, в котором была найдена каждая строка и (если задан параметр "-n") номер строки.

Образец, обозначенный "нечто", может быть любым образцом, который вы используете в редакторе, т.к. grep и ed используют один и тот же механизм поиска образцов. Если образец содержит какие-либо неалфавитные символы, его целесообразно всегда заключать в апострофы ('...'), поскольку многие такие символы имеют специальное значение для интерпретатора команд shell. Если не поместить их в апострофы, интерпретатор команд попытается обработать их перед тем, как они будут переданы команде grep.

Существует также возможность находить строки, которые не содержат указанного образца. Команда:

    grep -v "нечто" файл1 файл2 ...<CR>

находит все строки, которые не содержат "нечто". Ключ "-v" должен находиться в указанной позиции. С помощью команд "grep" и "grep -v" можно выбирать строки, содержащие некоторую комбинацию образцов. Например, для получения всех строк, содержащих "x", но не содержащих "y", можно использовать команду:

    grep x файл ... | grep -v y<CR>

(символ "|" означает, что результат работы первой команды используется в качестве входа второй команды).

6.17.6. Команды помощи

Обратите внимание, что когда вы редактируете файл, редактор ed иногда в ответ на введенную вами команду отвечает знаком "?". Знак "?" означает диагностическое сообщение при обнаружении ошибки. Команды помощи выдают вам короткое сообщение, объясняющее причину ошибки. Существуют две команды помощи:
h - отображает короткое сообщение об ошибке;
H - устанавливает в ed режим распечатки короткого сообщения об ошибке каждый раз, когда появляется "?". Для отмены этого режима вновь введите H.

Если попытаться завершить работу с ed, не записав измененный буфер в файл, то появится знак "?". Когда появится "?", введите "h":

        q<CR>

        ?
        h<CR>

        warning: expecting "w"


6.18. Сообщения редактора

Диагностические сообщения, выдаваемые редактором в процессе работы, крайне лаконичны, это:

WRITE ERROR - ошибка записи, связанная либо с отсутствием места на устройстве, либо со сбоем аппаратуры;
Entering encrypting mode! - свидетельствует о включении режима шифрования;
MEM? -выдается в режиме дозаписи в буфер редактора при достижении предельного размера буфера;
?(file) - при начале работы или после команд "e", "r", "f" означает, что указанный файл (file) отсутствует; после команды "w" - означает, что запись в файл запрещена.
Если при вводе команды зарегистрирована какая-либо другая ошибка, редактор сообщит об этом, выдав символ "?".



Поиск Компьютерные сети и технологии

Copyright © 2006 - 2020
При использовании материалов сайта ссылка на xnets.ru обязательна!