Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методы / Куликова Н.В., Петровская Е.Н. (ч.1,2)

.pdf
Скачиваний:
57
Добавлен:
11.06.2015
Размер:
2.62 Mб
Скачать

Литература

1.Фолькердинг П., Рейчард К., Фостер-Джонсон Э. Установка и конфигурирование LINUX: учебный курс – СПб: Издательство «Питер», 1999.

2.Билл Болл, Хойт Даф и др. Red Hat Linux 8/9 : Настольная книга пользователя. Издательство DiaSoft, 2004.

РАЗДЕЛ 8. ТЕКСТОВЫЕ РЕДАКТОРЫ В ОС LINUX.

Упаковщики и архиваторы

В этом разделе рассматриваются только текстовые редакторы для ASCII-файлов (таких, как исходные тексты программ, txt-файлы и т.д.).

Все рассматриваемые редакторы поддерживают основные операции редактирования: набор и правка текста, поиск и замена, работа с блоками (отметка, копирование, перемещение, удаление), загрузка/сохранение файлов.

Большинство редакторов при сохранении файла создают резервную (backup) копию, но в отличие от Dos, где она имеет то же имя, что и файл и

расширение .bak, в Unix принято давать резерв- Замечание ным копиям то же имя, что и у файла, но с

тильдой «~» на конце (файл «compress.c» резервная копия«compress.c~»).

Самый древний: vi

Vi был первым «настоящим» текстовым редактором под Unix. Его реализации есть во всех подвидах Unix. Сделан он был программистами исключительно для собственного использования, и для обычного пользователя весьма неудобен. Практически единственное, что надо о нем знать – это как отличить его и как из него выходить, случайно оказавшись в нем (хотя для системных администраторов его знать все же желательно – иногда, например, при «починке» системы, ничего, кроме vi нет в принципе).

При загрузке vi (в Linux используется его «улучшенная» версия vim – Vi IMproved) экран выглядит приблизительно так, как на иллюстрации (символами «~» обозначаются строки за концом файла):

131

/dev/hda4

1

/

ext2

defaults

1

vfat

/dev/hda1

0

/c

defaults

0

ext2

/dev/hda2

0

/d

defaults,ro

2

swap

/dev/hda3

0

swap

defaults

0

ext2

/dev/fd0

0

/mnt/floppy

noauto

0

iso9660

/dev/cdrom

0

/mnt/cdrom

noauto,ro

0

iso9660

/dev/cdhdd

0

/mnt/hdd

noauto,ro

0

proc

none

0

/proc

defaults

0

ext2

/dev/hdb4

0 0

/mnt/hdb4

noauto,ro

/mnt/hdb2

ext2

/dev/hdb2

0 0

noauto,ro

 

 

~

~

~

~

~

«/etc/fstab» [readonly] 10 lines, 756 characters

Не вдаваясь в подробности работы vi (режим просмотра, режим редактирования и т.д.): обычно для выхода из него достаточно набрать «:q» и нажать Enter. В том случае, если загруженный файл был изменен, то выйти без сохранения всегда можно, набрав «:qa!» («:»– вызов командного режима, «q» – выход, «a»

– из всех окон сразу, «!» – выход несмотря на наличие изменений). Если при нажатии «:» в нижней строке не появляется приглашение (тоже «:»), то надо сначала нажать три раза Esc.

132

Замечание

Замечание

Совет

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

У vi есть любопытная особенность: если его «убить» (kill) во время редактирования файла, то он посылает письмо владельцу, уведомляя о том, что редактировался такой-то файл и его, возможно, удастся восстановить такойто командой.

Существует множество «клонов» vi elvis, vile и т.д. (в имени каждого из них присутствует буквосочетание «vi»). Есть даже версии vi для X-Window (в том числе написанные с использованием Motif). Приверженцы vi создали к нему множество расширений, включая многоуровневое «undo» и цветовое выделение синтаксиса. Но, тем не менее, это все тот же самый vi, и обычному пользователю связываться с ним просто не имеет смысла.

