返回首页 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 会以文件的修改时间作为页面标题的时间戳;如果输入时自管道而来,则使用当前的时间,接上文件名称(如果输入的数据内容在管道中,则为空)以及页码.
lp 和 lpr 命令将文件传送到打印机进行打印。使用 pr 命令将文件格式化后就可以使用这两个命令来打印。例如:
pr -2 -h "food" food | lpr
命令成功执行会返回一个表示打印任务的 ID,通过这个 ID 可以取消打印或者查看打印状态。

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

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

lpstat 和 lpq 命令

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

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

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

cancel 和 lprm 分别用来终止 lp 和 lpr 的打印请求。使用这两个命令,需要指定 ID(由 lp 或 lpq 返回)或打印机名称。
lprm 命令用来取消当前用户的正在等待打印的文件,使用任务号作为参数可以取消指定文件,使用横线(-)作为参数可以取消所有文件。
lprm 会返回被取消的文件名。