首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Shell Curses 函数库(1)

Shell Curses 函数库(1)

引言Shell Curses 创建于 1993 年,目的是为了解决需要一组不必针对每种新平台进行重新编译的可移植光标操作函数这一特定问题。这些函数最初采用 Bourne Shell 编写,后来迁移到了 Korn Shell 93,尽管当前的函数集在 Bash 中同样工作得非常好。自从 1993 年以来,Shell Curses 已被下载了两百多万次,并且目前全世界的组织正在各种各样的应用程序中使用它。作为 Shell Curses 的创作者,我可以告诉您当前版本是免费可用的,无需许可证即可用于任何目的。
函数在 15 年前编写这一组函数时,大多数 UNIX® 系统管理员同时也是 C 语言程序员,非常熟悉名为 Curses 的 C 语言函数库,该函数库提供了光标操作和文本窗口函数。今天,由于图形界面的普及,许多 UNIX 系统管理员不再那么熟悉光标操作和文本窗口。尽管仍然存在对这些函数的需要,但知识库却似乎正在缩小。本文的目的是提高读者对 Shell Curses 函数库的持续需要和存在性的意识。
C 语言 Curses 与 Shell Curses 函数库之间的区别在于,C 语言库是已编译的二进制,并且必须编译并链接到其他已编译的程序中。Shell Curses 函数库是许多 Curses 函数的纯粹 Shell 脚本实现,并且不需要编译。Korn Shell 93 版本的 Shell Curses 使用的唯一 UNIX 实用工具是“tput”。有关 tput 的更多信息,请参阅,本文将不对其进行讨论。Shell Curses 函数与已编译的 Curses 函数具有相同的名称和参数结构,因此熟悉 Curses 的程序员也熟悉如何使用 Shell Curses,虽然 Bourne 或 Korn Shell 脚本语法将与 C 语言有所不同。
Shell Curses 库Shell Curses 库由以下函数组成(按逻辑使用顺序排列):
表 1:标准 Shell Curses 函数函数参数描述initscr
初始化 Shell Curses 屏幕寻址系统endwin
取消初始化 Curses 屏幕寻址系统1
refresh




[BufferName]将屏幕中的逻辑缓冲区清空。如果为此函数指定了参数字符串,则会将环境变量 BufferName 中存储的光标命令回显到屏幕上。
clear
清屏。move ${RowNbr }
${ColNbr}将逻辑光标移动到指定的行和列。需要行和列编号参数。
1
mvcur




${RowNbr}
> ${ColNbr}将物理光标移动到指定的行和列。需要行和列编号参数。addchX在屏幕上的当前位置打印字符。需要单个字符参数。addstr${String}在屏幕上的当前位置打印 String 的值。mvaddch${RowNbr}
> ${ColNbr} X将逻辑光标移动到指定的行和列。在屏幕上指定的行和列打印指定的字符。需要行和列编号参数。mvaddstr${RowNbr}
${ColNbr}
${String}将逻辑光标移动到指定的行和列。在屏幕上指定的行和列打印 String 的值。需要行和列编号参数,还需要一个 String 参数。clrtoeol
清除当前行从当前列到行尾的内容。clrtobot
清除从当前列到屏幕结尾的屏幕内容。getch
从标准输入检索一个字符。getstr
从标准输入检索一个字符串。insch
在当前屏幕位置插入一个字符。mvinsch${RowNbr}
> ${ColNbr}将逻辑光标移动到指定的行和列。在 RowNbr, ColNbr 插入一个字符需要行和列编号参数。
insertln
在当前屏幕位置插入一行。delch
删除位于当前屏幕位置的一个字符。mvdelch${RowNbr}
${ColNbr}将逻辑光标移动到指定的行和列。删除位于当前位置的一个字符。需要行和列编号参数。deleteln
删除位于当前行的行。attroff
关闭所有屏幕属性。attron
什么也不做。仅用于实现 Curses 兼容性。attrset${Attribute}设置由 Attribute 的定义的屏幕属性。  需要一个属性字符串定义。

有效的属性如下:
        rev        reverse video
        blink        Blinking mode
        bold        Bold Video
        dim        Half Bright video
        smul        Start Underscore Mode
        rmul        End Underscore Mode
        sgr0        Exit all Attributes
增强的 Shell Curses 功能 下列函数包括在 Shell Curses 函数库中,并提供了超越普通“Curses”函数以外的增强功能:
表 2:增强的 Shell Curses 函数函数参数描述savescr[BufferName]将逻辑屏幕缓冲区保存到由 BufferName 定义的环境变量中。需要一个屏幕名称字符串。
mvclrtoeol${RowNbr}
${ColNbr}将逻辑光标移动到指定的行和列。需要行和列编号参数。clrtobol
清除行从当前列到行首的内容。mvclrtobol${RowNbr}
${ColNbr}将逻辑光标移动到指定的行和列。清除行从当前列到行首的内容。需要行和列编号参数。mvclrtobot${RowNbr}
${ColNbr}将逻辑光标移动到指定的行和列。清除从当前列到屏幕结尾的屏幕内容。需要行和列编号参数。getwd
从标准输入检索一个单词。beep
鸣叫显示铃声。chkparm${String}确定“String”的值是否为 Null,如果是则返回 false,如果不是则返回 true。需要单个字母数字参数。chkint${Nbr}确定“Nbr”的值是否为数字,如果是则返回 true,如果不是则返回 false。需要单个数字参数。chklines${Nbr}确定“Nbr”的值是否小于或等于屏幕上的行数。如果是则返回 true,如果不是则返回 false。需要单个数字参数。chkcols${Nbr}确定  Nbr 的值是否小于或等于屏幕上的行数。如果是则返回 true,如果不是则返回 false。需要单个
返回列表