下一页 上一页 目录

6. 附录:其他终端类型的转义序列

许多现代终端都源自 xtermrxvt,并支持我们目前使用的转义序列。一些随各种 Unix 版本提供的专有终端使用它们自己的转义序列。

6.1 IBM aixterm

aixterm 识别 xterm 转义序列。

6.2 SGI wshxwshwinterm

这些终端设置 $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);
}

我们可以编写类似的 shell 脚本,使用 ${#string} (zshbashksh) 或 ${%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


下一页 上一页 目录