Next Previous Contents

6. 附录: 其它型式终端机的溢位序列

许多新式的终端机都衍生自 xtermrxvt 并且支持我们所使用的溢位序列. 某些专利的终端机随著各种不同的 unix 贩卖则会使用他们字订的溢位序列.

6.1 IBM aixterm

aixterm 可以辨识出 xterm 的溢位序列.

6.2 SGI wsh, xwshwinterm

这类终端机会设定 $TERM=iris-ansi 并采用下列的溢位序列:

xwsh 完整的溢位序列可以参考 xwsh(1G) 的使用说明.

Irix 的终端机支持 xterm 各别设定视窗与图示主题的功能, 但不能两者都设定.

6.3 Sun cmdtoolshelltool

cmdtoolshelltool 会设定 $TERM=sun-cmd 并采用下列的溢位序列:

这些真的是很可怕的程序: 尽量别使用.

6.4 CDE dtterm

dtterm 会设定 $TERM=dtterm, 似乎是可以识别出标准的 xterm 溢位序列及 Sun cmdtool 的溢位序列 (在 Solaris 2.5.1, Digital Unix 4.0, HP-UX 10.20 测试过).

6.5 HPterm

hpterm 会设定 $TERM=hpterm 并采用下列的溢位序列:

一个简单的 C 语言的程序用来计算长度并回应字串, 如下:

#include <string.h>
int main(int argc, char *argv[])
{
    printf("\033&f0k%dD%s", strlen(argv[1]), argv[1]);
    printf("\033&f-1k%dD%s", strlen(argv[1]), argv[1]);
    return(0);
}

我们也可以写一个小的命令脚本程序, 用 ${#string} (zsh, bash, ksh) 或 ${%string} (tcsh) 的延伸功能来找出字串长度. 以下可用在 zsh:

case $TERM in
    hpterm)
        str="\e]0;%n@%m: %~\a"
        precmd () {print -Pn "\e&f0k${#str}D${str}"}
        precmd () {print -Pn "\e&f-1k${#str}D${str}"}
        ;;
esac


Next Previous Contents