11.5 使用打印机
11.6 标准spooler 之外的选择
=============================================================
11.5 使用打印机
这一节将告诉你如何在FreeBSD 下使用打印机。这里有份使用者等级命令的概述。
lpr
打印工作
lpq
检查打印机队列
将工作从打印机队列中删除
lprm
也有系统维护使用的命令,lpc,用来控制打印机及其队列。在管理打印机这一节里有更详细的说明。
lpr,lprm 和lpq 这三个命令都接收-P printer-name 这个指定在/etc/printcap 文件里设定的打印机/队列的参数。允许你对不同的打印机做要求、删除,以及检查工作。如果你没有使用-P 参数,那么这些命令将使用PRINTER 环境变量所指定的打印机。若你也没有PRINTER 环境变量,那么这些命令则会对别名为lp 的打印机指定动作。此后,默认打印机指的就是以PRINTER 环境变量设定的打印机或是当lp 环境变量不存在时,别名为lp 的打印机。
11.5.1 打印工作
要打印文件,输入:
% lpr filename ...
这将把所有列出的文件以默认打印机打印。如果你没有指定任何文件,那么lpr 将会从标准输入读入资料。下面这个例子将会打出一些重要的系统文件:
% lpr /etc/host.conf /etc/hosts.equiv
若要指定以特定的打印机输出,输入:
% lpr -P printer-name filename ...
下面这个例子会将当前目录下的文件列表从名为rattan 打印机输出:
% ls -l | lpr -P rattan
因为lpr 命令之后没有指定任何一个文件,lpr 将会从标准输入读入资料以打印出来,即由ls -l 命令所产生的输出。
第61 页FreeBSD 使用手册
lpr 命令有许多参数如控制输出格式、套用文件转换、一次打印出多份,等等。请参看打印参数这一节里有更详细的说明。
11.5.2 检查打印工作
当你使用lpr 打印时,一起送到LPD spooling 系统的资料称为一个“打印工作”。每一台打印机都有一个打印工作队列,而你的打印工作和其它的打印工作一样在队列里等待打印。打印机会将先打印先送达的工作。
要显示默认打印机的队列,输入lpq 即可。若要指定打印机,请指定-P 参数。例如
% lpq -P bamboo
这个命令会显示叫做bamboo 的打印机队列。这里有一份lpq 命令的输出例子:
bamboo is ready and printing
Rank Owner Job Files Total Size
active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
2nd kelly 10 (standard input) 1635 bytes
3rd mary 11 ... 78519 bytes
上面显示一共有三个工作在bamboo 的队列里。第一个工作由使用者kelly 送出,“工作代码”为9.每一个工作都会有个唯一的工作代码。通常你可以忽略工作代码,但是如果你要取消某个工作时,你就会需用知道工作号码。详情请参看删除队列这一节。工作号码9 里包含了两个文件。用lpr 送多个文件将会被视为同一个工作。这是目前正在处理的工作(注意“Rank”栏标示的active),即打印机现在应该就在打印这个工作。第二个工作的资料是用lpr 从标准输入接收资料的。而第三个工作是由使用者mary 送出的。这是一个较大的工作。而她要打印的文件因为太长而放不下,所以lpq 命令只显示三个点。lpq 最前面的输出通常可以看出打印机现在在做什么(至少是LPD 觉得打印机现在应该是在做什么)。
lpq 命令可以使用-l 参数以得到更详细的列表。这里有一个lpq -l 的输出范例:
waiting for bamboo to become ready (offline ?)
kelly: 1st [job 009rose]
/etc/host.conf 73 bytes
/etc/hosts.equiv 15 bytes
第62 页FreeBSD 使用手册
kelly: 2nd [job 010rose]
(standard input) 1635 bytes
mary: 3rd [job 011rose]
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes
11.5.3 删除打印工作
如果你改变主意不想打印你的工作了,你可以用lprm 命令把他们从打印队列中删除。通常你也可以用lprm 把一个正在处理的工作删除,不过可能还是会打印出部分或是全部的文件。
要从默认打印机里删除工作,首先,用lpq 找出工作代码,然后输入:
% lprm job-number
如果要从指定的打印机删除工作,那么用-P 参数。下列的命令从打印机bamboo 的队列中删除工作号码为10 的工作:
% lprm -P bamboo 10
lprm 命令有一些常用的用法:
lprm -
将(默认打印机)里所有属于你的工作都删除。
% lprm -P rattan -
lprm user
将(默认打印机)里所有属于使用者user 的工作皆删除。只有超级使用者可以删除其它人的工作,你只能删除你自己的工作。
lprm
若不指定工作号码、使用者名称或是- ,lprm 将删除目前默认打印机正在处理的工作,但前提是这个工作必需是属于你的。超级使用者可以删除任何目前正在处理的工作。若使用-P 参数配合上述的常用用法,则上述的动作将对指定的打印机动作而不是对默认打印机。下列的命令将会删除目前使用者在打印机rattan 队列中的所有工作:
注意: 如果你使用的是网络打印机,lprm 将只允许你从输出工作的机器删除该工作。
第63 页FreeBSD 使用手册
下面这些命令可以说明这个概念:
% lpr -P rattan myfile
% rlogin orchid
% lpq -P rattan
Rank Owner Job Files Total Size
active seeyan 12 ... 49123 bytes
2nd kelly 13 myfile 12 bytes
% lprm -P rattan 13
rose: Permission denied
% logout
% lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued
11.5.4 在纯文字之外:打印参数
lpr 命令提供控制格式输出、转换图形及其它文件格式、一次打出多份、工作处理方式等参数。这一节将一一介绍。
11.5.4.1 格式输出与转换参数
下列的lpr 命令控制文件输出的格式。如果你的打印工作里没有纯文字或是你希望纯文字通过lpr 处理后以特定的格式输出时,你可以使用这些参数。
举例来说,下面的命令从叫做bamboo 的打印机将DVI 文件(由TeX 排版系统产生)
fish-report.dvi 打出:
% lpr -P bamboo -d fish-report.dvi
这些参数将套用这个工作里的每个文件,所以你不能把DVI 和ditroff 文件在同一个工作里一起处理,而要分两次工作用不同的转换参数。
注意: 这些参数除了-p 和-T 需要为指定的打印机安装转换的过滤程序外,其它的都不用。举例来说,参数-d 需要安装DVI 转换过滤程序。转换用的过滤程序这一节有较详细的说明。
c
第64 页d
f
g
i number
l
n
p
T title
t
v
下面是一个以默认打印机打印格式化过的ls manual page 的例子:zcat 命令将ls 原始数据解压缩并传送给troff 命令,将该数据格式化后以GNU troff 格式输出给lpr 送给LPD spooler 处理。因为我们在使用lpr 命令时使用了-t 参数,所以spooler在打印时会把GNU troff 转换成默认打印机所能了解的格式。将输出缩进number 个字符。如果你省略number,则缩进8 个字符。这个参数只有在某些转换用的过滤程序上有效。原封不动的打出文字数据,包括控制字符。打印ditroff (device independent troff) 数据。在打印之前以pr 格式化输出。请参见pr 以取得更多的信息。以title 取代pr header 中的文件名。这个参数只有在配合-p 参数使用时才有效。
打印troff 数据。
打印raster 数据。
% zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t
打印cifplot 文件。
打印DVI 文件。
打印FORTRAN 文本文件
打印plot 数据。
注释: 请不要在-i 和数字之间加上空白
FreeBSD 使用手册
第65 页11.5.4.2 工作处理方式参数
# copies
m
s
r
11.5.4.3 Header Page 参数
这些参数就没有作用了。请参见Header Pages 这一节以了解如何设定header pages。
1. C text
将同一工作里的每个文件都打出copies 份。系统管理员可以将这个参数关闭,以减低打印机的障碍并鼓励使用复印机。请参见限制打印多份这一节的说明。
这个例子将会从默认的打印机打出三份parser.c,然后打出三份parser.h:
% lpr -#3 parser.c parser.h
完成打印工作后,便通知使用者。若使用这个参数,当打印工作完成后,LPD 系统将会写信给你。在这封信中将会告诉你你的工作是否成功地打出或是有错误以及(通常会)告诉你错误的原因。
不要将要打印的文件拷贝到spooling 目录,而只要以symbolic links 的方式取代。如果你要打印大的文件,你可考虑用这个参数。这可以节省你spooling 目录的空间(否则spooling 目录所在的文件系统可能会空间不足)。同时他也可以省下LPD 将文件拷贝到spooling 目录所需的时间。
这么做有一个缺点就是当打印还没结束时,你不能修改或删除打印中的文件,因为LPD 在打印时还会用到原始的文件。
Note: 如果你是用网络打印机打印,那么LPD 还是会把你的文件拷贝到远程的机器,所以参数-s 只有在本机上打印时才有用。
当你的文件已经拷贝到spooling 目录时,或是用-s 参数且打印完成时,就将原本的文件删除。请小心使用这个参数!
有一些参数是设定lpr 打印在header pages 上的文字。如果打印header pages 的话,那么将header page 上的机器名称以text 取代。机器名称通常是打印送出工作的机器名称。