Принтер IBM 4029 LaserPrinter поддерживает потоки данных четырех различных типов. С помощью команды mkvirprt пользователь root может создавать очередь и определение виртуального принтера для каждого типа потока данных. Кроме того, с помощью команды lsvirprt он может просматривать и изменять файл описания, задающий определение виртуального принтера. В системе, в которой определены очереди всех типов, команда lsvirprt выдает следующий список (имена очередей и устройств выбираются пользователем root при создании очередей):
©. Очередь Устройство Описание 1 asc lxx 4029 (IBM ASCII) 2 gl lxx 4029 (Эмуляция графопостроителя ) 3 pcl lxx 4029 (Эмуляция HP LaserJet II ) 4 ps lxx 4029 (PostScript) Введите номер из показанного списка (для завершения нажмите Enter): ->
Из данного списка пользователь root выбирает номер для виртуального принтера, определение которого он хочет просмотреть, отформатировать или изменить. После этого появится следующее сообщение и приглашение.
Для просмотра СПИСКА атрибутов введите Имя_атрибута1 ... (* - для просмотра всех атрибутов) Для ИЗМЕНЕНИЯ значения атрибута введите Имя_атрибута=Новое_значение Для ФОРМАТИРОВАНИЯ и РЕДАКТИРОВАНИЯ значения атрибута введите Имя_атрибута~v Для РЕДАКТИРОВАНИЯ файла атрибутов введите ~v Для завершения работы нажмите Enter:
Вы можете нажать клавишу Enter и завершить выполнение команды lsvirprt. Или выполните одно из следующих пяти действий.
Каждое из этих пяти действий рассмотрено в разделе, посвященном очереди asc и связанному с ней определению виртуального принтера с соответствующим файлом описания.
Введите символ "звездочка" (*) и нажмите Enter. Появится следующая информация:
Имя Описание Значение
__FLG ЗНАЧЕНИЯ, КОТОРЫЕ МОГУТ БЫТЬ ПЕРЕОПРЕДЕЛЕНЫ С ПОМОЩЬЮ ФЛАГОВ
В КОМАНДНОЙ СТРОКЕ
_0 (не применяется)
_1 (не применяется)
_2 (не применяется)
_3 (не применяется)
_4 (не применяется)
_5 (не применяется)
_6 (не применяется)
_7 (не применяется)
_8 (не применяется)
_9 (не применяется)
_A возвращать stderr? 0:нет; 1:да & конвейер; 2: 1
да & значения, конвейеры
_E Печать с двойной высотой. (!: нет; +: да)
_F (не применяется) Имя файла шрифта
_G Формат страницы (!: использовать только область печати !
+: использовать всю адресуемую область)
_H Имя для замещения имени хоста на разделительной странице
_I ИД шрифта (переопределяет ширину и начертание шрифта)
_J Восстанавливать принтер по завершении задания печати? +
(!: нет; +: да)
_K (не применяется)
_L Переносить длинные строки (!: нет; +: да) +
_O Тип подачи бумаги (1: вручную, 3: из лотка) 3
sheetfeed)
_Q Размер конвертов в устройстве подачи, заданном %IwQ
с помощью флагов -O и -u (см. описание атрибутов
s0, s1, s2, s3 и s4); Значение по умолчанию:
%IwQ
_S Быстрая печать
_U Однонаправленная печать
_V Вертикальная печать
_W Печать с двойной шириной (!: нет; +: да) !
_X Имя кодовой страницы для потока данных печати IBM-850
(совпадает с именем файла в dir. "d1")
_Y Двусторонний вывод (0: односторонний; 1: двусторонний, 0
подшивка по длинному краю; 2: двусторонний, подшивка
по короткому краю)
_Z Вставлять символ новой страницы между копиями & +
в конце задания (!: нет; +: да)
:
Форматирование вывода выполняется с помощью команды pg, поэтому в последней строке вывода стоит двоеточие (:). Выше приведена только первая полная страница вывода. Остальная часть вывода здесь опущена в целях экономии места, но ее можно просмотреть с помощью обычных приемов работы с pg. Вывод можно только просмотреть; изменить атрибуты нельзя.
Если вы введете имя атрибута, например _w (ширина страницы в символах), и нажмете Enter, то будет показано примерно следующая информация:
Имя Описание Значение _w Ширина страницы (в символах); Значение по умолчанию: %IwX %IwX (значение основано на размере бумаги, заданном в атрибутах s0-s5)
Для просмотра СПИСКА атрибутов введите Имя_атрибута1 ... (* - для просмотра всех атрибутов) Для ИЗМЕНЕНИЯ значения атрибута введите Имя_атрибута=Новое_значение Для ФОРМАТИРОВАНИЯ и РЕДАКТИРОВАНИЯ значения атрибута введите Имя_атрибута~v Для РЕДАКТИРОВАНИЯ файла атрибутов введите ~v Для завершения работы нажмите Enter:
На экране показано имя атрибута с описанием из каталога сообщений и текущим значением. Показано также приглашение. Обратите внимание, что вы можете не указывать знак подчеркивания в именах атрибутов, начинающихся с этого знака. Например, тот же результат вы можете получить, введя w и нажав Enter. Вывод можно только просмотреть; изменить атрибут нельзя.
Другие атрибуты в данном формате прочесть труднее. Например, если в приглашении вы введете ia и нажмете Enter, то будет показана примерно следующая информация:
Имя Описание Значение ia ASCII %Ide/pioformat -@% Idd/%Imm -!%Idf/pi of5202 -l%IwL -w%I wW %f[begijpqstuvx yzEGIJLOQWXZ] %Uh
Для просмотра СПИСКА атрибутов введите Имя_атрибута1 ..(* - для просмотра всех атрибутов) Для ИЗМЕНЕНИЯ значения атрибута введите Имя_атрибута=Новое_значение Для ФОРМАТИРОВАНИЯ и РЕДАКТИРОВАНИЯ значения атрибута введите Имя_атрибута~v Для РЕДАКТИРОВАНИЯ файла атрибутов введите ~v Для завершения работы нажмите Enter:
Если вы введете имя атрибута, символ = и значение, а затем нажмете Enter, то атрибуту будет присвоено это значение и новое значение появится на экране. Например, если вы введете w=60 или _w=60 и нажмете Enter, то будет показана примерно следующая информация:
Для просмотра СПИСКА атрибутов введите Имя_атрибута1 ..(* - для просмотра всех атрибутов) Для ИЗМЕНЕНИЯ значения атрибута введите Имя_атрибута=Новое_значение Для ФОРМАТИРОВАНИЯ и РЕДАКТИРОВАНИЯ значения атрибута введите Имя_атрибута~v Для РЕДАКТИРОВАНИЯ файла атрибутов введите ~v Для завершения работы нажмите Enter: w=60
Имя Описание Значение _w Ширина страницы в символах 60
Для просмотра СПИСКА атрибутов введите Имя_атрибута1 ..(* - для просмотра всех атрибутов) Для ИЗМЕНЕНИЯ значения атрибута введите Имя_атрибута=Новое_значение Для ФОРМАТИРОВАНИЯ и РЕДАКТИРОВАНИЯ значения атрибута введите Имя_атрибута~v Для РЕДАКТИРОВАНИЯ файла атрибутов введите ~v Для завершения работы нажмите Enter:
Показано новое значение атрибута w. (В этом примере для очереди задана ширина страницы 60 символов).
Если вы введете ~v и нажмете Enter, то будет показана примерно следующая информация:
:056:__FLG::
:625:CB:S[B]DyEn:
:626:CC:S[C]DyEn:
:627:CD:S[D]DyEn:
:628:CE:S[E]DyEn:
:629:CF:S[F]DyEn:
:630:CG:S[G]DyEn:
:622:Ca:DyS[G500]I[1810532]EnR[pioattr1.cat,1,631;(diag1) - не печатать задан
ие показать основной конвейер и предварительный фильтр,(diag2) - не печа
тать задание показ
ать все конвейеры и фильтры,(display) - печатать задание; показать вс
е конвейеры и фильт
ры,(ignore) - печатать задание; игнорировать stderr, полученный от фильтров (nor
mal) - печатать задани
е завершить работу, если фильтр выдает stderr=-a1,-a0\x27 \x27-A3,-a0\x27 \x2
7-A2,-a0\x27 \x
27-A0,-a0\x27 \x27-A1]:%?%G_a%t-a%I_a%e-a%I_a\x27 \x27-A%I_A%;
:674:Cs:S[B005]I[1810500]EnC[_s,_p]R[%`W0]:-s%I_s\x27 \x27-p%I_p
:013:_A:DnEnR[0,1,2,3]:1
:789:_E:S[B020]I[1810501]%IWY:!
:790:_G:S[E025]I[1810502]%IWY:!
:621:_H:S[F350]I[1810503]Dy:
:024:_I:Dn:
:791:_J:S[C950]I[1810533]%IWY:+
:792:_K:Dn:
:793:_L:S[D020]I[1810504]%IWY:+
:697:_O:DnEnR[1,3]:3
:683:_Q:S[E020]I[1810505]En%IW6:%IwQ
:794:_W:S[B025]I[1810506]%IWY:!
:795:_X:S[D030]I[1810507]EtL[/usr/bin/ls -1 /usr/lib/lpd/pio/tran
s1 | /usr/bin/s
ed '/^850$/d']V[%`WX]:ISO8859-1
:808:_Y:Dn:
:614:_Z:Dn%IWY:+
:063:_a:DnEnR[0,1]:0
:635:_b:S[D010]I[1810508]E#G[0..%?%G_l%{0}%=%t%e%G_l%G_t%-%{1}%-%
d%;]:0
:658:_d:S[C925]I[1810509]EnL[%IW2]F1:a
:615:_e:S[B010]I[1810510]%IWY:!
:659:_f:S[C930]I[1810535]EtL[%IW3]F1V[%`W7]Dy:
:623:_g:S[C250]I[1810511]E#G[1..]:1
"/var/spool/lpd/pio/@local/custom/asc:lp1" 318 строк 15318 символов
Из последней строки следует, что запущен сеанс vi с необработанной, неформатированной версией файла описания принтера для данной очереди. Если в сеансе vi вызвать команду write, то определение будет обработано командой piodigest и будет создана новая версия файла описания принтера.
Наиболее удобно при выполнении lsvirprt напечатать имя атрибута с ~v. Например, если вы введете ia~v и нажмете Enter, то будет показана примерно следующая информация:
ASCII ia = %Ide/pioformat -@%Idd/%Imm -!%Idf/piof5202 -l%IwL -w%IwW %f[ begijpqstuvxyzEGIJLOQWXZ] %Uh
%Ide INCLUDE: (Каталог, содержащий различные модули) '/pioformat -@' %Idd INCLUDE: (Каталог, содержащий обработанные файлы базы дан ных) '/' %Imm INCLUDE: (Имя (обработанного) файла базы данных; запускается "piodigest" (mt.md.mn.mq:mv)) ' -!' %Idf INCLUDE: (Каталог, содержащий загружаемые подпрограммы форматир ования) '/piof5202 -l' %IwL INCLUDE: (Длина страницы в символах; значение берется из ба зы данных (используется в конвейерах)) ' -w' %IwW INCLUDE: (Ширина страницы в символах; значение берется из ба зы данных (используется в конвейерах)) ' ' %%f[begijpqstuvxyzEGIJLOQWXZ] Для каждого флага x в командной строке: "-xАргумент" -> OUTPUT ' ' %Uh Сообщает программе piobe: передать указанные атрибуты к омандам принтера
/tmp/asc:lp1.ia" 24 строк 1001 символов
Пример форматированного определения состоит из трех частей. Первая часть - это атрибут ia=, за которым следует его определение, расположенное в одной строке. Эти комментарии описывают действие каждой escape-последовательности файла описания принтера. Третья часть - это escape-последовательности отформатированного файла описания принтера, выровненные по левому полю окна сеанса vi.
Первые две части могут быть отредактированы, но изменения не будут применены. Все изменения, выполненные в исходном определении атрибута или в комментариях, будут проигнорированы процессом piodigest при записи файла. Таким образом, редактировать можно лишь третью часть форматированного определения атрибута. После того, как эта часть будет отредактирована и записана, команда piodigest выдаст сообщение об ошибке в случае обнаружения синтаксических ошибок. Как и в обычных языках программирования, будут обнаружены лишь синтаксические, но не логические ошибки.
Первые две части могут быть отредактированы, но изменения не будут применены. Все изменения, выполненные в исходном определении атрибута или в комментариях, будут проигнорированы процессом piodigest при записи файла. Практические приемы изменения файлов настройки принтера приведены в разделе "Изменение атрибутов mi, mp и _d в очереди PostScript". Как и в обычных языках программирования, будут обнаружены лишь синтаксические, но не логические ошибки.
Примеры изменения файла описания принтера приведены в разделе Изменение атрибутов mi, mp и _d очереди PostScript .