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"
|