[[email protected] ~]$ ls /usr/bin | pr -3 -t | a2ps -o ~/Desktop/ls.ps -L 66
[stdin (plain): 11 pages on 6 sheets]
[Total: 11 pages on 6 sheets] saved into the file `/home/me/Desktop/ls.ps'
Здесь мы обработали поток с помощью программы pr, передав ей параметр -t (чтобы опустить верхние и нижние колонтитулы), и передали результат программе a2ps, указав ей файл для вывода (параметр -o) и плотность печати 66 строк на странице (параметр -L), чтобы разбить вывод pr на страницы. Если открыть получившийся файл с помощью соответствующего средства просмотра, можно увидеть, что он выглядит, как показано на рис. 22.1.
Рис. 22.1. Результат работы a2ps
Как видите, по умолчанию используется формат вывода «две страницы рядом». В этом формате содержимое двух страниц будет напечатано на одном листе бумаги. a2ps добавляет также свои хорошо отформатированные колонтитулы.
a2ps имеет множество параметров, они перечислены в табл. 22.4.
Таблица 22.4. Параметры команды a2ps
Параметр
Описание
--center-title текст
Текст для заголовка страницы в центре
--columns число
Число колонок для вывода страниц. По умолчанию 2
--footer текст
Текст для нижнего колонтитула
--guess
Вывести типы файлов, переданных программе в аргументах. Поскольку программа a2ps пытается преобразовывать и форматировать данные любых типов, этот параметр может пригодиться, чтобы понять, что a2ps будет делать с данным конкретным файлом
--left-footer текст
Текст для нижнего колонтитула слева
--left-title текст
Текст для заголовка страницы слева
--line-numbers=интервал
Выводить номера строк через заданный интервал
--list=defaults
Вывести настройки по умолчанию
--list=категория
Вывести возможные варианты настроек для указанной категории, где категорией может быть: delegations (внешние программы, которые будут использоваться для преобразования данных), encodings (кодировки), features (возможности), variables (переменные), media (размеры бумаги и пр.), ppd (известные описания принтеров PostScript), printers (принтеры), prologues (фрагменты кода, предшествующие нормальному выводу), style-sheets (поддерживаемые стили вывода), user-options (параметры пользователя)
--pages диапазон
Печатать страницы из указанного диапазона
--right-footer текст
Текст для нижнего колонтитула справа
--right-title текст
Текст для заголовка страницы справа
--rows число
Разместить страницы в указанное число рядов. По умолчанию 1
-B
Не выводить заголовки страниц
-b текст
Текст заголовка страницы
-f размер
Использовать шрифт указанного размера
-l число
Число символов в строке. Этот параметр и параметр -L (ниже) можно использовать, чтобы правильно разместить на странице файлы, разбитые на страницы с помощью других программ, таких как pr
-L число
Число строк на странице
-M имя
Формат бумаги, например A4
-n число
Вывести указанное число копий каждой страницы
-o файл
Вывести результат в указанный файл. Если в качестве имени файла указан - (дефис), используется стандартный вывод
-P принтер
Имя принтера для вывода. Если принтер не указан, используется системный принтер по умолчанию
-R
Вывести в книжной ориентации
-r
Вывести в альбомной ориентации
-T число
Установить табулостопы через каждое указанное число символов
-u текст
Текст для нижнего слоя на странице («водяной знак»)
Это далеко не полный список. В действительности программа a2ps имеет намного больше параметров.
ПРИМЕЧАНИЕ
Программа a2ps продолжает активно развиваться и поныне. В ходе ее тестирования я заметил некоторые различия в поведении этой программы в разных дистрибутивах. В CentOS 4 вывод всегда по умолчанию производился в стандартный вывод. В CentOS 4 и Fedora 10 по умолчанию использовался формат бумаги A4, несмотря на то что система была настроена на использование бумаги формата US-Letter. Мне удалось преодолеть эту проблему, только явно передав соответствующие параметры. В Ubuntu 8.04 программа a2ps действует, как описывается в документации.
Кроме того, существует еще одна программа форматирования, которую можно использовать для преобразования текста в формат PostScript. Она называется enscript и способна выполнять почти те же виды форматирования и печати, что и a2ps, но, в отличие от последней, принимает только текстовые данные.
Наблюдение за заданиями печати и управление ими
Поскольку система печати в Unix изначально проектировалась для обработки заданий печати от нескольких пользователей, соответственно и система CUPS проектировалась исходя из той же предпосылки. Для каждого принтера создается своя очередь печати, в которой задания хранятся, пока не будут переданы принтеру. В составе CUPS имеется несколько программ командной строки для управления состоянием принтеров и очередей печати. Подобно программам lpr и lp, эти управляющие программы создавались после появления соответствующих программ из систем Berkeley и System V.
lpstat — вывод информации о состоянии принтера
Программу lpstat удобно использовать для определения имен и доступности принтеров в системе. Например, если к системе подключены два принтера — физический (с именем printer) и виртуальный, для вывода в файлы PDF (с именем PDF), — их состояние можно проверить так:
[[email protected] ~]$ lpstat -a
PDF accepting requests since Mon 05 Dec 2011 03:05:59 PM EST
printer accepting requests since Tue 21 Feb 2012 08:43:22 AM EST
Кроме того, с ее помощью можно получить более подробное описание конфигурации системы печати:
[[email protected] ~]$ lpstat -s
system default destination: printer
device for PDF: cups-pdf:/
device for printer: ipp://print-server:631/printers/printer
В этом примере видно, что имя printer соответствует системному принтеру по умолчанию и что это сетевой принтер, для взаимодействий с которым используется протокол печати через Интернет (Internet Printing Protocol, ipp://), физически подключенный к системе с именем print-server.
В табл. 22.5 перечислены некоторые часто используемые параметры команды lpstat.
Таблица 22.5. Наиболее часто используемые параметры команды lpstat
Параметр
Описание
-a [принтер...]
Вывести состояние очереди печати для указанного принтера. Обратите внимание, что результат отражает состояние очереди печати для данного принтера и ее способность принимать задания, а не состояние физического принтера. Если принтер не указан, выводится информация обо всех очередях печати
-d
Вывести имя системного принтера по умолчанию
-p [принтер...]
Вывести состояние указанного принтера. Если принтер не указан, выводится информация обо всех принтерах
-r
Вывести состояние сервера печати
-s
Вывести сводную информацию о состоянии
-t
Вывести полный отчет о состоянии
lpq — вывод информации о состоянии очереди печати
Программа lpq используется для получения информации о состоянии очереди печати. С ее помощью можно увидеть состояние очереди и список заданий в ней. Ниже приводится пример вывода информации о состоянии пустой очереди для системного принтера по умолчанию с именем printer:
[[email protected] ~]$ lpq
printer is ready
no entries
Если принтер не указан (с помощью параметра -P), выводится информация об очереди для системного принтера по умолчанию. Если сформировать задание для печати и затем вывести информацию о состоянии очереди, это задание появится в списке: