Наши партнеры

UnixForum






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

Библиотека сайта rus-linux.net

Глава 12. Программы для работы с текстом

Предыдущий раздел Оглавление Следующий раздел

12.2. Программы для просмотра текстов в разных форматах

Где-то я читал, что в традициях UNIX было создавать отдельную команду для каждого элементарного действия. Это наблюдение хорошо иллюстрируется наличием в Linux целой совокупности отдельных программ для просмотра файлов. Конечно, если вы работаете в каком-либо файловом менеджере, типа Midnight Commander или Konqueror, то вы будете использовать встроенные в них средства просмотра файлов. Но в некоторых случаях, может оказаться полезным и знание того, как просмотреть содержимое того или иного файла, работая просто в терминале.

12.2.1 Традиционные средства UNIX для просмотра текстовых файлов

Самым простым средством просмотра файла является, наверное, команда cat. Выведя содержимое текущего каталога с помощью команды ls, вы можете также вывести на экран содержимое любого из имеющихся файлов командой cat. Правда возникает одно неудобство: если файл большой, то в результате на экране остаются только последние его строки, все остальное "убегает вверх”. Можно, конечно, пролистать несколько экранов с помощью клавиш <Shift>+<PgUp>, но возможность эта тоже ограничена (некоторой величиной, задаваемой в окружении, по умолчанию — величиной в 1000 строк).

Для организации постраничного вывода существует команда-фильтр more. Её можно применять в двух эквивалентных вариантах:

[user]$ cat file.txt | more

или

[user]$ more file.txt

Команда less представляет собой улучшенный и доработанный вариант команды more, который рекомендуется использовать вместо more во всех случаях. Имейте в виду, что команда less используется для вывода на экран страниц интерактивной подсказки man.

Для просмотра только нескольких последних строк текстового файла существует специальная команда tail, которой в качестве параметра можно указать количество выводимых строк. Можно предположить, что наличие такой команды было очень полезно в те времена, когда текстовые файлы создавались с помощью программы cat, путем прямого ввода с терминала, таким вот примерно образом:

[user]$ cat >> file.txt

В этом случае после любого перерыва в работе просто необходимо было просмотреть последние из введенных строк, чтобы вспомнить, на чем была остановлена работа.

Однако те времена давно уже прошли. Для создания текстов стали использовать текстовые редакторы, а для сохранения –не простые ASCII-файлы, а специальные, достаточно изощренные, форматы, позволяющие сохранить не только сам текст, но и информацию об абзацах, страницах, стилях, шрифтах и много что еще. И для просмотра таких файлов стали требоваться специальные программы (на сленге компьютерщиков — вьюеры), которые не выводят на экран все специальные символы форматирования, а преобразуют их в соответствующие отступы, выступы, пробелы, шрифты и т. д. Рассмотрим такие просмотрщики для двух распространенных форматов файлов.

12.2.2 Программа Acrobat Reader (версия 4.05)

Программа Acrobat Reader предназначена для просмотра файлов формата Portable Document Format (pdf), который широко распространен в компьютерном мире и используется в разных операционных системах и на разных платформах. В этот формат легко преобразуются документы формата PostScript. Файлы формата pdf очень часто встречаются в Сети. Не обязательно иметь возможность создавать такие файлы (программы их создания распространяются на коммерческой основе), но уметь их читать надо. Как раз для этого и служит программа Acrobat Reader фирмы Adobe Systems Incorporated, распространяемая бесплатно как в версии для Windows, так и в версиях для UNIX, и в частности для Linux. В настоящее время версия 4.05 этой программы для Linux может быть бесплатно получена на сайте фирмы http://www.adobe.com (для Windows уже выложена версия 5.0).

Для установки программы Acrobat Reader 4.05 вам потребуется 12 Мбайт дискового пространства, а для работы с программой — 32 Мбайт ОЗУ. Если у вас была установлена версия 3.0 этой программы, ее необходимо предварительно удалить.

Прежде чем начать установку, выберите один из двух возможных вариантов установки: сетевой или локальный (на отдельном компьютере).

Локальная инсталляция гарантирует вам доступ к программе на данном компьютере и может обеспечить значительно большую производительность (особенно в сравнении с работой по загруженной сети). Для локальной инсталляции Вы, естественно, должны иметь право записи в тот каталог, куда будет устанавливаться программа.

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

Однако, сетевая инсталляция имеет и некоторые недостатки. Сервер должен быть высоконадежным и инсталлируемые файлы должны быть установлены в каталог, который должен монтироваться одинаковым образом (в одну и ту же точку монтирования) на всех рабочих станциях сети.

По умолчанию программа Acrobat Reader устанавливается в каталог /usr/local/Acrobat4 (проверьте с помощью команды df, что на соответствующем разделе диска достаточно свободного места).

Если вы получили файл с программой Acrobat Reader с Web-сайта, требуется вначале разархивировать установочные файлы с помощью программ gunzip и tar. После этого вам необходимо перейти в каталог, содержащий установочный скрипт и запустить его:

[root]# ./INSTALL

Инсталляционный скрипт выводит на экран несколько вопросов, в частности о том, в какой каталог разместить файлы программы. На каждый вопрос предлагается вариант ответа, который можно принять, просто нажав клавишу <Enter>. Если предлагаемый по-умолчанию ответ вас не устраивает, введите собственный вариант ответа. В остальном надо просто следовать инструкциям, выдаваемым программой установки. Если вы где-то ошиблись, можно прервать установку комбинацией <Ctrl>+<C> и начать все заново.

В конце концов, появляется сообщение о том, что установка успешно завершена (естественно, по-английски, что-то вроде "installed successfully").

После установки в том каталоге, куда вы установили программу (напомню, что по-умолчанию это /usr/local/Acrobat4), создаются несколько подкаталогов:

  • каталог bin содержит скрипт для запуска программы,
  • каталог Reader содержит файлы подсказки и некоторые платформенно-зависимые файлы (смотри примечание ниже),
  • каталог Fonts содержит шрифты,
  • каталог Browsers содержит скрипт для запуска Acrobat Reader из браузера Netscape.

Примечание

Если вы выбрали сетевой вариант инсталляции, то в каталоге Reader будут установлены несколько вариантов бинарных файлов, и скрипт запуска программы будет выбирать тот вариант бинарного файла, который нужен для рабочей станции, с которой производится вызов программы!

Наконец, в завершение инсталляции, вы можете сделать так, чтобы не было необходимости каждый раз для запуска программы Acrobat Reader сначала переходить в каталог, где расположен скрипт запуска. Для этого надо создать ссылку на этот скрипт в одном из каталогов, указанных в переменной $PATH. Для примера создадим такую ссылку в каталоге /usr/bin:

[root]# ln -s /usr/locale/Acrobat4/bin/acroread /usr/bin/acroread

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

Теперь вы можете запустить Acrobat Reader (естественно, для этого должен быть запущен графический режим), используя команду acroread или щелчком по иконке на рабочем столе.

Если вы не создали ссылку, то надо указывать в командной строке полный путь к скрипту запуска:

[user]$ /usr/local/Acrobat4/bin/acroread

Для того, чтобы просмотреть с помощью Acrobat Reader какой-то конкретный файл или даже несколько, можно сразу указать имена этих файлов в командной строке. Например,

[user]$ acroread /user/share/docs/Samba/Collection.pdf

Рис. 12.1. Окно программы Acrobat Reader

Если вы введете команду acroread <filename>, когда Reader уже запущен, активная копия Reader отобразит заданный файл.

Если вы хотите получить подсказку по использованию программы, введите одну из команд

[user]$ acroread -help

[user]$ acroread -helpall

С помощью программы Acrobat Reader вы можете преобразовать файлы формата PDF в файлы формата PostScript уровней 1 или 2 при условии, что вы делаете это в командной строке графического режима. Для этого надо выполнить примерно следующую команду:

[user]$ cat sample.pdf | acroread -toPostScript > sample.ps

С помощью аналогичных команд (более подробное описание которых вы сможете найти в документации к программе) можно преобразовывать сразу группу файлов.

Для обратного преобразования PDF-файла в файл формата PostScript уровня 2, надо набрать следующую команду:

[user]$ acroread -toPostScript -level2 pdf_file_1

Я не буду подробно описывать все меню и возможности программы Acrobat Reader, поскольку она широко распространена и многим читателям знакома. Лучше остановимся подробнее на специфических средствах просмотра файлов Linux.

12.2.3 Программа gv

Программа gv (или ghostview) разработана Иоганнесом Плассом (Johannes Plass) и предназначена для просмотра файлов формата PostScript и PDF (рис. 12.2).

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

С помощью кнопки File вы получаете доступ к пунктам Open (то же самое, что и упомянутая выше кнопка Open в левом вертикальном столбце), Reopen (Перечитать), Print document (Отпечатать документ), Save document (Сохранить документ).

Кнопка State (Состояние) позволяет включить или изменить некоторые параметры программы, в частности, получить доступ к отдельному окну настроек программы, изображенному на рис. 12.2.

Рис. 12.2. Окно программы gv

Кнопка Page служит для перехода к следующей или предыдущей странице документа. Такие же переходы можно осуществить при помощи двух небольших кнопок, обозначенных символами << и >> в левой вертикальной колонке. Рядом с кнопкой Page расположена кнопка, не имеющая постоянного названия, потому что она служит для задания одной из 4 возможных ориентаций вывода текста. Текст можно выводить на страницу, ориентированную обычным образом (Portrait), с поворотом на 90 градусов (Landscape), на 180 градусов (Upside-Down, т. е. вниз головой), на 270 градусов (Seascape).

Рис. 12.3. Окно выбора файла для просмотра в gv

Рис. 12.4. Окно настроек программы gv

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

В левом столбце имеется еще одна интересная вещь: серый прямоугольник над кнопками >> и <<. Внутри этого прямоугольника имеется еще один прямоугольник, который можно захватить мышкой и подвигать в пределах внешнего прямоугольника. Проделайте это и вы поймете назначение этого элемента: выводить в окно просмотра различные части страницы.

12.2.4 Просмотрщики файлов PS, PDF и DVI из KDE

Пользовательский интерфейс программы gv несколько непривычен для человека, работавшего только с Windows. Между тем, в составе интегрированной графической среды KDE имеются две программы с более традиционным обликом. Это "Просмотрщик PS/PDF" и "Просмотрщик DVI" (так эти программы именуются в заголовках собственных окошек и в меню KDE). Интерфейс у них очень похож и объясняется это тем, что они работают через одну оболочку — KviewShell. Однако в меню KDE они значатся как отдельные программы, и в заголовке окна каждая из них выводит собственное название.

Замечание:

Здесь можно попутно отметить, что в UNIX очень часто применяется такой прием: создается "рабочая лошадка" (back-end), к которой затем пишут красивые оболочки (front-end) на разные случаи, например, для текстового и графического режимов или для разных вариантов библиотек. С примерами такого подхода вы еще не раз столкнетесь, даже при чтении этой книги, хотя я не буду отдельно выделять эти моменты.

На рис. 12.5 приведен внешний вид окна программы "Просмотрщик PS/PDF" (разработчики Wilco Greven, David Sweet, Mark Donohoe, David Faure, Daniel Duley и Espen Sand.), которая иначе называется Kghostview, что, по-видимому, указывает на ее происхождение от программы, рассмотренной в предыдущем подразделе. О родстве с предыдущей программой говорит также то, что практически все пункты меню повторяют аналогичные пункты gv, только меню организовано несколько иначе. Это видно и из рисунка. Более подробно рассказывать о программе не имеет смысла, достаточно того, что вы знаете о ее существовании. А пользоваться ею вы легко научитесь самостоятельно.

Рис. 12.5. Внешний вид окна программы "Просмотрщик PS/PDF".

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

12.2.5 Пакет WordViewer

Как уже говорилось выше, одна из самых больших проблем для пользователей Linux — это работа с файлами в форматах MS Word (и других программ из пакета MS Office). Ведь пока что большинство текстов создается именно в этом формате. Наиболее распространенное средство просмотра таких файлов, — это программа (точнее библиотека программ) wv, которая раньше носила более полное название mswordview.

Библиотека wv предназначена для получения доступа к файлам форматов MS Word 2000, 97, 95 и 6 из операционных систем типа UNIX, в частности из Linux. В состав дистрибутива ALT Linux Junior 1.0 включена версия 0.6.5 этого пакета, авторами которого являются Dom Lachowicz и Caolan McNamara (первый разработчик). Если у вас этот пакет не установлен, вы можете найти его на сайте http://www.wvware.com.

Идея, реализованная в этом пакете, очень проста: раз мы не имеем средств для просмотра файлов в формате MS Word, то давайте преобразуем текст из этих файлов в какой-то открытый формат. В качестве последнего можно выбрать один из следующих форматов: HTML, PS, PDF, LaTex, DVI (формат издательской системы TEX), ABW (формат текстового редактора AbiWord), Wml (формат, используемый в персональных органайзерах PDA и устройствах типа Web-телефонов), ASCII-текст. Вызов отдельных библиотечных процедур может быть использован в других приложениях. Разработчики обещают, что вскоре станет возможным и обратное преобразование: из перечисленных открытых форматов — в формат MS Word.

Пакет состоит из отдельных программ, каждая из которых предназначена для преобразования doc-файла в определенный формат. Этот формат указывается непосредственно в названиях отдельных программ пакета: wvAbw, wvCleanLatex, wvDVI, wvHtml, wvLatex, wvMime, wvPDF, wvPS, wvRTF, wvSimpleCLX, wvText, wvWml. Кроме того, в состав пакета входят две вспомогательных утилиты: wvVersion, которая служит для получения информации о версии документа MS Word, и wvSummary — эта утилита выводит общую информацию о документе, которую в самом MS Word можно ввести через пункт меню Файл | Свойства. Вот как выглядит вывод этих команд (для использованного мной в этом примере файла служебные данные не были введены; впрочем, если их ввести по-русски, то радости будет не много больше, поскольку вывод получим в кодовой странице CP-1251, так что текст на экране будет нечитаемым).

[user@linux tmp]$ wvVersion book-p1.doc

Version: word8, Encrypted: No


[user@linux tmp]$ wvSummary book-p1.doc

The title is Â

The subject is

The author is kos

The keywords are

no comments found

The template was Normal.dot

The last author was kos

The rev # was 12

The app name was Microsoft Word 8.0

PageCount is 1

WordCount is 52757

CharCount is 300716

Security is 0

Codepage is 0x4e3 (1251)

Основной утилитой пакета является программа wvWare (или wvConvert), вызов которой осуществляется следующим образом

wvWare [OPTION...] filename.doc > filename.html

Основные опции:

  • -x --config=config.xml

    Указывает на используемый выходной фильтр.

  • -c --charset=charset

    Задает кодовую страницу для iconv.

  • -p --password=password

    Задает пароль для зашифрованных документов Word.

  • -d --dir=dir

    Задает каталог, в котором будет сохранена создаваемая графика.

  • -v –version

    Выдает версию пакета wvWare.

  • -? –help

    Выводит краткую справку по использованию программы.

Выходной фильтр, указываемый опцией –x или --config= , задает формат выходного файла. Если эта опция не задана, то выходной фильтр ищется в текущем каталоге или (если в текущем не нашли) по месту установки пакета. По умолчанию используется фильтр wvHtml.xml, т. е. doc-файл преобразуется в формат HTML.

После преобразования полученный файл можно просмотреть с помощью соответствующей программы просмотра, например, html-файл — с помощью любого Web-браузера. Конечно, при этом некоторые возможности форматирования, имеющиеся в Word, теряются, и это надо иметь в виду, просматривая полученные файлы.

Насколько я могу судить, именно программы пакета wv используются для открытия файлов MS Word в некоторых текстовых редакторах для Linux, например, в AbiWord.

12.2.6 Программы-перекодировщики кодовых страниц

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

В Unix-системах наиболее распространенной является кодировка KOI8-R, Microsoft использует CP-1251 или CP-866 (DOS). Существуют еще ISO8859-5, UTF, Unicode (подробнее о кодировках можно прочитать в разд. 9.3).

Если вы встретили файл, содержимое которого "не читается", то вам потребуется программа перекодировки. Как говорится в RU.LINUX.FAQ: "Перекодировщиков CP1251 и CP866 --> KOI8-R просто огромное количество. Не надо писать новых ;-). Наиболее широко распространены iconv (входит в поставку glibc) и GNU recode."

Программа iconv запускается следующим образом:

