让Unix终端随用户而动
在Windows操作系统中,也可以对终端进行一些简单的设置。如可以设置输入法的切换健等等。但是在Windows操作系统中,这个终端的设置是非常少的。而在Unix操作系统中,则可以设置终端的很多特性,以方便用户使用。其实只要有心的用户,在实际工作中可能已经碰到过类似的现象。如在有些Unix操作系统上,利用退格键可以删除一个字符;但是在有些操作系统上则不行。即使在同一个版本的shell中也会遇到这种情况。其实,这不是键盘有问题,而是由于终端的个性化设置所造成的。有时候系统工程师需要调整Unix终端设置,以适应其自身的工作习惯。Unix将终端当作文件来管理,所以其可以设置的参数有很多,基本上包含了跟终端有关的所有特性。不过系统工程师实际上用的并不是很多,主要有如下几个方面的内容。
一、Ctrl+C组合键能否退出应用程序。
无论是Unix操作系统也好,是Linux操作系统也好,有时候会遇到命令无法响应的情况。或者数,由于运行时间比较长,超过了系统工程师的忍耐时间。此时,用户往往可以通过Ctrl+C键来中断进程,中断命令的运行。但是有些系统工程师用不惯这个组合键。由于它们用惯了微软的产品。在微软的记事本或者Word等版本文件中,这个命令是用来复制文本的。现在要让他们用来中断命令行,他们就容易搞混。为此有些系统工程师就喜欢将这个屏幕屏蔽掉。在Unix系统中,这个功能是通过关键字intr来控制的。如果要屏蔽这个功能,只需要将这个执行stty命令即可。不过笔者建议,最好还是不用动这个关键字为好。否则的话,到真的需要推出某个运行着的命令时,就无法强制退出了。
如果需要重新启动这个命令,则可以利用stty intr ^c来设置。其中Intr是控制这个功能的关键字。^两个符号在系统中有特殊的含义。在Unix中要设置某个终端关键字值,这里采用的是反斜杆,而不是等号或者其他符号。另外,^在Unix系统中叫做脱字符,它在终端关键字设置时代表的是键盘上的ctrl键。最后的字符c表示键盘上的c键。不过需要注意的是,这是一个小心的字符c,而不是大写的。上面这个命令就是告诉操作系统,利用Ctrl+c键作为中断符号。
二、文件结尾符号的设置。
在Unix操作系统中,有时候文本方式的操作要比图形化操作多的多。特别是将Unix操作系统当作服务器来管理,往往只把操作系统启动当文本模式,而不是当图形化模式。这不仅可以提高服务器的工作效率,而且还有利于提高其稳定性。不过如果通过文本模式来管理操作系统,对于不少系统工程师来说,会带来一些挑战,因为都需要通过键盘来完成相关的操作。如在写邮件时,一切操作都是靠键盘来完成。在此时就会遇到一个文件,如何告诉操作系统已经将文本输入完成了呢?如在文本模式下书写邮件,需要告诉操作系统可以结束键盘的输入操作了。如在利用cat命令创建文件时,也需要手工的告诉操作系统文件内容已经完成了。此时,系统工程师可以使用Ctrl+a键来告诉操作系统。这个功能在系统中对应的关键字是eof(文件结尾符)。系统工程师如果用不惯这个组合键的话,可以利用命令stty来进行更改。如有些从微软转行过来的系统工程师,系统使用Ctrl+e键来表示文件结束符,而不喜欢使用这个Ctrl+a键(可能在微软产品中这是表示全选的含义吧)。此时就可以利用这个命令来进行设置:stty eof ^e。跟上面的命令非常相似,只是所采用的关键字不同而已。不过在更改这些终端操作符号的时候,需要注意避免采用相同的终端操作符号。否则的话,可能会出现一些莫名其妙的问题。
三、退格键是否允许删除字符。
在键盘上有两个键,一个是del键,用来向后删除字符。另外一个是退格键,则用来向前删除字符。但是有时候系统工程师会发现退格键不能够起作用,其不能够向后删除字符。排除键盘故障外,往往也是这个终端配置所惹的祸。在终端配置中有个关键字叫做echoe,其就是用来控制是否允许使用退格键来向后删除字符。不过这个设置跟上面的设置方法有差异。如果需要禁用这个功能的话,则需要使用stty –echoe命令。如果需要启用的话,则需要使用stty echoe命令。
其实,在Unix操作系统中,跟终端相关的关键字主要有两种表现形式,分别为关键字=某个值或者关键字(-关键字)等形式表示。这两种形式的关键字其值设置的方式是不同的。如上面提到的中端符号,其系统中的显示格式为关键字=某个值的格式(intr=^c)。对于这个格式的关键字需要采用的是^的调整方式,其可以重新设置功能键。而现在的退格功能的关键字为echoe,其显示格式为关键字(-关键字)。这种关键字又叫做开关关键字。也就是说其只有启用或者禁用。而不能够使用其他的内容来代替。对于这种类型的关键字,要调整其值的话,也相对简单。只需要利用stty (-)关键字的形式即可。如果关键字前面没有减号的话,则说明这个功能是启用的。如果有减号的话,则说明这个功能是禁用的。如果系统工程师反先这个退格键不能用了,可以先利用命令stty –a命令来查看当前终端的配置。特别是需要关注一些这个echoe关键字,看其前面是否有减号。如果有的话,就表示当前不能够利用退格键来向前删除一个字符。此时系统工程师可以利用stty echoe来启用这个功能。通常情况下,不需要注销系统或者关闭当前会话这个设置就会生效。不同的shell对这个退格键的默认设置是不同的。所以为了操作的方便,系统工程师有时候往往需要调整这个退格键的功能,来保证各个版本的shell 都能够使用这个功能或者禁用这个功能。
四、用户输入的内容不回显。
在登陆Unix操作系统时(文本模式下),用户需要输入帐户名与密码才能够登陆。当用户输入密码时,在屏幕上不会有任何的提示,连*好掩饰符号都没有。有时候,系统工程师为了似的脚步程序也可以向这个口令一样,接收用户的输入而不是将内容输出到屏幕上(即用户输入的内部不回显到屏幕上),就需要修改echo这个关键字的值。不要要注意,修改这个关键字的时候需要三步走。第一步将这个关键字设置为-echo(表示向密码那样不回显用户输入的内容);第二步不回显的接收用户输入的内容,此时用户的任何输入不会显示到屏幕上;第三步再将这个关键字设置为echo,即后续的内容允许其显示在屏幕上。因为在大部分情况下,都是需要系统将用户输入的结果显示在屏幕上的。否则的话,不能够保证用户输入的准确性。所以,在使用完毕后,一定要讲这个关键字设置为原先的值,即利用stty –echo将这个关键字设置回来。这里echo也是利用-号来代表的一个关键字,也就是说这个功能也是一个开关功能。在设置时,要么关闭,要么启用。而第三种处理方法。也就是说,如果想要用户输入的内容以*号来代替的话,则需要采用其他的方式。确实,这个以*显示的方式跟终端设置无关。
可见,在Unix操作系统中,对于终端的控制要比在Windows操作系统强的多。有时候系统工程师为了在多个操作系统版中保证一个比较统一的终端配置,往往会将这些内容写成一个脚本文件。然后遇到一个新的shell时,会先不管三七二十一,执行这个脚本。如此,就可以实现Unix终端随用户而动,根据用户的操作习惯来进行终端配置的调整。