第二十二章 打印
打印
前言
- 前面几章讲述了文本的操纵,现在是时候讨论如何将文本输出到纸张上了,本章将会介绍一些用于打印文件以及控制打印机操作的命令行工具。
- 本章会讨论如下命令:
- pr: 转换文本文件,从而进行打印操作
- lpr: 打印文件
- lp: 打印文件 (System V)
- a2ps: 格式化文件,以在 PostScript 打印机上打印
- lpstat: 显示打印机状态信息。
- lpq: 显示打印机队列状态。
- lprm: 取消打印任务
- cancel: 取消打印任务 (System V)
打印操作简史
- 在充分理解类 UNIX 操作系统的打印特性之前,我们必须首先了解一些打印操作的的发展史。
- 类 UNIX 系统的打印操作可以追溯到操作系统的起源,那个时期,打印机及其使用方法与现在有很大区别。
- 打印操作简史如下:
- 灰暗时期的打印
- 基于字符的打印机
- 图形化打印机
- Linux 方式的打印
准备打印文件
基本介绍
- 作为命令行用户,我们多数还是倾向于打印文本文件,虽然其他的数据形式也可以打印。
pr - 将文本文件转换为打印文件
- pr 基本介绍
- 前面章节略微介绍了 pr 的相关知识,本节将讨论其与打印操作联合使用时用到的一些参数选项。
- 常见的 pr 选项
选项 | 功能描述 |
---|---|
+first[:last] | 输出一个从 first 开始以 last 结束的页范围 |
-columns | 将页的内容分成指定的 columns 列 |
-a | 默认情况下,多列输出是垂直列出的。通过增加 -a 选项,内容便是水平列出 |
-d | 隔行打印输出 |
-D format | 用 format 格式来格式化页眉的显示时期。可以查看日期命令的 man 手册页以了解格式字符串的描述。 |
-f | 使用换页符而不是回车符作为页与页之间的分隔符 |
-h header | 在页眉的中间部分,使用 header 替代正在处理的文件名 |
-l length | 将页的长度设为 length 。默认是 66 行 |
-n | 对行进行编号 |
-o offset | 创建一个有 offset 字符宽的左页边距 |
-w width | 设定页面宽度为 width,默认是 72 个字符 |
- pr 案例
- pr 通常用于管道传输的过滤器。
- 下面例子生成 /usr/bin 文件夹下的目录列表,并且 pr 将其格式化为分页的、三列的输出。
1
[me@linuxbox ~]$ ls /usr/bin | pr -3 -w 65 | head
向打印机发送打印任务
基本介绍
- CUPS 打印组件支持两种打印方式,它们都是类 UNIX 系统过去使用过的。
- 一种方法叫做 Berkeley 或 LPD ,运用的是 lpr 命令;另一种方法叫做 SysV (来源于 UNIX 的 System V 版本) ,运用的是 lp 命令。这两个命令大致做着相同的事情,用户可以根据个人喜好选择使用。
lpr - 打印文件
- lpr 基本介绍
- lpr 命令可以将文件传送至打印机,同时由于其支持标准输入,所以也可用于管道传输。
- 例如,要打印上述的多列目录列表,我们可以进行如下操作:
1
[me@linuxbox ~]$ ls /usr/bin | pr -3 | lpr
- 该报告将被送至系统默认的打印机。如果想将文件发送至不同的打印机,可以使用 -P 选项,示例如下:
1
lpr -P printer_name
- 此处 printer_name 是指目标打印机的名称。可以用下面的命令行查看系统打印机列表。
1
[me@linuxbox ~]$ lpstat -a
- 常用的 lpr 选项
选项 | 功能描述 |
---|---|
-#number | 打印 number 份副本 |
-p | 每一页都将包括日期、时间、工作名称和页码的页眉用阴影打印出来。这中所谓的优质打印可以用于打印文本文件 |
-P printer | 指定用于打印输出的打印机名。如果未指定打印机,那就是用系统默认的打印机 |
-r | 打印结束后删除文件。此选项适用于那些产生临时打印文件输出文件的程序 |
lp - 打印文件
- lp 基本介绍
- 与 lpr 类似,lp 命令既支持文件输入也支持标准输入。它与 lpr 的不同之处在于它有一个不同 (稍微复杂点) 的参数选项设置。
- lp 常用的选项
选项 | 说明 |
---|---|
-d printer | 设置目标打印机为 printer 。如果未指定 -d 选项,将会使用系统默认的打印机 |
-n number | 打印 number 份副本 |
-o landscape | 将输出设置为横向 |
-o fitplot | 根据页面大小缩放文件,这在打印诸如 JPEG 文件时非常有用 |
-o scaling=number | 设定文件缩放比例为 number 。如果该值为 100 ,则正好填充一页纸;如果该值小于 100 ,那么一页纸将填不满;如果该值大于 100 ,则打印内容将打印在多个页面上 |
-o cpi=number | 设置每英寸输出字符数位 number。默认是 10 |
-o lpi=number | 设置每英寸输出指定 number 的行。默认是 6 |
-P pages | 指定页列表。页的表达形式可以为用逗号隔开的页列表或是 - 表示的页范围。 |
- lp 案例
- 我们重新生成目录清单
1
[me@linuxbox ~]$ ls /usr/bin | pr -4 -w 90 -l 88 | lp -o page-left=36 -o cpi=12 -o lpi=8
- 该管道使用了比默认规格更小的字体从而得到了一个 4 列列表。每行增加的字符数是的一页纸能够容纳更多列。
监测和控制打印任务
基本介绍
- 与 UNIX 打印系统类似,CUPS 也是以处理来自多用户的多项打印任务而设计的。
- 每个打印机都有一个打印队列,打印任务排列其中等待被送至打印机打印。
- CUPS 提供了几个用于管理打印机状态和打印队列命令行的程序。
- 与 lpr 和 lp 程序类似,这些管理程序都是以 Berkeley 和 System V 打印系统相应的程序为原型的。
lpstat - 显示打印系统状态
- lpstat 基本介绍
- lpstat 程序可以确定系统中打印机的名称和可用性。
- 例如,假定一台打印系统,既有物理打印设备,也有 PDF 虚拟打印机,那么便可以用下面的命令行检查它们各自的状态。
1
[me@linuxbox ~]$ lpstat -a
- 更进一步,我们可以用下面的方式得到更具体的打印系统配置描述。
1
[me@linuxbox ~]$ lpstat -s
- lpstat 常用选项
选项 | 功能描述 |
---|---|
-a[printer…] | 显示 printer 打印机的打印队列状态,请注意,该状态显示的是打印队列接受打印任务的能力,而不是物理打印机的状态。如果未指定打印机,所有的打印队列都会显示出来 |
-d | 显示系统默认的打印机名 |
-p[]printer… | 显示指定的 printer 状态。如果未指定打印机,所有的打印机都会显示出来 |
-r | 显示打印服务器的状态 |
-s | 显示状态汇总报告 |
-t | 显示一个完整的状态报告 |
lpq - 显示打印队列状态
- lpq 基本介绍
- 我们可以使用 lpq 程序查看一个打印队列的状态,该程序可以查看打印机队列状态以及所包含的打印任务。
- 如下为系统默认的打印机 printer 的一个空队列。
1
2
3[me@linuxbox ~]$ lpq
printer is ready
no entries - 如果事先并未指定打印机 (使用 -P 选项) ,系统便会显示默认的打印机。
- 如果向打印机发送打印任务,然后查看打印队列,便会看到如下列表。
1
2
3
4
5
6[me@linuxbox ~]$ ls *.txt | pr -3 | lp
request id is printer-603 (1 file(s))
[me@linuxbox ~]$ lpq
printer is ready and printing
Rank Owner Job File(s) Total Size
active me 603 (stdin) 1024 bytes
lprm 与 cancel - 删除打印任务
- lprm 与 cancel 基本介绍
- CUPS 提供了两个用于终止打印任务并将它们从打印队列中移除的程序。其中一个就是 Berkeley 类型的 lprm ,另外一个是 System V 的 cancel 。
- 它们在所支持的参数选项上有稍许不同,但基本上实现的是同样的功能。
- 以上面的例子中使用的打印任务为例,将该打印任务终止并移除,可以使用如下命令行。
1
2
3
4[me@linuxbox ~]$ cancel 603
[me@linuxbox ~]$ lpq
printer is ready
no entries
参考文章
- 转载:Linux 命令行大全
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
TwikooGitalk