许多现代终端都源自 xterm
或 rxvt
,并支持我们目前使用的转义序列。一些随各种 Unix 版本提供的专有终端使用它们自己的转义序列。
aixterm
aixterm
识别 xterm
转义序列。
wsh
、xwsh
和 winterm
这些终端设置 $TERM=iris-ansi
并使用以下转义序列
ESCP1.ystringESC\ 将窗口标题设置为 string
ESCP3.ystringESC\ 将图标标题设置为 string
xwsh
转义序列的完整列表,请参阅 xwsh(1G)
帮助手册页。
Irix 终端也支持 xterm
转义序列来单独设置窗口标题和图标标题,但不支持同时设置两者的转义序列。
cmdtool
和 shelltool
cmdtool
和 shelltool
都设置 $TERM=sun-cmd
并使用以下转义序列
ESC]lstringESC\ 将窗口标题设置为 string
ESC]LstringESC\ 将图标标题设置为 string
dtterm
dtterm
设置 $TERM=dtterm
,并且似乎同时识别标准的 xterm
转义序列和 Sun cmdtool
序列(在 Solaris 2.5.1、Digital Unix 4.0、HP-UX 10.20 上测试)。
hpterm
设置 $TERM=hpterm
并使用以下转义序列
ESC&f0klengthDstring 将窗口标题设置为长度为 length 的 string
ESC&f-1klengthDstring 将图标标题设置为长度为 length 的 string
一个计算长度并回显字符串的基本 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}
(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