Простой и быстрый: joe

Joe очень похож, по набору команд, на редактор WordStar. Он активно использует комбинации клавиш Ctrl+K буква. Однако в отличие от WordStar комбинации Ctrl+Q буква не применяются.

Основные комбинации клавиш приведены в таблице, но, нажав Ctrl-K H можно вызвать справку по клавишам (убирается она той же комбинацией Ctrl-K H).

133

Клавиши

Действие

 

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

Backspace

Удалить символ перед курсором

Ctrl+D

Удалить символ под курсором (аналог Del)

Ctrl+J

Удалить до конца строки

Ctrl+Y

Удалить строку

Ctrl+_

Отмена последней операции редактирования

Ctrl+T T

Переключение вставка/замена (insert/overtype)

 

Поиск и замена

 

Поиск/замена; для замены надо в опциях (запрашиваются

Ctrl+K F

послевводаобразца) указатьR.

Поиск/замена понимает регулярные выражения (несколь-

 

ко специального вида), нажав Ctrl-K H можно, полу-

 

читьподсказку.

Ctrl+L

Повтор последней операции поиска/замены

 

Работа с блоком

Ctrl+K B

Отметить начало

Ctrl+K K

Отметить конец

Ctrl+K C

Копировать

Ctrl+K M

Переместить (не Ctrl-K V, как в WordStar/Borland!)

Ctrl+K Y

Удалить

Ctrl+K W

Записать в файл

Ctrl+K R

Прочитать из файла

 

Работа с файлами

Ctrl+K D

Сохранить

Ctrl+K X

Сохранить и выйти

Ctrl+C

Выйти без сохранения

Ctrl+K E

Открыть файл (в новом окне)

Любую операцию можно прервать, нажав Ctrl+C.

Joe поддерживает редактирование нескольких файлов одновременно – каждый в своем «окне». Подробности можно узнать

всправке.

Уjoe есть одна «неприятная» особенность: символ «`» (обратный апостроф) используется как префикс для ввода специальных символов. Поэтому бывают проблемы при вставке текста из другого окна при помощи мыши – к примеру, строка, содержащая «`b», приведет к вставке в текст символа с ASCII-кодом 2 (Ctrl+B). Чтобы вставить в текст сам «`», надо нажать его дважды.

134

Если вместо «joe» набрать «jstar», то joe запустится в режиме полной эмуляции клавиатуры WordStar, если «jmacs» – то в ре-

Замечание жиме эмуляции Emacs, «jpico» – будет эмулировать Pico.

Как в MC: mcedit

Mcedit – это редактор, который используется в MC. Он похож на привычный всем редактор из Norton Commander'а.

Mcedit понимает те же ключи «-c» и «-a», что и MC. Кроме того, поскольку это, собственно, и есть MC, он использует настройки MC, к примеру, «Display bits». Будучи запущен в цвете, mcedit умеет «расцвечивать» файлы .tex и .c (впрочем, по умолчанию цвета не самые приятные).

Основные клавиши редактирования приведены в таблице 8, но можно также посмотреть подсказку, нажав F1. Кроме того, F9 вызывает меню, в котором есть еще множество команд. Mcedit можно переключить в режим «эмуляции» Emacs, пере-

ключив в окне F9-> Options-> General пункт «Key emulation» в «Emacs».

Таблица 8

Клавиши

Действие

1

2

 

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

Backspace

Удалить символ перед курсором

Ctrl+D

Удалить символ под курсором (аналог Del)

Ctrl+Y

Удалить строку

Ctrl+U

Отмена последней операции редактирования

Ins

Переключение вставка/замена (insert/overtype)

 

Поиск и замена

F7

Поиск (можно использовать регулярные выражения)

Shift+F7

Повтор последней операции поиска

F4

Замена

 

Работа с блоком

F3

Первое нажатие – начало отметки блока, второе – конец

(в консоли для отметки можно пользоваться

 

Shift+стрелками, как в Word и Borland)

135

Продолжение табл. 8

1

2

F5

Копировать

F6

Переместить

F8

Удалить

Ctrl+F

Записать в файл

Shift+F5

Прочитать из файла

 

Работа с файлами

F2

Сохранить

F10

Выйти(еслифайлизменен, тоспросит, сохранятьилинет)

Ctrl+O

Открыть файл

Какие еще бывают текстовые редакторы в Linux.

ed – является самым старым – даже древнее vi. Это строчный, а не экранный редактор (те, кто встречался с программой edlin в Dos, поймут что это такое). Для «простого смертного» освоение ed – практически непосильная (а главное – совершенно ненужная) задача. Единственная причина, по которой он здесь упоминается – предупредить, что им пользоваться не следует.

pico – обычно устанавливается вместе с почтовой программой pine. Он является практически полной копией редактора, используемого в Pine при составлении писем.

jed – умеет эмулировать Emacs (по умолчанию он запускается в этом режиме) и WordStar. Это сравнительно небольшой и быстрый редактор – того же класса, что и joe.

jove – является облегченной версией Emacs («Jonathan's Own Version of Emacs»).

we – вариант редактора (точнее, оболочки для разработки программ) WPE, работающий в текстовом режиме.

vfte – вариант редактора FTE для консоли.

Кроме всего прочего, есть множество текстовых редакторов, работающих в графической оболочке X-Window – обязательно есть xedit, а одним из самых удобных считается nedit. Их мы будем рассматривать позже, вместе с X-Window.

136

Упаковщики и архиваторы

Упаковщики и архиваторы: в чем отличие? Такие программы, как pkzip/pkunzip и arj, совмещают две разных функции: архивирование, т.е. помещение содержимого нескольких файлов в один (с сохранением информации о каждом файле), и упаковку, т.е. сжатие файла.

В Unix эти функции по историческим причинам реализуются отдельными программами: для упаковки используются compress, gzip, bzip2, а для архивации – tar.

Программы-архиваторы для резервного копирования. Кроме tar есть еще программы cpio и dump/restore, ноихмырассматриватьнебудем. Кроме того, в любом Unix есть программа ar,

Замечание которая хоть и умеет делать архивы из произвольных файлов, в первую очередь, предназначена

для создания библиотек объектных файлов, и будет рассматриваться в разделе «Компиляция и сборка программ».

У каждого архиватора и упаковщика есть свое стандартное расширение для имени файла, в таблице 9 приведены большинство из них.

Таблица 9

Расширение

Тип файла

.gz

Файл, упакованный gzip

.Z

Файл, упакованный compress

.z

Файл, упакованный pack

.bz2

Файл, упакованный bzip2

.tar

Архив tar

.tar.gz

Архив tar, упакованный gzip

.tgz

То же, что .tar.gz

.taz

То же, что .tar.Z

.zip

Упакованный архив zip/pkzip

.arj

Упакованный архив arj

.a

Библиотека ar

137

«Классический» упаковщик compress

Сompress упаковывает указанный ему файл и добавляет к имени расширение .Z.

Пример (файл-пример termcap взят из директории /etc):

bobby:~% ls -l

 

 

 

total 428

1

ivanov

lab5

434898

-rw-r--r--

Sep 10 12:21 termcap

 

 

bobby:~% compress termcap

 

 

bobby:~% ls -l

 

 

 

total 200

1

ivanov

lab5

203137

-rw-r--r--

Sep 10 12:21 termcap.Z

 

 

bobby:~% _

 

 

 

 

Для распаковки используется программа uncompress:

 

bobby:~% uncompress termcap.Z

 

bobby:~% ls -l

 

 

 

total 428

1

ivanov

lab5

434898

-rw-r--r--

Sep 10 12:21 termcap

 

 

bobby:~% _

 

 

 

 

 

Если указать ключ «-r» и имя директо-

 

рии, то будут упакованы/распакованы

Предупреждение

все файлы в этой директории. Этот

ключ не означает «упаковать всю ди-

 

 

ректорию в один файл»!

Более новый упаковщик: gzip

Gzip был создан как более мощная замена для compress. Ис-

пользуется он точно так же:

 

 

bobby:~% ls -l

 

 

total 428

1 ivanov

lab5

434898

-rw-r--r--

Sep 10 12:21 termcap bobby:~% gzip termcap bobby:~% ls -l

total 143

138

-rw-r--r-- 1 ivanov lab5 144719 Sep 10 12:21 termcap.gz

bobby:~% _

Gzip позволяет достигать больших степеней сжатия, чем compress, и поэтому почти вытеснил его. Поскольку большее сжатие занимает больше времени, есть возможность указать gzip'у, как паковать – быстрее (и слабее) или лучше (и медленнее). Для этого служат ключи от «-1» (самое быстрое сжатие)

до «-9» (наибольшее сжатие).

 

 

bobby:~% ls -l

 

 

 

total 428

1

ivanov

lab5

434898

-rw-r--r--

Sep 10 12:21 termcap

 

 

bobby:~% gzip -9 termcap

 

 

bobby:~% ls -l

 

 

 

total 142

1

ivanov

lab5

143832

-rw-r--r--

Sep 10 12:21 termcap.gz bobby:~% _

По умолчанию используется «-6».

Для распаковки применяется программа gunzip. Gunzip умеет также распаковывать файлы .Z и .z.

Самый современный упаковщик: bzip2

Bzip2 был создан сравнительно недавно – в 1996 году. Он использует при паковке алгоритм Burrows-Wheeler (вместо

Lempel-Ziv, применяемого в compress/gzip/zip), что позволяет достигать еще больших степеней сжатия. Платой за это является несколько большее время упаковки.

Используемые bzip2 ключи почти идентичны gzip'овым. Но bzip2 по умолчанию использует наилучшее сжатие («-9»).

bobby:~% ls -l

 

 

total 428

1 ivanov

lab5

434898

-rw-r--r--

Sep 10 12:21 termcap bobby:~% bzip2 termcap bobby:~% ls -l

139

total 115

1 ivanov

lab5

116736

-rw-r--r--

Sep 10 12:21 termcap.bz2 bobby:~% _

Общие свойства compress, gzip и bzip2

Во-первых, при упаковке и распаковке эти программы «заменяют» исходный файл упакованным/распакованным следующим образом: они читают содержимое исходного файла и пишут результат в файл с таким же именем, но с добавлением/удалением расширения (.Z/.gz/.bz2), а затем удаляют исходный файл. Поэтому, если на диске недостаточно места для обоих файлов одновременно (или есть ограничения по дисковой квоте), то упаковка/распаковка может не удаться.

Во-вторых, при упаковке и распаковке все они стараются сохранить максимум информации о файле – упакованному/распакованному файлу устанавливаются те же права доступа

ивремя, что и исходному.

В-третьих, если не указывать имя файла, то упаковываться/распаковываться будет стандартный ввод, а результат отправляться на стандартный вывод. Это позволяет использовать упаковщики в конвейерах, к примеру, сразу ужимая результаты какой-либо вычислительной программы.

В-четвертых, если указать ключ «-c» («cat»), то вместо замены исходного файла результат будет отправлен на стандартный вывод.

В-пятых, для каждого из форматов есть программа, позволяющая просмотреть содержимое файла, не распаковывая его на диске. Для .Z и .gz это zcat, zmore и zless, а для .bz2

bzcat и bzless.

Кроме того, по файлам .Z и .gz можно вести поиск «a-la grep» – для этого служит программа zgrep.

Вообще-то, zcat – это синоним «gunzip -c», а zless и bzless – очень простые скрипты.

Замечание Поскольку zgrep также является скриптом, то несложно написать его аналог для bzip2.

140