Приложение: escape-последовательности для других терминалов

Большинство современных терминалов являются производными xterm или rxvt и поддерживают те же escape-последовательности, которыми мы пользовались раньше. Некоторые фирменные терминалы, идущие вместе с различными версиями Unix, имеют свои собственные escape-последовательности.

IBM aixterm

aixterm понимает escape-последовательности xterm.

SGI wsh, xwsh и winterm

Эти терминалы устанавливают $TERM=iris-ansi и используют escape-последовательности:

Для полного списка escape-последовательностей xwsh: man 1G xwsh.

Терминалы Irix также поддерживают последовательности xterm для установки заголовка окна и имени иконки раздельно, но не для установки и того и другого вместе.

Sun cmdtool и shelltool

cmdtool и shelltool устанавливают $TERM=sun-cmd и используют последовательности:

Это ужасная программа - пользуйтесь чем-нибудь другим.

CDE dtterm

dtterm устанавливает $TERM=dtterm и понимает как последовательности xterm, так и Sun cmdtool (проверено на Solaris 2.5.1, Digital Unix 4.0, HP-UX 10.20).

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