Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.




Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

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"


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют