Командная строка Linux
Шрифт:
Многие медленные сети персональных компьютеров просто не могли достаточно быстро пропустить почти 1 мегабайт данных, чтобы напечатать на лазерном принтере полную страницу, поэтому требовалось какое-то новое решение.
Таким решением стало изобретение языка описания страниц. Язык описания страниц (Page Description Language, PDL) — это язык программирования, описывающий содержимое страницы. Программы на этом языке как бы говорили: «перейти в эту позицию, нарисовать символ a шрифтом Helvetica с кеглем 10 пунктов, перейти в эту позицию...», пока вся страница не была описана. Первым основным языком PDL стал PostScript, разработанный в Adobe Systems, он все еще широко используется в наше
Принтер с поддержкой PostScript принимал на входе программу на PostScript. Принтер имел собственный процессор и память (нередко принтеры имели большую вычислительную мощность, чем компьютеры, к которым они подключались) и выполнял специальную программу, называвшуюся интерпретатором PostScript, которая читала входящую программу на PostScript и отображала результат во внутреннюю память принтера, таким образом формируя шаблон из битов (точек) для вывода на бумагу. Такой процесс отображения чего-то в большой битовый шаблон (его называют bitmap — растр) в общем случае называют процессором растровых изображений (Raster Image Processor, RIP).
Спустя годы компьютеры и сети стали намного быстрее. Это позволило переместить RIP с принтера в компьютер, что, в свою очередь, позволило удешевить высококачественные принтеры.
Многие современные принтеры все еще способны принимать потоки символов, но большинство уже не поддерживают эту возможность. Они полагаются на RIP компьютера и ожидают получить поток битов для печати их в виде точек. Существуют также современные PostScript-принтеры.
Печать в Linux
Современные системы Linux используют два комплекта программного обеспечения для печати. Первый, CUPS (Common Unix Printing System — общая система печати для Unix), включает драйверы печати и средства управления заданиями; второй, Ghostscript, интерпретатор PostScript, действует как RIP.
Пакет CUPS осуществляет управление принтерами, создавая очереди печати и управляя ими. Как говорилось выше, в краткой исторической справке, поддержка печати в Unix первоначально была ориентирована на управление централизованным принтером, совместно используемым несколькими пользователями. Поскольку принтеры — довольно медленные устройства по своей природе в сравнении с компьютерами, которые поставляют им данные, системы печати должны обладать возможностью планирования множества заданий печати и их организации. Система CUPS также способна распознавать данные разных типов (в разумных пределах) и преобразовывать файлы в вид, пригодный для печати.
Подготовка файлов к печати
Так как мы — пользователи командной строки, наибольший интерес для нас представляет печать текста, хотя при этом сохраняется возможность печатать данные других форматов.
pr — преобразование текстовых файлов для печати
Мы уже касались программы pr в предыдущей главе. А теперь исследуем все богатство ее параметров, используемых при печати. В краткой исторической справке развития технологий печати рассказывалось, что символьные принтеры использовали мноноширинные шрифты, что обеспечивало фиксированное число символов в строке и строк на странице.
Программа pr используется для выравнивания текста в соответствии с заданным размером страницы, с учетом дополнительных заголовков и полей на странице. Наиболее часто используемые параметры перечислены в табл. 22.1.Таблица 22.1. Наиболее часто используемые параметры команды pr
Параметр
Описание
+первая
[:последняя]
Вывести диапазон страниц, начиная со страницы с номером первая и заканчивая страницей с номером последняя (если указано)
– колонок
Вывести содержимое страницы в указанное число колонок
– a
По умолчанию, когда задан вывод в несколько колонок, колонки организованы по вертикали. Параметр -a (across — поперек) позволяет организовать колонки по горизонтали
– d
Вывести с двойным интервалом
– D формат
Формат вывода даты в заголовке страницы. Описание строки формата можно найти в странице справочного руководства (man) для команды date
– f
Использовать символ перевода формата вместо возврата каретки для отделения страниц друг от друга
– h заголовок
Текст для вывода в центре заголовка страницы вместо имени файла
– l длина
Длина страницы. По умолчанию длина устанавливается равной 66 строкам (соответствует формату US-letter с плотностью печати 6 строк на дюйм)
– n
Нумеровать строки
– o отступ
Создать левое поле, выполнив отступ указанного размера (в символах)
– w ширина
Ширина страницы в символах. По умолчанию ширина устанавливается равной 72 символам
Программа pr часто используется в конвейерах в роли фильтра. Следующий пример создает список содержимого каталога /usr/bin и с помощью pr выводит его в три колонки с разбивкой на страницы:
[me@linuxbox ~]$ ls /usr/bin | pr -3 -w 65 | head
2012-02-18 14:00 Page 1
[ apturl bsd-write
411toppm ar bsh
a2p arecord btcflash
a2ps arecordmidi bug-buddy
a2ps-lpr-wrapper ark buildhash
Отправка задания печати на принтер
Пакет программ печати CUPS поддерживает два метода печати, исторически используемых в Unix-подобных системах. Первый метод, с названием Berkeley, или LPD (используется в BSD-версиях Unix), основан на использовании программы lpr; второй метод, с названием SysV (используется в версиях Unix System V), основан на использовании программы lp. Обе программы работают примерно одинаково. Выбор той или иной зависит от личных предпочтений.
lpr — печать файлов (в стиле Berkeley)
Программа lpr применяется для отправки файлов на принтер. Она также может использоваться в конвейерах, так как способна принимать исходные данные со стандартного ввода. Например, напечатать предыдущий результат форматирования содержимого каталога в несколько колонок можно было бы так:
[me@linuxbox ~]$ ls /usr/bin | pr -3 | lpr
В этом случае отчет будет выведен на принтер, используемый системой по умолчанию. Для вывода файла на другой принтер используйте параметр -P:
lpr -P имя_принтера
где аргумент имя_принтера — имя требуемого принтера. Получить список принтеров, известных системе, поможет команда:
[me@linuxbox ~]$ lpstat -a
ПРИМЕЧАНИЕ
Многие дистрибутивы Linux позволяют определять фиктивные «принтеры», которые выводят результат в файл в формате PDF, а не на физический принтер. Это очень удобно для экспериментов с командами печати. Запустите свою программу настройки принтеров и посмотрите, поддерживает ли она такую возможность. Чтобы включить ее, в некоторых дистрибутивах может понадобиться установить дополнительные пакеты (такие, как cups-pdf).