[user]$ iconv -f866 -tKOI8-R –o <outfile> infile

Если не указать выходной файл (опция -o), то результат будет выдаваться на экран (используя фильтры more или less можно удобно просмотреть файл). Чтобы получить список всех возможных кодировок (а он огромен!), дайте команду iconv --list, а для получения помощи: iconv -? или iconv --usage. Между прочим, man-страница не выдается. Впрочем, других опций все равно очень немного: только --verbose (сообщать дополнительные сведения), -V, и --version (обе опции служат для вывода версии программы).

Программу recode можно найти на http://www.iro.umontreal.ca/~pinard/recode/.

Запускается она примерно так:

[user]$ recode CP1251..KOI8-R winfile.txt

Кроме упомянутых команд вы можете воспользоваться программой "Russian Anywhere", которая существует как в версии для Windows (где я с ней и познакомился), так и в версии для командной строки Linux (создатели обещают выпустить и графическую оболочку). Эту программу можно скачать (как в исходных кодах, так и в виде исполняемого модуля) с сайта разработчика http://www.livotov.org/software/.

Исполняемый модуль программы имеет название re. Его лучше поместить в один из каталогов, указанных в переменной PATH.

Программа вызывается из командной строки. Для того, чтобы перекодировать какой-то файл, который "не читается", в кодировку KOI8-R, надо дать команду:

[user]$ re <SourceFile> <DestFile> ? K

где :

  • <SourceFile> — исходный (нечитаемый) файл;
  • <DestFile> — перекодированный файл;
  • ? — сообщает RE, что кодировка исходного файла не известна и re должна проанализировать файл и самостоятельно определить его кодировку;
  • K — задает кодировку для результирующего файла (в данном случае KOI-8).

Если вы знаете кодировку исходного файла, вы можете указать ее вместо символа "?". Например, если вы хотите перекодировать файл letter.txt, который был создан в Windows, и вы знаете, что файл сохранен в кодировке 1251, то надо дать команду:

[user]$ re letter.txt letter-koi.txt W K

После этого, просмотрев файл letter-koi.txt, вы увидите вполне читаемый русский текст в KOI8-R.

Полный формат вызова перекодировщика:

[user]$ re options filename_from filename_to cp_from cp_to [s/d/f] [u/l/s]

где options: [-v][-E|-R|-N][-e|-s]

  • -v — выдавать информацию о ходе обработки;
  • -n — не выдавать информацию о ходе обработки (задано по умолчанию);
  • -E — преобразовывать все символы p, H из русских в английские;
  • -R — преобразовывать все символы p, H из английских в русские;
  • -N — оставлять все p, H (русские и английские) как в исходном тексте (задано по умолчанию);
  • -e — перекодировать все символы 0x80 — 0xFF;
  • -s — перекодировать только 64 символа русского алфавита (задано по умолчанию),

а cp_from и cp_to — любой из следующих символов, обозначающих возможные кодировки (по умолчанию — W,K).

Таблица 12.1. Обозначение кодировок в программе re.

Символ

Кодировка

Символ

Кодировка

W

Windows

_ (подчеркивание)

_xxe

D

Dos

%

%hex

K

KOI-8

\\

\'hex

L

Latin

G

Graph_win

I

Iso

<

binhex

H

HEX

+

+UTF7-

S

ShiftKbrd

C

C_MIC

M

Mac

Y

Y_c16

A

AFF

Z

Z_c32

O

Odd(UTF8_1)

F

F(UTF8_2)

B

Base64

P

Pict

E

Express

N

N_Estl

T

T-Html

V

V_Vpp855

U

User

X

X_sp

- (тире)

uue

J

J_diff

Как уже было сказано, если cp-from="?", то программа пытается самостоятельно определить кодировку исходного файла.

Если у вас по каким-либо причинам не оказалось ни одной из указанных программ-перекодировщиков, то для просмотра содержимого файла можно воспользоваться одним из браузеров Интернет, которые изначально ориентированы на работу с разными кодировками. Например, сгодится обычный lynx:

[user]$ lynx -assume_local_charset cp866 file.txt

Можно также загрузить "нечитаемый" файл в Netscape Navigator, после чего поменять кодировку через меню View / Character Set.


Предыдущий раздел Оглавление Следующий раздел