Принтер 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 .