[color=blue:53e3df04e1]
DOS5.0以上版本中均含有DOSKEY命令,该命令具有追忆功能,当用户需要重复执行或浏览刚输入的命令时,只要按向上或向下的光标键就可追忆搜索,十分方便。在UNIX/XENIX系统中,虽没有类似的命令,用户也可通过SETKEY命令来给功能键赋值,从而达到提高输入速度或减少重复敲键的烦恼。下面就介绍一点应用体会。
一、 命令格式及相关说明
setkey keynum string
setkey命令指定用ANSI串(string)做为功能键keynum(键号)的输出,例如:
setkey 1 date
指定功能键1的输出为日期,串string可包含控制字符,如换行符,但应用引号括起来,防止被shell处理,例如:
setkey 2 ″pwd;lf;who am i\n″
指定功能2的输出为命令序列,例″pwd;lf;who am i″,注意此处的换行符是怎样嵌入在引号括起来的串中的。它使得按下功能键2时,命令立即执行,否则还得再按一次回车。
setkey命令只对控制台键盘起作用。
二、 setkey命令的应用方式
setkey命令有两种应用方式:
1单串命令:即只指定串为单一命令,只完成单一功能的指定。
例如:setkey 7 lpstat -o
指定 功能键7为输出打印机有关状态信息
2组合命令:即指定串为shell命令组合序列,可一次完成多条命令,此种方式应用较多。
例如:setkey 8″who am i;pwd;lf|more\n″
指定功能键8的输出为列出用户注册信息,当前路径,当前路径的所含有的文件分屏显示等。
三、 setkey命令使用限制
setkey命令所定义的串的长度是有限制,一般不得超过31个字符,否则shell程序将提示如下错误信息:
setkey:definition must be shorter than 31 characters
告诉你所定义的串超出允许的长度。
四、 setkey命令特殊应用
1长命令的定义方法
已经知道setkey命令所指定的串的长度是有限的,但在实际应用过程中,经常会遇到一些很长的命令,而且还需多次运行,这时怎么办呢?办法是有的,可将长命令串进行适当分解,用多条setkey命令就能解决了。
例如命令:
dd if=/dev/rfd096ds15 of=/dev/rfd1135ds18 count=
1220k
像这样的命令若重复输入会很费力的,下面是用setkey命令解决的例子:
setkey 5 ″dd if=/dev/rdf096ds15″
setkey 6 ″of=/dev/rfd1135ds18″
setkey 7 ″count=1200k\n″
设置完这些命令后,当需要重复执行上述命令时,可按顺序依次按f5,f6,f7,这样一条长命令就可以执行了。
2在shell菜单编程中的应用
系统维护人员经常会在主控制台完成各种维护任务,有时经常会对现有的各类应用软件系统进行备份,检查磁盘空间等相关操作,而这些过程每次维护时都相同,所以若能编辑一个通用的维护菜单肯定会大大地方便工作。下面介绍的就是用setkey命令进行菜单定义。
(1)单独编写菜单子程序(menul);
(2)再编写功能键定义程序(keyset);
(3)最后将这些文件变为可执行文件。
(4)在普通用户状态下直接运行keyset
实现本功能的程序清单如下:
1cat menul>/ dev/lp0
###############menu###############
# 菜单文件
# 供SETKEY命令调用
##################################
menu()
{
clear
echo ″\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n″
echo ″t+-----简易维护工具集……………+″
echo ″\t| F1:查看日期 F2:显示路径文件F3:读软盘 信息|″
echo ″\t| F4:查看自由空间 F5:退 出|″
echo ″\t+---------------+″
}
menu
2.cat keyset>/dev/lp0
####################################
# 命令: setkey
# 功能键赋值命令在菜单系统中的应用
# 设计 泰州市海陵 城市信用合作社
# 电脑室 储久良
# 1998年10月7日
####################################
menul
setkey 1 ″date;read x;menul\n″
setkey 2 ″pwd;lf;read x;menul\n″
setkey 3 ″tar tv2;read x;menul\n″
setkey 4 ″df -v;read x;menul\n″
setkey 5 ″clear;exit\n″
#############结束#############
3.chmod 700 menul keyset
作者单位:江苏泰州市海陵城市信用合作社(江苏泰州225300)[/color:53e3df04e1]
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/