本节讨论如何打印文件、检查打印队列、从打印队列中删除作业、在打印前格式化文件,以及配置您的打印环境。
Linux 打印系统——lp 系统——是加利福尼亚大学董事会为 UNIX 操作系统的 Berkeley 软件发行版版本编写的源代码的移植。
到目前为止,在 Linux 操作系统中打印最简单的方法是将要打印的文件直接发送到打印设备。一种方法是使用 cat 命令。作为 root
用户,可以执行如下操作:
# cat thesis.txt > /dev/lp
在这种情况下,/dev/lp
是指向实际打印设备的符号链接——它可以是点阵打印机、激光打印机、排字机或绘图仪。(有关符号链接的更多信息,请参阅 ln(1)。)
出于安全目的,只有 root
用户和与打印守护程序在同一组中的用户才能直接写入打印机。这就是为什么必须使用 lpr、lprm 和 lpq 等命令来访问打印机。
因此,用户必须使用 lpr 来打印文件。lpr 命令负责打印文件所需的所有初始工作,然后将控制权交给另一个程序 lpd,即行式打印守护程序。然后,行式打印守护程序会告诉打印机如何打印文件。
当执行 lpr 时,它首先将指定的文件复制到某个目录(假脱机目录),该文件在该目录中保留,直到 lpd 打印它。一旦告知 lpd 有文件要打印,它将生成自身的副本(我们程序员称之为 fork)。此副本将打印我们的文件,而原始副本则等待更多请求。这允许一次将多个作业排队。
lpr(1) 的语法非常熟悉:
$ lpr [ options ] [ filename ... ]
如果未指定 filename
,则 lpr 期望输入来自标准输入(通常是键盘或其他程序的输出)。这使用户可以将命令的输出重定向到打印假脱机程序。因此,例如:
$ cat thesis.txt | lpr
或者,例如:
$ pr -l60 thesis.txt | lpr
lpr 命令接受多个命令行参数,允许用户控制其工作方式。一些最常用的参数包括:-Pprinter 指定要使用的打印机,-h 抑制打印突发页,-s 创建符号链接而不是将文件复制到假脱机目录(对于大型文件很有用),以及 -#num 指定要打印的份数。与 lpr 的交互示例可能如下所示:
$ lpr -#2 -sP dj thesis.txt
此命令将在名为 dj 的打印机的假脱机目录中为文件 thesis.txt
创建一个符号链接,lpd 将在该目录中处理该文件。然后它将打印 thesis.txt
的第二份副本。
有关 lpr 将识别的所有选项的列表,请参阅 lpr(1)。
要查看打印队列的内容,请使用 lpq 命令。在不带参数的情况下发出,它会返回默认打印机队列的内容。
lpq 返回的输出对于许多目的都很有用。
$ lpq
lp is ready and printing
Rank Owner Job Files Total Size
active mwf 31 thesis.txt 682048 bytes
任何打印系统的另一个有用功能是取消先前排队的作业的能力。为此,请使用 lprm。
$ lprm -
上面的命令取消由发出该命令的用户拥有的所有打印作业。可以通过首先获取 lpq 报告的作业号,然后将该号码提供给 lprm 来取消单个打印作业。例如:
$ lprm 31
将取消默认打印机上的作业 31 (thesis.txt
)。
lpc(8) 程序用于控制 lpd 服务的打印机。您可以启用或禁用打印机或其队列,重新排列队列中的条目,并获取有关打印机及其队列的状态报告。Lpc 主要用于一台机器连接多台打印机的设置中。
$ lpc
以上命令将启动 lpc 程序。默认情况下,这将使您进入交互模式,您可以开始发出命令。另一个选项是在命令行上发出 lpc 命令。
$ lpc status all
可用命令列表在 lpd 手册页中,但以下是一些您需要了解的主要命令。标有 option 的任何命令可以是打印机名称(lp、print 等)或关键字 all
,表示所有打印机。
这里只是关于 RedHat 出色的 printtool 程序的简要说明。它似乎可以完成 magicfilter 可以完成的所有工作。RedHat 已经安装了许多程序来进行过滤。以下是我的打印机在 RH 4.0 下使用连接到我的并行端口的 HP LJ 4L 的设置方式(对于其他版本的 RH 也应该相同)。