Редактирования текста

В этом подразделе описывается, как с помощью редакторов создавать и редактировать текстовые файлы. В начале подраздела дается объяснение, что такое редактор текста и как он работает. Затем приводится описание двух редакторов: строчный редактор ed и экранный редактор vi

4.2.1. Что такое редактор текста

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

Редакторы текста системы LINUX являются интерактивными программами: они принимают от вас команды и выполняют требуемые функции.

4.2.2. Как работает текстовый редактор

4.2.2.1. Буфера редактора текста

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

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

Текст в буфере организуется в строки. Строка текста является просто набором символов, которые появляются на экране горизонтально, и завершается строка при нажатии клавиши RETURN. Иногда строка может выходить за рамки экрана. Некоторые терминалы отображают непоместившееся продолжение строки на следующей строке, другие - нет.

4.2.3. Режимы

Текстовый редактор работает в двух режимах: командный и режим ввода. Когда вы начинаете сессию с редактороm, то автоматически устанавливается командный режим. В этом режиме вы можете перемещаться внутри файла, осуществлять поиск по шаблону в файле, изменять существующий текст. Однако не можете создать файл в командном режиме. Чтобы сделать это, надо перейти в режим ввода. В этом режиме любой введенный вами символ помещается в буфер как часть вашего текстового файла. После того, как вы ввели весь текст и решили запустить команды редактора, то вы должны возвратиться в командный режим.

4.2.4. Построчный редактор

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

Этот текстовый редактор предоставляет команды, с помощью которых вы можете изменить строки, напечатать строки, читать и записывать в файл и вводить текст. Кроме того, вы можете вызвать редактор ed из shell программы.

Построчный редактор ed работает с видеотерминалом и с печатающим терминалом. Он также может работать по малоскоростным телефонным линиям. Редактор vi может быть использован только с видеотерминалом.

4.2.5. Экранный редактор

К экранному редактору вы можете получить доступ с помощью команды vi. Экранный редактор vi является дисплей-ориентированным, интерактивным программным средством. Он позволяет вам обозревать файл при редактировании постранично. Этот редактор работает наиболее эффективно на видеотерминалах, оперирующих со скоростью 1200 бод и выше.

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

Экранный редактор предлагает вам набор команд. Например, команда number позволяет вам перемещать курсор внутри файла. Другие команды прокручивают вперед и назад файл на экране, помогают изменить существующий текст или создать новый текст. Дополнительно к своему набору команд экранный редактор может иметь доступ к командам построчного редактора. В табл. 6 приведены характеристики редакторов ed и vi.

Таблица 6
Характеристики редакторов

Характеристика ed vi
Рекомендуенмый тип терминала Видеотерминал или печатающий терминал Видеотерминал
Скорость Настраивается на низкоскоростные и высокоскоростные линии передачи данных Наиболее эффективно работает с высокоскоростными линиями передачи данных (1200 бод и выше)
Эксплуатационная гибкость Может быть указан для запуска из командного языка shell, также как используется во время редактирования Может быть использован интерактивно во время редактирования
Сложность Изменяет текст быстро; занимает сравнительно мало времени на обработку Изменяет текст легко, однако может занять достаточно много ресурсов компьютера
Производительность Обеспечивает полный набор команд редактирования. Стандартный текстовый редактор системы LINUX Обеспечивает собственные команды редактирования и также распознает команды построчного редактора
Преимущества Чтобы использовать редактор ed вы должны изучить несколько команд vi позволяет вам увидеть результаты редактирования текста немедленно. (Когда вы используете ed, то выполнение изменений и просмотр результатов являются отдельными шагами)

4.2.6. Использование shell

Каждый раз, когда вы регистрируетесь в системе LINUX, то вступаете во взаимодействие с shell, которое продолжается до выхода из системы. Однако, если вы используете текстовый редактор, то ваше взаимодействие с shell приостанавливается, оно восстанавливается, как только закончите работу с редактором.

shell подобна другим программам, за исключением того, что вместо выполнения одного задания, как cat или ls, она является основой при вашем взаимодействии с системой LINUX. Первой функцией shell является действие как команды интерпретатора между вами и системой. Как интерпретатор, shell транслирует ваши запросы на язык, понятный компьютеру и выполняет их.

4.2.7. Применение средств системы

Используя shell различными способами, вы увеличиваете используемые системные средства. Кроме применения shell для запуска отдельных программ, вы также можете:

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

Дополнительно к функциям интерпретатора языка команд shell является языком программирования. Более подробно shell описан в разд. 9.

4.2.8. Окружение компьютера

shell может быть использован для управления вашим окружением. Когда вы регистрируетесь в системе LINUX, shell автоматически устанавливает окружение компьютера для вас. По умолчанию установленное окружение включает:
HOME - ваш регистрационный справочник;
LOGNAME - ваше регистрационное имя;
PATH - путь, который shell принимает для поиска исполняемых
файлов или команд (обычно PATH=:/usr/bin:/usr/usr/bin).

Переменная PATH говорит shell, где искать исполняемую программу, вызванную командой. Кроме того, она используется каждый раз, когда выдается команда.

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

Обычно .profile выполняет некоторые или все из следующих задач: проверка почты, установка параметров даты, установка характеристик терминала, назначение символа или строки символов в качестве вашей регистрационной подсказки, назначение функций стирания и удаления клавишам.

Вы можете определить задачи, которые хотите в .profile, либо изменить в любое время. За инструкциями по модификации .profile обратитесь к разд. 9.

Теперь проверьте, существует ли файл .profile. Если вы не находитесь в собственном справочнике, то воспользуйтесь командой cd. Затем проверьте файл .profile, задав команду:

	cat .profile 

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

4.2.9. Программирование в shell

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

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

Например, вы можете скомбинировать три команды системы LINUX (date, who, wc) в простой процедуре shell и назвать его users. Эта процедура отражает дату, время и количество пользователей, работающих в вашей системе. С помощью редактора vi создайте файл users:

	vi users<CR>

Редактор выведет пустую страницу на вашем экране и будет ждать ввода текста. Введите три команды на одной строке:

	date; who | wc -l 

Затем запишите текст в файл и выйдите из файла, задав команду:

	:wq 

Сделайте файл users исполняемым:

	chmod ug+x users<CR>

Теперь попытайтесь запустить этот файл. На экране появится информация, подобная:

	$ users<CR>
        Sat  Mar  11   16:40:32   EST   1989
              4
        $

Команда распечатывает дату и количество пользователей (4).

4.2.10. Программирование с помощью awk

awk предлагает вам управлять задачами обработки данных и восстановления информации. В разд. 7 приводится концепция языка и структура программы awk.

Типичная программа awk состоит из выражения "шаблон-действие". awk-программа находит во вводном файле строку, соответствующую шаблону и выполняет над ней указанное действие. Процесс продолжается до тех пор, пока весь вводной файл не будет прочитан.

Еще материалы по теме: