• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

用终端打印机打印Unix文件

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 25次 | 进入软件测试论坛讨论

领测软件测试网
用终端打印机打印Unix文件 



  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系统主机任一终端打印机上实现文件的打印非常灵活、方便。

 redfoxmhy 回复于:2004-03-25 21:42:48
虽然我已经在不久前才学会,但还是顶一下吧,
不错,值的大家关注、学习!!! :P  :D  :o  :)  :!:  :!:  :idea:

 tiangw 回复于:2004-03-26 14:17:05
不知道是否对我有用,还是顶一下,

 慕雨轩 回复于:2004-03-26 18:00:11
看到这些程序就有些头晕,每次都不能坚持把它真正搞懂。
但我知道这对我很有用,顶!

 hhjam 回复于:2004-03-26 19:20:11
顶.很实用的东西.我明天试试

 abist 回复于:2004-03-26 21:15:33
楼主能否提供一些控制字体大小的例子

 jianglx 回复于:2004-03-26 21:28:32
此shell很不错,在实际工作中,对于比较小的文件,我总是通过操作键盘来实现,具体做法为,先按次序按  ESC  [ 5  i   再输入 cat 文件   打印完再按  ESC [ 4 i

 sdccf 回复于:2004-03-26 21:37:33
[quote:7dde53e2cd="abist"]楼主能否提供一些控制字体大小的例子[/quote:7dde53e2cd]

控制字体大小要在要打印的文件里面加打印机的相关控制代码。

 abist 回复于:2004-03-26 21:41:38
打印控制代码写在shell中有用吗

 sdccf 回复于:2004-03-26 21:44:26
要经过测试才可以断定是不是可以,其实写在文件里面比较灵活。

 rcbxc 回复于:2004-03-27 18:21:04
好东西,顶下先。。。

 dongge 回复于:2004-03-29 21:24:34
真是好东西啊,另外,
sdccf兄你主页上的那个透明打印程序和这个实现方法一样吗?

 sdccf 回复于:2004-03-30 08:30:06
差不多,那个程序是别人给我的。

 smallxia 回复于:2004-03-30 10:48:57
其实如果按终端键盘上的屏幕打印就是送出\\033[5i的
\\033[4i是关闭屏幕打印

 光明晓仙 回复于:2004-03-30 13:45:39
改一下,改成more可不可以?
ls$1〉TERMPPlist 

list=′cat TERMPPlist awk′{print$1}′′ 

for fl in$list 

do 

sleep 1 

stty ixon ixoff opost-ixany 

echo″\\033[5i″ 

more$fl 

echo″\\033[4i″ 

sleep 1 

done

 unix007 回复于:2004-04-06 14:43:04
[quote:400d958539="光明晓仙"]改一下,改成more可不可以?
ls$1〉TERMPPlist 

list=′cat TERMPPlist awk′{print$1}′′ 

for fl in$list 

do 

sleep 1 

stty ixon ixoff opost-ixany 

echo″\\033[5i″ 

more$fl..........[/quote:400d958539]



改为more是不行的。因为more显示一屏后,要等待回车才会显示下一屏。

 unix007 回复于:2004-04-06 15:09:51
前面两行:
ls$1〉TERMPPlist 
list=′cat TERMPPlist awk′{print$1}′′ 
是否有问题?

是不是应该改为:

echo $1 >TMPlist
list=`cat TMPlist |  awk '{print $1}'`

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网