- •И.Н.Акуленок
 - •Утверждено советом университета
 - •Введение
 - •Глава 1. Текстовые редакторы
 - •1.1. Редактор ed
 - •1.1.1. Команды, не использующие адресации строк
 - •1.1.2. Команды, использующие один адрес
 - •1.1.3. Команды, использующие два адреса
 - •1.1.4. Нумерация строк
 - •1.1.5. Примеры использования команд
 - •1.2. Редактор VI и ex
 - •1.2.1. Редактирование нескольких файлов
 - •1.2.2. Вставка текста из одного файла в другой
 - •1.3. Потоковый редактор sed
 - •1.4. Контрольные вопросы
 - •Глава 2. Командные процессоры ос unix
 - •2.1. Типы командных процессоров
 - •2.2. Идентификация и смена оболочки
 - •2.3. Запуск shell и стартовых shell–файлов
 - •2.4. Установка переменных среды
 - •2.5. Псевдонимы команд
 - •2.6. Выполнение .Profile после его изменения
 - •2.7. Контрольные вопросы
 - •Глава 3. Интерпретатор shell
 - •3.1. Shell–переменные
 - •3.1.1. Задание значений переменных и их отмена
 - •3.1.2. Экспорт переменных
 - •3.2. Специальные символы
 - •3.2.1. Использование двойных кавычек и апострофа
 - •3.2.2. Обратные апострофы
 - •3.2.3. Обратная наклонная черта
 - •3.3. Позиционные переменные
 - •3.4. Код завершения процесса
 - •3.5. Конвейеры и списки
 - •3.6. Композиции команд
 - •3.5.1. Порожденный shell – оператор круглые скобки ( )
 - •3.5.2. Оператор списка – фигурные скобки {}
 - •3.6. Контрольные вопросы
 - •Глава 4. Программные структуры
 - •4.1. Команда test
 - •4.1.1. Условия проверки файлов
 - •4.1.2. Условия проверки строк
 - •4.1.3. Условия сравнения целых чисел
 - •4.1.4. Сложные условия
 - •4.2. Команда expr
 - •4.3. Команда read
 - •4.4.Условный оператор if
 - •4.5. Оператор цикла for
 - •4.6. Операторы цикла while и until
 - •4.7. Оператор вызова case
 - •4.8. Функции в shell
 - •4.9. Контрольные вопросы
 - •5. Создание сценария командного процессора
 - •5.1. Пример простейшего сценария
 - •5.2. Основные этапы разработки сценария
 - •5.3. Отладка командных процедур
 - •5.4. Выполнение shell–программ
 - •5.5. Создание новых команд
 - •5.6. Контрольные вопросы
 - •Список литературы
 - •Оглавление
 - •Акуленок Ирина Николаевна
 
1.2.1. Редактирование нескольких файлов
При первом вызове редактора viможно сразу указать несколько редактируемых файлов, а затем перемещаться между ними, применяя команды редактораex.
% vi файл1 файл2
По этой команде сначала редактируется первый файл, файл1. После окончания редактирования по команде:w редактораexэтот файл записывается (сохраняется), а по команде:nначинает редактироваться следующий файл,файл2. С помощью командыvi *вы можете задать редактирование всех файлов в каталоге.
При необходимости получить имя текущего файла задайте команду :f.
Команда :argsвыведет имена всех файлов, которые заданы в командной строке, и поместит в квадратные скобки имя текущего файла.
С помощью команды :eредактораexможно также в любое время переключиться на другой файл, который в командной строке не указан. Если вам необходимо в редактореvi отредактировать еще один файл, сохраните сначала текущий файл,(:w), а затем наберите команду
:e имя_файла.
Редактор vi«помнит» имена двух файлов, текущего и альтернативного. На эти имена можно сослаться, воспользовавшись символами%(имя текущего файла) и#(имя альтернативного файла).
Символ #особенно полезен при использовании команды:e,поскольку позволяет легко переключаться между двумя файлами. Команда:e#– это всегда команда “переключиться на другой файл”. В некоторых системах команда[CTRL–^]редактораvi является синонимом команды:e#, набирать эту клавиатурную комбинацию необходимо в командном режиме.
Если вы вначале не сохраните текущий файл, то редактор viне позволит переключиться на другой файл с помощью команды:eили:n(если только вы не прикажите ему сделать это безоговорочно, добавив после команды восклицательный знак).
Команда :e! также достаточно полезна. Она отвергает результаты редактирования и возвращает пользователя к последней сохраненной версии текущего файла.
Символ %, в противоположность символу#, полезен главным образом при записи содержимого результатов редактирования в новый файл. Например, вторую версию файлаletterможно сохранить посредством команды
:w %.new, не набирая команды
:w letter.new
1.2.2. Вставка текста из одного файла в другой
Когда буферу обмена присваивается однобуквенное имя, у пользователя появляется удобный способ перемещения текста из одного файла в другой. Именованные буферы не очищаются, когда по команде :eредакторviзагружает новый файл. Таким образом, путем копирования или удаления текста из одного файла в буфер (или в несколько именованных буферов, если это необходимо), вызова нового файла посредством команды:eи вставки содержимого именованного буфера в новый файл производится перемещение редактируемого материала между файлами.
Ниже показано, как переместить текст из одного файла в другой:
Команда “f4yy– копирует 4 строки текста в буфер.
Команда :w– сохраняет файл.
Команда :e letter– загружает новый файл в редактор. Переместите курсор в то место, куда будет помещен скопированный текст.
Команда “fp– поместит ранее скопированный текст из именованного буфераfпод курсором.
Если вы скопируете текст в буфер и наберете имя этого буфера прописными буквами, то новый текст будет добавлен к уже находящемуся в буфере.
Например, по команде“f4yyможно скопировать четыре строки в буфер, который носитимя f. Если вы затем переместитесь в какое–либо место и наберете команду“F6yy(букваFдолжна быть прописной), в этот же буферf будет добавлено еще шесть строк (т.е. всего их станет десять). Вы можете копировать в буфер, имя которого задается прописной буквой, столько данных, сколько вам заблагорассудится. Когда необходимо вывести весь скопированный текст, для задания имени буфера воспользуйтесь строчной буквой (как в команде“fp). Для того чтобы очистить буфер и начать заполнение сначала, укажите его имя строчной буквой(“fy…)еще раз.
