免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1746 | 回复: 0
打印 上一主题 下一主题

用终端打印机打印Unix文件 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之北控
日期:2022-03-04 22:35:50
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-19 22:19 |只看该作者 |倒序浏览

Unix系统提供了一个文件打印命令LP,格式为:LP文件名,功能是将指定文件在缺省的系统打印机上打印出来。系统打印机通常指主机LP0或LP1打印口连接的并口打印机,Unix OpenServer5.0通过Scoadmin→Print设置选单命令来设定。
  在一些情况下,我们经常遇到需要在主机的某一或任一终端的打印机上完成文件打印,但Unix系统并没有提供实现这一功能的现成命令。通过Scoadmin→Print设置选单命令,可以将缺省的打印机定义到某个终端上。但实际情况是:第一,要进入超级用户才能设定,设定后系统要重启,打印机被固定在某一终端上。第二,这个设定其实根本实现不了打印,用LP方式打印文件时,只将文件送到设定的终端上显示,丝毫不能使终端打印机动作一下。
  怎样才能方便地在主机任一终端打印机上实现文件打印功能呢?下面的小程序可以达到这个目的。假定程序名为Ep,程序如下:
ls$1〉TERMPPlist
list=′cat TERMPPlist awk′{print$1}′′
for fl in$list
do
sleep 1
stty ixon ixoff opost-ixany
echo″\\033[5i″
cat$fl
echo″\\033[4i″
sleep 1
done
  使用格式:Ep文件名〉/dev/ttyxx
  例如,要将文本文件Sal.txt在/dev/tty25h终端打印机上打印出来,只需执行如下命令:
Ep Sal.txt〉/dev/tty25h
  需要解释的是:
  1.033[5i、033[4i是通用终端打印功能控制代码ESC[5i、ESC[4i,如国光CJ320H终端。具体可参阅相应终端随机使用手册。
  2.这是在终端的并口打印机上实现的,所以,终端设置选单要设置成并口打印机和正确的打印机类型。如何实现串口打印机打印需参阅终端随机使用手册的打印功能控制代码。
  3.打印过程不在终端上显示,即打印过程不影响终端显示。利用不同的控制代码也可以实现同时显示。
  要特别注意的是:
  设置终端与主机通讯方式时,一定要设置成“限制发送”。如国光CJ320H设置选单中就有此功能。否则,打印机打印出的文件(特别是字节数较大的文件)有可能随机一截一截地丢失。原因很简单:终端和打印机忙且缓冲满时,来不及接收和处理主机发来的文件数据,而主机并没有得到终端和打印机忙而拒绝接收数据的稍等信号,将文件数据照发不误,造成数据丢失。
  另外,用Split命令可实现文件的分段打印。如用以下三条语句替换前面的第一条语句,可实现对文件的每100行分段打印。
  rm TERMPP*2〉/dev/null
  split-100$1TERMPP 2〉/dev/null
  lsTERMPP*〉TERMPPlist 2〉/dev/null
  该程序对在Unix系统主机任一终端打印机上实现文件的打印非常灵活、方便。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/31/showart_500274.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP