返回首页 两个月精通 Shell 脚本

shell 学习第二十三天----打印

如果希望打印文件,最好预先处理一下,包括调整边距,设置行高,设置标题等,这样打印出来的文件更加美观。当然,不处理也能打印,但是可能会比较丑陋。

pr 命令

pr 命令就是转换文件格式的,可以把较大的文件分割成多个页面进行打印,并未每个页面添加标题。

语法:

pr option(s) filename(s)

pr 命令仅仅改变在屏幕上的输出样式,不改变文件本身,和 sed 有点类似。常见选项如下:

  • -k:分成激烈打印,默认为 1。
  • -d:两倍行距 (并不是所有版本的 pr 都有效)。
  • -h:“title” 设置每个文件的标题。
  • -l:PAGE_LENGTH :每页显示多少行。默认是每个页面一共 66 行。
  • -o:MARGIN:每行缩进的空格数。
  • -w:PAGE_WIDTH:多列输出时,设置页面宽度,默认是 72 个字符。

例如我有一个文件 food,里面的内容为:

Sweet Tooth
Bangkok Wok
Mandalay
Afghani Cuisine
Isle of Java
Big Apple Deli
Sushi and Sashimi
Tio Pepe's Peppers

使用命令:pr -2 -h "food" food

输出结果为:

2015-06-22 12:27                      food                       第 1 页
weet Tooth                          Isle of Java
Bangkok Wok                         Big Apple Deli
Mandalay                            Sushi and Sashimi
Afghani Cuisine                     Tio Pepe's Peppers'

解释:pr 会以文件的修改时间作为页面标题的时间戳;如果输入时自管道而来,则使用当前的时间,接上文件名称 (如果输入的数据内容在管道中,则为空) 以及页码。

lplpr 命令将文件传送到打印机进行打印。使用 pr 命令将文件格式化后就可以使用这两个命令来打印。例如:

pr -2 -h "food" food | lpr

命令成功执行会返回一个表示打印任务的 ID,通过这个 ID 可以取消打印或者查看打印状态。

如果你希望打印多份文件,可以使用 lp-nNum 选项,或者 lpr 命令的 -Num 选项。Num 是一个数字,可以随意设置。

如果系统连接了多台打印机,可以使用 lp 命令的 -dprinter 选项,或者 lpr 命令的 -Pprinter 选项来选择打印机。printer 为打印机名称。

lpstatlpq 命令

lpstat 命令可以查看打印机的缓存队列(有多少个文件等待打印),包括任务 ID、所有者、文件大小、请求时间和请求状态。

提示:等待打印的文件会被放到打印机的的缓存队列中。

使用 lpstat -o 命令查看打印机中所有等待打印的文件,lpstat -o 命令按照打印顺序输出队列中的文件。

cancellprm 分别用来终止 lplpr 的打印请求。使用这两个命令,需要指定 ID(由 lplpq 返回)或打印机名称。

lprm 命令用来取消当前用户的正在等待打印的文件,使用任务号作为参数可以取消指定文件,使用横线 (-) 作为参数可以取消所有文件。lprm 会返回被取消的文件名。