免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: legendfan
打印 上一主题 下一主题

[SCO UNIX] 能够用shell实现动态时钟吗? [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之北控
日期:2022-03-04 22:35:50
31 [报告]
发表于 2004-05-26 09:01 |只看该作者

能够用shell实现动态时钟吗?

你打开源程序就看到怎么修改了。

论坛徽章:
0
32 [报告]
发表于 2004-05-26 16:39 |只看该作者

能够用shell实现动态时钟吗?

其实困扰楼上各位的问题是这样的:
后台程序显示完时钟后,光标会停留在时钟显示的后面,问题是如何让光标回到原来的位置。比如前台程序正在第10行显示交互信息,当时钟程序该显示的时候,他把光标移动到了第25行(假设),但是时钟程序又不知道光标原来就在第10行,而前台程序也不知道光标已经跑了会自顾自地继续输出。因此屏幕会乱套。如果前台程序在输出每个字符之前都首先将光标定位还行,但并不是每个前台程序都是这样的。
不知说清楚了没有。
解决的办法是有的。
ANSI和其它终端都支持一对换码序列ESC7和ESC8,ESC7可以记住当前光标的位置,ESC8可以恢复光标位置。ESC的ASCII码值是十进制27,7和8是字符。
我以前写过一个C程序,放在后台执行,可以实时显示当前时钟,基本不影响前台程序工作。但当前台程序做集中大量输出的时候,屏幕会乱。
现在把SHELL贴出来,供大家参考。执行的时候在命令后面加一个&符号今后台即可。

while true
do
echo "^[7\c"                  
echo "\033[1;53H\c"
date
echo "^[8\c"
sleep 1
done

^[8用\0338代替也可以,但是^[7不能用\0337代替,因为shell会把0337解释成八进制数337。^[在vi中用Ctrl-V+Ctrl-[的办法输入。

论坛徽章:
0
33 [报告]
发表于 2004-05-26 17:48 |只看该作者

能够用shell实现动态时钟吗?

楼上说的是最清楚的一次,我想肯定是最好的解决办法了。

去试试看,然后再回来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP