
- •И.Н.Акуленок
- •Утверждено советом университета
- •Введение
- •Глава 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.1.1. Команды, не использующие адресации строк
Рассмотрим первый тип команд:
h – дает пояснение о последней ошибке.
е [имя файла](edit)– служит для очистки текстового буфера и чтения в нем постоянного файла, имя которого задано в команде. Прежнее содержимое буфера при этом теряется. Эта команда может быть выполнена в начале редактирования или же в процессе работы. В последнем случае она дает возможность начать работу с новым файлом, т.е. начать новый сеанс редактирования, не выходя из редактора. Начало работы с редактором не требует обязательного задания имени файла. Можно вызвать редактор и ввести текст в пустой буфер, а имя файла можно задать позднее в командах
f [имя файла](filename)– выводит или изменяет запомненное имя файла.
w(write)– записать рабочую копию в существующую. Если имя файла не было указано ранее, можно указать его после ввода командыw:
w name_file
374
Можно воспользоваться командой wдля сохранения файла под новым именем. Это второе имя не изменяет первоначальное имя файла, которое редакторedиспользует при вводе одной командыw. При следующем сохранении изменений командойwсохраняется и первоначальное имя файла.
! команда [аргументы]– предназначена для выполнения команд shell без выхода из редактора. Поскольку при вводе команд интерпретатора shell нет необходимости записывать содержимое текстового буфера в файл, они не влияют на редактирование. Когда нужно выполнить несколько команд shell, вы можете осуществить полупостоянный переход в интерпретатор, введя команду «!sh» для создания нового экземпляра shell . Этот новый shell позволит вам ввести столько команд, сколько их потребуется. Реализация команд shell в редакторе обеспечивается за счет того, что shell – это обычная программа, которая может быть запущена в любое время. Пока вы работаете с shell внутри редактора, последний терпеливо ждет, точно так же, как исходный shell ждет окончания редактирования.
Усеченная версия edредакторredне позволяет пользоваться таким приемом. В следующей после!команде можно указывать специальные символы:
%– означает последнее запомненное имя файла;
!– означает последнюю использованную команду, то есть !! повторяет последнюю команду.
q(quit)– выйти из редактора, при этом рабочая копия не переписывается автоматически в существующую. Если файл не изменялся после последней модификации, работа редактораedпрекращается. Если же вы изменили файл и не сохранили изменения, редакторedвыводит вопросительный знак, предоставляя вам возможность сохранит файл командойw. Если же вы хотите выйти, не сохраняя изменений, введите командуqеще раз:
??
qw
q
1.1.2. Команды, использующие один адрес
.а (append)– перейти в режим ввода текста. При этом новый текст размещается после адресуемой строки. Для выхода из режима ввода текста нужно ввести строку, состоящую из единственной точки. Сложность командыappendзаключается в том, что она изменяет режим редактора. Отсюда самая распространенная ошибка: запись команд редактора в файл как текстовых строк и ввод текста вместо команд. Наиболее надежный способ страховки от подобной ошибки – ввести строку, состоящую из одной точки. Тогда редактор переводится из режима ввода текста в командный режим, либо просто печатается текущая строка.
.i(insert)– перейти в режим ввода текста, при этом новый текст размещается перед текущей строкой. Командаinsertпереводит редактор в режим ввода текста. Все, что вводится после этой команды, интерпретируется как текст, вставляемый в файл. Прекратить вставку в текст можно, введя строку, состоящую из единственной точки.
.r имя файла(read)–читает содержимое файла на диске, имя которого в ней указано, и добавляет его к содержимому текстового буфера редактора после заданной строки или после текущей, если номер строки не указан. Различие между командами редактора «e» и «r» состоит в том, что последняя добавляет текст в свободное рабочее пространство без уничтожения его содержимого. Редакторы ОС UNIX не дают возможность читать часть файла. Если вам потребуется прочитать всего несколько строк из файла, его придется скопировать целиком, а затем с помощью редактора удалить ненужные фрагменты.